打包 → 整体打包成一个 bundle 的一个JS文件
代码、模块是加载的时候不需要 → 分割出来单独形成一个文件块 chunk
模块化意义
模块的诞生
import 导入模块
import()
、 import
static import
import xxx from ''
dynamic import
import('')
()
vs 普通函数 → import 不是一个对象
typeof
: typeof (xxx)
/ typeof xxx
→ 关键字import xxx from './' + a + b + c + '.js'
这样是不行的import('./' + a + b + c + '.js')
这样可以(动态说明符)static import
只支持静态说明符'./'
相对路径是必须加的,否则会当做 module 包加载import()
class Test {
constructor() {
console.log("new Test");
}
}
export default Test;
const oBtn = document.createElement("button");
oBtn.textContent = "Click 加载动态 module";
document.body.appendChild(oBtn);
// // 得到的是个 Promise
// oBtn.onclick = function () {
// const module = import("./14.1.module.js");
// console.log(module); // Promise {<pending>}
// };
// // 通过 async/await 拿到了 Module, 包含一个 default 就是 class Test
// oBtn.onclick = async function () {
// const module = await import("./14.1.module.js");
// console.log(module);
// /**
// * Module {Symbol(Symbol.toStringTag): 'Module'}
// default: class Test
// Symbol(Symbol.toStringTag): "Module"
// get default: ƒ ()
// set default: ƒ ()
// */
// };
// new 这个 Test
oBtn.onclick = async function () {
const module = await import("./14.1.module.js").then((res) => res.default);
new module(); // log: new Test
};