babel
解决问题:解决版本差异
创建一个叫做 babel-test 的文件夹
npm init -y
npm install --save-dev babel-cli
babel 默认的配置文件名为 .babelrc
.babelrc 文件
{
"presets": [
"es2015"
],
"plugins": []
}
转码规则是以附加规则包的形式出现
/*安装规则包*/
npm install --save-dev babel-preset-es2015
babel 是以命令行的形式使用的,常用命令
# 转码结果打印到控制台
babel es6.js
# 转码结果写入一个文件
babel es6.js -o es5.js # 将 es6.js 的转码结果写入 es5.js 中
# 转码整个目录到指定路径
babel es6js -d es5js # 将 es6js 路径下的 js 文件转码到 es5js 路径下
由于我们的 babel 是安装在 babel-test 的 node_modules 中的,所以需要使用 npm run 来方便运行以上命令。
编辑 package.json
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "babel inputs -d outputs"
}
在 babel-test 下创建一个新的目录 inputs ,在其中写入新的文件 a.js:
// es6 语法,模板字符串
let name = 'ucag'
let greeting = `hello my name is ${name}`
npm run build
转换完成之后,我们在 outputs 下找到 a.js
'use strict';
var name = 'ucag';
var greeting = 'hello my name is ' + name;
webpack
解决问题:整合资源,把相互依赖的模块打包
创建一个叫做 babel-test 的文件夹
npm init -y
npm install --save-dev webpack
入口 entry:不管一个项目有多复杂,它总是有一个入口的。这个入口就被称为 entry 。这就像是我们的模块有个 index.js 一样。
出口 output:webpack 根据入口文件将被依赖的文件按照一定的规则打包在一起,最终需要一个输出打包文件的地方,这就是 output 。
加载配置的方法
1.写一个独立的配置文件
2.在命令行内编写配置
webpack-test 下创建一个新的文件 webpack.config.js
module.exports = {
entry:'./main.js', // 入口文件为当前路径下的 main.js 为文件
output:{
path:__dirname, // __dirname 是 node 中的全局变量,代表当前路径。
filename:'index.js' // 打包之后的文件名
}
}
当我们在 webpack-test 下不带任何参数运行 webpack 命令时,webpack 会自动去寻找名为 webpack.config.js 的文件,这就是它默认的配置文件名了。
编辑 package.json
"scripts"{
'pkg':'webpack' // 编辑快捷命令
}
在 webpack-test 下运行
npm run pkg # 运行 webpack
模块化的方式
1.CommonJS 的模块化方式
2.es6 的模块化方式
CommonJS 规范:
使用 module.exports 或 exports 来导出内部变量
使用 require 导入变量。当被导入对象是路径时,require 会自动搜寻并引入目录下的 index.js 文件,会把这个文件作为整个文件的入口。
es6 规范:
使用 import 与 export 来导出内部变量
当导入命名导出变量时,使用基于 import { varName } from ‘model’ 的语法;当导入匿名或默认导入时,使用 import varName from ‘model’ 语法;