1、解构赋值
let {a,b,c}={a:1,b:2,c:3}
对象这种会按照对应的属性名称(a、b、c)去右边的对象里面寻找对应的值。左边写成{c,b,a}也不影响解构。
但是 let {a,b,c} = { e:4, f:5, g:6 }这样的就不行,最后abc都是undefined,必须是相对应的属性。
let [a,b,c] = [7,8,9]
这种数组的是按照位置来解构的,最后是a=7,b=8,c=9
总结:
1、对象是按照对应的变量名去解构的,只要左右对应的变量名一样。顺序无所谓。
2、数组是按照一一对应的位置来解构的。
3、左右两边得一样,同时右边得是个东西,比如右边是 { 1,2,3 } 就不行,它既不是数组,也不是对象。
2、箭头函数中的this
箭头函数中的this是不会变的,永远绑定在它当前的环境下。
let json = {
a:12.b:5,
show:()=>{console.log(this)}
}
这里面的this指window,因为json是在全局下定义的,全局是window。
3、JSON
json如果不用来传输数据,只在js当中用的话(指的是在<script>标签中直接定义json数据),可以不严格按照json的数据格式来,写法可以和js对象的写法一样。如果按照传输数据的话,必须严格按照json的格式来写。
json的格式要求:json要么是一个数组,要么是一个对象,用单引号包括,里面的属性统统要加双引号,属性值除了数值类型的,也要加双引号。
4、promise
promise自己其实没什么功能,它是对所有的异步操作做一个封装而已。
看以下代码:
let p=new Promise(function (resolve, reject){ //封装一个promise
$.ajax({
url: 'data/1.json',
dataType: 'json',
success(data){
resolve(data);
},
error(res){
reject(res);
}
});
});
p.then( function (data){
alert('成功');
console.log(data);
}, function (res){
alert('失败');
console.log(res);
} );
备注:注意里面的resolve 函数和 reject 函数,不是promise提供的,是我们自己写的,红色的部分其实就是resolve函数(表示成功),蓝色的部分其实就是reject函数(表示失败)
promise中all的用法(都成功才可以,有一个失败就失败了),比如同时请求三个,这三个是异步的,不管是谁先请求到,最后都会按照我们所写的顺序返回给我们。
promise几乎不能独立使用,真正让 promise 大放光彩的是 async 和 await ,async 和 await 完全可以让我们用同步的方式来写异步的代码。
5、js在 webpack 里面编译,而webpack是工作在 node 环境下的,所以 webpack 需要遵守node的环境语法,例如:当前目录必须加 ./
6.node知识点
1、模块:
1、http模块 服务器
2、fs模块 读写文件的
3、querystring模块 利用querystring.parse(xx)的方法解析get请求提交的数据,以 & 切割
4、url模块 利用url.parse(xx,true)解析get请求提交的数据,最后的true表示把参数以 & 切割好
2、write()是node的原生方法,send()是express框架里面的方法。
3、配置package.json文件,是系统默认的。在终端切换到代码所在的文件夹下,执行命令 npm init,会出来一堆需要自己确认的东西,每一个可以直接回车默认。如果嫌敲回车麻烦,可以输入命令npm init -y 直接都是默认的
4、npm install xx => npm i xx npm uninstall xx => npm un xx
npm i xx -D => npm i xx -dev npm i xx -S => npm i xx -save
5、如果我想把我的项目拿走,部署到一个新的生产服务器下。不要带走node_modules文件,它比较大,而且这个文件夹不能随便移动,一旦移动,可能就坏了, 需要重新下载。一般情况下,只把package.json拷贝走,到了新环境下,不需要用npm引入一个个的依赖包,主需要一个命令 npm i (或者cnpm i),它会自动的从package.json里面找依赖包,自动全部安装,生成新的node_modules。
6、package-lock.json是 npm安装出错的时候或者中途编译、包没找到的时候等等 建的文件,主要是声明刚才出错的详细信息。
7、npm install --save-dev 是开发依赖,只在开发版里面起作用。 --save是生产依赖,在生产版,编译的时候起作用。
8、yarn也是一个挺有名的包管理器,是facebook发明的,可以用npm安装:npm i yarn -g ,它是一个工具,记得全局安装。需要用yarn装东西的时候,就用yarn add xxx ,跟npm的结果几乎是一样的。 最近几年yarn速度越来越慢,不知道什么原因,所以一般不用yarn,一般都是用cnpm。
9、bower是一个前端的包管理器。npm i bower -g 全局安装,bower i xxx 用bower安装其他东西。在我们代码的文件夹目录下,比如执行 bower i jquery ,就会在当前文件夹生成一个bower_modules的文件,里面存放着bower安装的文件。用bower下包还是挺方便的。
10、npm也可以装jquery,但是npm装的jq更偏向于后台使用,是一个适合编译的版本。是用webpack打包的时候,打好了,再给前端用。有些包npm和bower安装的不一样,npm安装的有些包不能直接使用,需要编译。所以有时候可能要更偏向bower。
11、用node的时候,用npm安装其他的模块,命令行输入 npm i xx -D ,记得后面加一个横杠和一个大写的D,这样的话,安装过后会在package.json里面的依赖显示出来。
7、vue知识点
1、methods 中不能用箭头函数,因为不用箭头函数的话,this的指向指的是vue所在的实例,此时methods中的方法中 this.属性名 指的就是vue实例中的属性。如果用了箭头函数,this的指向指的就是vue实例所在的环境,此时的环境指的是window,用 this.属性名 调用的时候,指的是window下的变量,就不合适了。
obj ={
a:1,
show:function(){console.log(this.a)}
}
obj.show() //1
obj ={
a:1,
show(){console.log(this.a)}
}
obj.show() //1
obj ={
a:1,
show:()=>{console.log(this.a)}
}
obj.show() //undefined