模块化的优势:
模块化的两个主要命令:
// js文件
export let idx = 1
export function add(x, y) {
return x + y
}
// html文件
<script type="module">
import * as m from './js/index.js'
log(m) // Moudle
console.log(m.idx) // 1
console.log(m.add(1, 2)) // 3
</script>
// js文件
let idx = 1
function add(x, y) {
return x + y
}
export {idx, add}
// html文件
<script type="module">
import * as m from './js/index.js'
log(m) // Moudle
console.log(m.idx) // 1
console.log(m.add(1, 2)) // 3
</script>
// js文件
export default {
idx: 1,
add: function(x, y) {
return x + y
}
}
// html文件
<script type="module">
import * as m from './js/index.js'
console.log(m.default) // Moudle
console.log(m.default.idx) // 1
console.log(m.default.add(1, 2)) // 3
</script>
import * as m from './js/index.js'
import {idx, add} from './js/index.js'
import {idx as idx1, add as add1} from './js/index.js'
import {default as mm} from './js/index.js' // 针对默认暴露
import mm from './js/index.js'
不是所有浏览器都对ES6语法支持,所以需要用babel将ES6语法转换为ES5语法使得浏览器解析。
具体步骤:
// src/js是源文件 dist/js是转换之后的文件路径
npx babel src/js -d dist/js --presets=babel-preset-env // 局部安装的babel
babel src/js -d dist/js --presets=babel-preset-env // 全局安装的babel
// dist/js/app.js是源文件 dist/bundle.js是打包后文件的输出路径
npx browserify dist/js/app.js -o dist/bundle.js
注意:每次修改源文件之后,都需要重新通过babel和browserify编译打包