开发积累总结

export default 和export const

均用于从模块导出函数、对象或原始值,区别在于:

export default:一个文件中只能有一个,为默认导出,在引用时指定名字。

export const:一个文件中有多个,为命名导出,普遍用于导出不变的值。

Map

const m = new Map();

m.set('key','value');

npm install 和 yarn install

npm install 在node.js下载时已一同安装,yarn install需要另行下载安装。两个都是JS包的管理工具。yarn是为了解决npm的一些缺陷才出现的。

yarn优点:并行安装、离线模式(已经安装的包在缓存中获取)、版本锁定(解决包之间版本不兼容问题)、简洁输出

npm对比:依次安装、运行输出较多

vue 报错 ReferenceError: exports is not defined

原因:webpack 2后不允许混合使用import 和module.exports。

修改方案:

1.统一改成es6写法:export default XXX;

2.找到.babelrcf文件删除transform-runtime。

es6的export方法

//1.基本用法(匿名函数加载)
export default function(){.......
}
​
import custName from '....';
custName();
//注意:import后不要跟{},可以用任意名称指向输出方法
​
//2.用在非匿名函数前
export default function foo(){........
}
//或者写成
function foo(){.......
}
export default foo;
//foo函数的名称foo,在模块外部是无效的,加载时视同匿名函数加载
​
//3.加不加default的区别
//-----------加-----------
export default function foo(){}
import foo from '...';
//----------不加----------
export function foo(){}
import {foo} from '...';
//export default用于指定模块的默认输出,显然一个模块只能有一个默认输出,因此export default命令只能用一次,所以import命令后不加大括号,因为只可能唯一对应export default命令
​
//4.export default输出有一个叫default的变量或方法,然后允许引用它的地方为他任意取名
export var a = 1;//success
export default 1;//success,本质是将后面的值赋值给default变量,所以可以直接将一个值写在export default之后
export default var a = 1;//error,解释:将变量a的值赋值给default,输出对象不对,报错
​
//5.导出匿名函数和非匿名函数可以混合使用
import aa,{foo} from '....';
​
//6.export default也可以用于输出类
export default class {....}
import MyCalss from '....';
let aa = new MyClass();

声明变量

js是弱类型语言,无需声明可直接使用,默认是作为全局变量使用的。

var a = 1;
a = 1;
//两种写法,但是等效

webpack下载依赖的三种形式

dependencies

常用依赖,这些依赖最终都会构建到部署环境中。

devDependencies

开发中的依赖,比如eslint,包含一些线上包不适用的依赖

peerDependencies

目的是提示宿主环境去安装满足插件peerDependencies所指定依赖的包,然后在插件import或者require所依赖的包的时候,永远都是引用宿主环境统一安装的npm包,最终解决插件与所依赖包不一致的问题。

npm2 vs npm3

在npm2中,PackageA包中peerDependencies所指定的依赖会随着npm install PackageA一起被强制安装,所以不需要在宿主环境的package.json文件中指定对PackageA中peerDependencies内容的依赖。

但是在npm3中,npm3中不会再要求peerDependencies所指定的依赖包被强制安装,相反npm3会在安装结束后检查本次安装是否正确,如果不正确会给用户打印警告提示。举例,如果我们npm install PackageA安装PackageA时,你会得到一个警告提示说:PackageB是一个需要的依赖,但是没有被安装。 这时,你需要手动的在MyProject项目的package.json文件指定PackageB的依赖。

同源窗口共享

sessionStorage用于临时保存同一窗口(或标签页)的数据,在关闭窗口或标签页之后将会删除数据,所以在不同的浏览器窗口数据是不共享的。但是,可以通过跳转页面实现两个界面的数据共享

而localStorage和cookie则是在所有同源(协议、域名、端口一致)窗口中都是共享的。同时,数据共享必须在相同浏览器。

CSS transparent属性

transparent代表全透明黑色,即rgba(0,0,0,0)。

CSS outline属性

outline(轮廓)是绘制于元素周围的一条线,位于边框边缘的外围,可起到突出元素的作用。

user agent stylesheet

User Agent Stylesheet(浏览器默认样式)

User Agent Stylesheet属于浏览器的默认样式,如果不满意该样式最简单的解决方案是重新设置该样式,因为User Agent Stylesheet的优先级很低,可以被覆盖。

element UI

element ui适用于vue2.0版本,element plus适用于vue3.0版本,所以它的底层开发语言也是vue3.0

MD5加密方式

MD5是一种信息摘要算法,它可以从一个字符串或一个文件夹中按照一定规则生成一个特殊的字符串。

特点:MD5算法不可逆,内容相同无论执行多少次md5生成结果始终是一致的,但是当文件有细微的变化,生成的md5会有非常大的不同。

流程:1.请求接口返回获得加密类型、realm和随机数

2.公安MD5的五次加密混淆

加密轮次传入数据返回值
第一次加密登录密码pswd_0
第二次加密登录名、pswd_0pswd_1
第三次加密pswd_1pswd_tmp
第四次加密登录名、realm、pswd_tmpencryptedPassword
第五次加密encryptedPassword、随机数signature(签名)

3.第二次调用接口,传入登录名、signature(签名)、随机数、加密方式,调用成功返回token。

//生成token
export function getToken(params, quiet = false) {return new Promise(function(resolve, reject) {authorize(params, quiet).then(response => {//第二次调用接口,接口调用成功,返回tokenresolve(response.data);}).catch(Error => {//第一调用接口,接口状态正常为401,返回三个参数//encryptType: "MD5"---加密类型//randomKey: "8354322330355776"--随机数//realm: "6D1FC3CE5434F7AAC2BD35244722DC1E5F"//----------------------if (Error.response && Error.response.data.randomKey) {resolve(Error.response.data);} else if (Error.response) {tokenTools.setPSIToken('')reject(Error.response.data);} else {tokenTools.setPSIToken('')reject(Error);}});});
}

slot和slot-scope

vue插槽分为两类:默认插槽(没有名称的插槽)和具名插槽(有名称的插槽)。

​​​​​​​<!--父组件-->
<template><div><h3>这是父组件</h3><son><span>实践slot</span></son><son><template slot="myslot"><!--将template的内容插在子组件中--><div>实践具名slot</div></template></son></div> 
</template>
​
<!--子组件-->
<template><div><h4>这是子组件</h4><input type="text" placeholder="请输入"><slot></slot><!--name是插槽的名称,具名插槽--><slot name="myslot"></slot></div>
</template>

slot-scope(作用域插槽)

注意:父组件模板的所有东西都会在父级作用域内编译;子组件模板的所有东西都会在子级作用域内编译。即父组件不能直接使用子组件中定义的data数据,而slot-scope解决了这个问题。

​​​​​​​<!--父组件-->
<template lang=""><div><h3>这是父组件</h3><son><!--slot将内容插入子组件,slot-scope获取子组件的值--><template slot="myslot" slot-scope="scope"><ul><li v-for="item in scope.data">{{item}}</li></ul></template></son></div> 
</template>
​
<!--子组件-->
<template><div><h4>这是子组件</h4><input type="text" placeholder="请输入"><slot name="myslot" :data='list'></slot></div>
</template><script>export default {name:'Son',data(){return{list:[{name:"Tom",age:15},{name:"Jim",age:25},{name:"Tony",age:13}]}}}
</script>
<!--子组件-->

首先,在子组件中的插槽上有一句data="list",而在父组件中也有slot-scope="scope",slot-scope就是取data的值,slot-scope的值是自定义的,我们可以取任何名称,但是data的值传过来时是以对象形式传输的,所以在这scope.data才是list的值。

这样我们就可以在父组件中取到子组件的值,并且加以应用了。

注意:v-slot是的简写形式#

v-slot,一种新的统一语法,替代具名插槽和默认插槽。

$slots和$scopedSlots

$slots

只读属性,用来访问被插槽分发的内容。每个具名插槽有其相应的 property (例如:v-slot:foo 中的内容将会在 vm.$slots.foo 中被找到)。default property 包括了所有没有被包含在具名插槽中的节点,或 v-slot:default 的内容。

请注意插槽不是响应性的。如果你需要一个组件可以在被传入的数据发生变化时重渲染,我们建议改变策略,依赖诸如 propsdata 等响应性实例选项。

注意:v-slot:foo 在 2.6 以上的版本才支持。对于之前的版本,你可以使用废弃了的语法。

在使用渲染函数书写一个组件时,访问 vm.$slots 最有帮助。

$scopedSlots

只读属性,用来访问作用域插槽。对于包括 默认 slot 在内的每一个插槽,该对象都包含一个返回相应 VNode 的函数。

vm.$scopedSlots 在使用渲染函数开发一个组件时特别有用。

注意:从 2.6.0 开始,这个 property 有两个变化:

  1. 作用域插槽函数现在保证返回一个 VNode 数组,除非在返回值无效的情况下返回 undefined

  2. 所有的 $slots 现在都会作为函数暴露在 $scopedSlots 中。如果你在使用渲染函数,不论当前插槽是否带有作用域,我们都推荐始终通过 $scopedSlots 访问它们。这不仅仅使得在未来添加作用域变得简单,也可以让你最终轻松迁移到所有插槽都是函数的 Vue 3.

Multiple root nodes returned from render function. Render function should return a single root node.

从呈现函数返回多个根节点。渲染函数应该返回一个根节点。

在Vue2中不允许<template>下有多个根节点存在,需要设置一个div将节点都包起来,在Vue3中则允许<template>标签下有多个节点存在。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/bicheng/82277.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【TCP/IP协议族详解】

目录 第1层 链路/网络接口层—帧&#xff08;Frame&#xff09; 1. 链路层功能 2. 常见协议 2.1. ARP&#xff08;地址解析协议&#xff09; 3. 常见设备 第2层 网络层—数据包&#xff08;Packet&#xff09; 1. 网络层功能 2. 常见协议 2.1. ICMP&#xff08;互联网…

vocabulary in program

编号意思&#xff08;英译中&#xff09;音标单词1n. 稀薄&#xff1b;稀罕&#xff1b;珍奇/ˈreərɪsn/rareness2n.登记表&#xff0c;注册簿&#xff1b;注册员&#xff1b;&#xff08;人或乐器的&#xff09;声区&#xff0c;音区&#xff1b;&#xff08;适合特定场合使…

整平机技术进阶:从原理到实战的深度解析

一、整平机的力学原理与数学模型 整平机的核心在于通过材料塑性变形消除内应力&#xff0c;其力学过程可简化为以下模型&#xff1a; 弹塑性变形理论 当材料通过辊轮时&#xff0c;表层受拉应力&#xff0c;芯部受压应力&#xff0c;超过屈服强度后产生永久变形。 关键公式&a…

【b站计算机拓荒者】【2025】微信小程序开发教程 - chapter1 初识小程序 - 3项目目录结构4快速上手

3 项目目录结构 3.1 项目目录结构 3.1.1 目录介绍 # 1 项目主配置文件&#xff0c;在项目根路径下&#xff0c;控制整个项目的-app.js # 小程序入口文件&#xff0c;小程序启动&#xff0c;会执行此js-app.json # 小程序全局配置文件&#xff0c;配置小程序导航栏颜色等信息…

427. 建立四叉树

https://leetcode.cn/problems/construct-quad-tree/description/?envTypestudy-plan-v2&envIdtop-interview-150思路&#xff1a;这题乍一看很复杂但是只要读懂题找到规律就会发现其实很简单 四叉树的构造规律&#xff1a; 1. 如果一个区域的值全相等&#xff0c;那么这个…

IDEA中创建SpringBoot项目没有Java8

IDEA中创建SpringBoot项目没有Java8 文章目录 IDEA中创建SpringBoot项目没有Java8一&#xff1a;解决办法 很久没单独创建springboot项目,今天使用idea的Spring Initializr 创建 Spring Boot项目时,发现java版本里,无法选择jdk1.8,只有17、21、22,所以本文介绍了使用Spring Ini…

聊一聊手动测试与探索性测试的区别

目录 一 定义与目标 手动测试 探索性测试 二 执行方式 手动测试 探索性测试 三 测试重点及计划性 手动测试 探索性测试 四 测试效率及成本 手动测试 探索性测试 五 优缺点对比 六 关键却别与总结 七 适应场景 手动测试 探索性测试 八 实际应用与结合 在我们进…

Spring用到的设计模式

Spring框架中广泛应用了多种设计模式&#xff0c;以提升代码的灵活性和可维护性。 工厂模式&#xff1a;BeanFactory&#xff0c;整个 IoC 容器就是一个工厂。 单例模式&#xff1a;Spring 管理的 Bean 默认都是单例的。 模版方法&#xff1a;如 RedisTemplate、JdbcTemplat…

Mybatis(2)

sql注入攻击 SQL注入攻击是一种常见的网络安全威胁&#xff0c;攻击者通过在输入字段中插入恶意SQL代码&#xff0c;绕过应用程序的安全机制&#xff0c;直接操纵数据库。 SQL注入的原理 SQL注入利用应用程序未对用户输入进行充分过滤或转义的漏洞。当用户输入被直接拼接到S…

【Node.js】高级主题

个人主页&#xff1a;Guiat 归属专栏&#xff1a;node.js 文章目录 1. Node.js 高级主题概览1.1 高级主题架构图 2. 事件循环与异步编程深度解析2.1 事件循环机制详解事件循环阶段详解 2.2 异步编程模式演进高级异步模式实现 3. 内存管理与性能优化3.1 V8 内存管理机制内存监控…

冰箱热交换的原理以及如何加氟

冰箱如何加氟&#xff1a; 氟利昂被节流装置降压后&#xff0c;进入冰箱的蒸发器&#xff0c;此时它处于低温低压液态状态。在冰箱内部&#xff08;例如 0C 或 -10C&#xff09;&#xff1a;它很容易气化&#xff08;因为其沸点很低&#xff09;在气化过程中吸收周围热量。 1…

WordPress多语言插件安装与使用教程

WordPress多语言插件GTranslate的使用方法 在wordpress网站后台搜索多语言插件GTranslate并安装&#xff0c;安装完成、用户插件后开始设置&#xff0c;以下为设置方法&#xff1a; 1、先在后台左侧找到Gtranslate&#xff0c;进入到设置界面 2、选择要显示的形式&#xff0c…

DELL EMC PowerStore BBU更换手册

写在前面 上周给客户卖了一个BBU电池&#xff0c;客户要写一个更换方案。顺利完成了更换&#xff0c;下面就把这个更换方案给大家share出来&#xff0c;以后客户要写&#xff0c;您就Ctrlc 和Ctrlv就可以了。 下面的步骤是最理想的方式&#xff0c;中间没有任何的问题&#xff…

FastMCP:为大语言模型构建强大的上下文和工具服务

FastMCP&#xff1a;为大语言模型构建强大的上下文和工具服务 在人工智能快速发展的今天&#xff0c;大语言模型&#xff08;LLM&#xff09;已经成为许多应用的核心。然而&#xff0c;如何让这些模型更好地与外部世界交互&#xff0c;获取实时信息&#xff0c;执行特定任务&a…

CMake基础:CMakeLists.txt 文件结构和语法

目录 1.CMakeLists.txt基本结构 2.核心语法规则 3.关键命令详解 4.常用预定义变量 5.变量和缓存 6.变量作用域与传递 7.注意事项 1.CMakeLists.txt基本结构 CMakeLists.txt 是 CMake 构建系统的核心配置文件&#xff0c;采用命令式语法组织项目结构和编译流程。主要用于…

战略-2.1 -战略分析(PEST/五力模型/成功关键因素)

战略分析路径&#xff0c;先宏观&#xff08;PEST&#xff09;、再产业&#xff08;产品生命周期、五力模型、成功关键因素&#xff09;、再竞争对手分析、最后企业内部分析。 本文介绍&#xff1a;PEST、产品生命周期、五力模型、成功关键因素、产业内的战略群组 一、宏观环境…

深入理解设计模式:工厂模式、单例模式

深入理解设计模式&#xff1a;工厂模式、单例模式 设计模式是软件开发中解决常见问题的可复用方案。本文将详细介绍两种种重要的创建型设计模式&#xff1a;工厂模式、单例模式&#xff0c;并提供Java实现示例。 一、工厂模式 工厂模式是一种创建对象的设计模式&#xff0c;…

Jenkins 2.426.2配置“构建历史的显示名称,加上包名等信息“

Jenkins 2.426.2配置“构建历史的显示名称,加上包名等信息" 需求:想要在构建历史中展示,本次运行的是哪个版本或哪个包 操作步骤: 1、先安装插件Build Name and Description Setter 2、Set Build Name 3、构建历史处查看展示 插件特性说明 安装依赖:需手动安装 Build …

为何在VMware中清理CentOS虚拟机后,本地磁盘空间未减少的问题解决

文章目录 前言原因:虚拟机磁盘&#xff0c;到底是咋回事&#xff1f;为啥空间没变小&#xff1f; 解决方案 前言 在使用VMware运行CentOS虚拟机时&#xff0c;你是否曾遇到过这样的情况&#xff1a;明明在虚拟机内删除了大量文件&#xff0c;rm -rf 后发现并没什么用&#xff…

Development靶机通关笔记

一、主机发现 arp-scan -l靶机ip为192.168.55.152 二、端口扫描、目录枚举、漏洞扫描、指纹识别 2.1端口扫描 nmap --min-rate 10000 -p- 192.168.55.152发现靶机没有开放80端口&#xff0c;开放的是8080端口 UDP端口扫描 nmap -sU --min-rate 10000 -p- 192.168.55.152靶…