webpack
PK rollup
多层次引用和模块化处理需要用webpack解决
webpack.config.js
1 | module.exports = { |
优点:
和webpack对比来说,功能比较单一,webpack功能比较强大(学习成本比较高)
rollup.config.js
1 | import babel from 'rollup-plugin-babel' |
没有模块的时候(蛮荒时代)
AMD成为标准,require.js(也有CMD)
前端打包工具出现,可以使用node.js的模块化(CommonJs)
ES6出现,想统一现在的模块化的标准
node.js积极支持,浏览器支持不统一
你可以自己制造库(lib),但不要自制标准
class在语法上更贴合面向对象的写法
class在实现继承上更易读、易理解
本质还是语法糖,使用的是prototype
1 | class A { |
完全符合构造函数原理
而针对继承,构造函数通过
es5:
1 | function A(){ |
es6:
1 | class B extends A{ |
1 | function loadImg(src,callback,fail){ |
1 | function loadImg(src){ |
语法:
new Promise实例需要return返回出去
new Promise实例传入一个函数,其中有resolve和reject两个参数
成功执行resolve失败执行reject
用.then
监听结果
异常捕获:
1 | //规定then只传一个参数,异常统一由catch处理 |
Promise.all和Promise.race
1 | Promise.all([result01,result02]).then(datas => { |
1 | Promise.race([result01,result02,result03]).then(data => { |
Promise标准之状态变化
ES7 async await
1 | const load = async function(){ |
1 | var zepto = {} |
1 | $.fn = { |
1 | var jQuery = function(selector){ |
1 | //初始化fn |
看了jQuery和zepto的原型,有两个很重要的地方就是
1 | //zepto |
为什么不直接咋jQuery或zepto的构造函数的原型上添加这些方法,而是在$.fn
或者jQuery.fn
上添加方法,再赋值都原型上去呢?
单线程:只有一个线程,同一时间,只能做一件事情
原因:避免DOM渲染的冲突
解决方案:异步
缺点:
1.5版本之前的写法
1 | var ajax = $.ajax({ |
1.5版本之后的写法
1 | var ajax = $.ajax('data.json') |
关于1.5版本的变化
使用jQuery deffered API可以分为两类
dtd.resolve()
和dtd.reject()
dtd.then()
、dtd.done()
、dtd.fail()
Deffered写法:
1 | function waitHandle(){ |
1 | function waitHandle(){ |