准备几个js文件。
// test1
export default {
hobbit: function () {
console.log('唱歌')
}
}
// test2
const age = 18;
function talk() {
console.log('今年18')
}
export {
age, talk
}
// test3
export const name = '张三';
export function speck() {
console.log('我叫张三')
}
// app.js
import * as t1 from './src/test1.js'
import * as t2 from './src/test2.js'
import * as t3 from './src/test3.js'
console.log(t1, t2, t3)
// index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<script src="./app.js" type="module"></script>
</body>
</html>
如果想要在html打开谷歌浏览器时,正常打印数据,需要通过vscode一个插件Live Server
方便浏览。
打印结果如下
现在通过babel来编译。
npm init
- npm i babel-cli babel-preset-env browserify -D
babel-cli
是babel的一个命令行工具,babel-preset-env
是一个预设包,可以把最新的es特性做一层转换(es5),browserify
是一个比较简单的打包工具。
- npx babel src/js -d dist/js --presets=babel-preset-env
因为我这里是局部安装,所以需要用npx,全局安装就直接使用babel,第一个参数src/js是目标文件,-d代表转换完的结果存到某个文件夹下,dist/js是存放路径,–presets=babel-preset-env是使用预设包编译。当然可以写成一个脚本
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"babel-test": "npx babel src/js -d dist/js --presets=babel-preset-env"
},
这样就会被(例如test1.js)就会被转换成es5代码
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = {
hobbit: function hobbit() {
console.log('唱歌');
}
};
- 打包 npx browserify dist/js/app.js -o dist/bundle.js
因为浏览器不识别require语法。
dist/js/app.js 是目标文件
-o 是输出选项,将文件输出到某个位置。
最终打印结果