1.es6:
升级了一些属性和方法
2015年6月发布第一版本es5:(EcmaScript 2015)
兼容性比较差:
浏览器的兼容性更差
编写:
es6:效率更高
–>转换为es5
2.包管理机制(npm)
node: 模块化概念
框架->包->模块
npm:node package manager
官网部署在国外
检测仓库地址:npm config list
国内仓库:
淘宝镜像
1>修改npm仓库地址(不建议)
npm config set registry
http://registry.npm.taobao.org
npm install jquery
2>下载cnpm
1)通过npm下载cnpm
npm install cnpm -g --registry http://registry.npm.taobao.org
cnpm config list
cnpm install jquery
cnpm uninstall jquery
2)指定cnpm的仓库地址
3>yarn
(Yet Another Resource)
优点:
yarn add jquery
3.安装转码工具babel
1>全局安装/在线使用
1)下载
cnpm install babel-cli -g
2)安装预设(转换规则)
es6->es5
babel-preset-es2015
babel-preset-latest
$cnpm install babel-preset-es2015
3)创建配置文件
创建在项目的根目录下
.babelrc
{
“presets”:[“es2015”]
}
4)使用babel进行编码
babel index.js:将转换结果打印在控制台
babel index.js --out-file index-out.js:将转换结果输出到index-out.js文件中
babel src --out-dir dist:将src文件中的所有文件转码后输出到dist文件中
src:存放原文件es6文件
dist:存放转码后文件es5文件
2>本地安装/离线使用
myjs.js:es6:babel:配置文件
下载到本地
1)卸载全局babel
cnpm uninstall babel-cli -g
2)初始化项目
cnpm init(配置信息)
cnpm init -y
package.json(配置文件)
3)本地安装babel-cli,并保存到配置文件中
cnpm uninstall babel-cli --save-dev
4)安装预设
cnpm install babel-preset-es2015 --save-dev
5)编写.babelrc配置文件
.babelrc
{
“presets”:“es2015”
}
6)简化转换操作
在package.json文件中,创建一个命令
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build":"babel src --out-dir dist"
},
$ cnpm run build
app1:
package.json:
devDe:{
"babel-cli":''
}
node_modules:
xxx:babel-cli
xxx
xxx
app2:
package.json:
$ npm install
4.模块化机制
1>node:
commentjs:本身就是一个模块
需要下载安装
js->模块
导出:每一个模块中都有一个module对象
paths:当引入一个模块时,找模块的路径
module.exports.a=a;
module.exports={
a:a,
b:b
}
module可以省略
exports.a=10;
导入:接收导出的东西,尽量将导入代码写在当前模块第一行
var module=require("./node.js")一定要有一个路径
module.a
引入第三方模块:
require(“mysql”)
require(“jquery”)
去node_modules找
实例:
demo:
jquery:
index.js
test.js
jquery.js
test.js:
require("./jquery");
1.如果当前文件夹下只有一个jquery.js文件,相当于引入jquery.js
2.如果当前文件中只有jquery文件夹。相当于引入jquery文件夹下的index.js
3.如果当前文件夹中同时存在同名的文件以及文件夹,默认引入文件;
require("./jquery/")(不想引入文件就这么写)
操作:
node.js(抛出去)
module.exports.a=a;
module.exports.say=say;
module.js(接收)
var module=require("./node.js");//一引入就会立刻执行node里的代码
module–>module.exports(node.js)
导出
module1.js:
导入
2>es6:
模块化语法:只是es6中的一种语法,兼容性不好
es6->es5
导出:export关键字 不能直接加属性值//export a;
export var a=10;(导出的同时赋值)
export function say(