模块化-commonJS、AMD、CMD、ES6

2019-10-18  本文已影响0人  糕糕AA

思维导图

模块:将大程序拆分成互相依赖的小文件,再用简单的方法拼接起来

commonjs:let { stat, exists, readFile } = require('fs');

ES6:import { stat, exists, readFile } from 'fs';

【ES6 的模块自动采用严格模式,不管你有没有在模块头部加上"use strict";

const path = './' + fileName;
    const myModual = require(path);
button.addEventListener('click', event => {
         import('./dialogBox.js')
         .then(dialogBox => {
         dialogBox.open();
         })
         .catch(error => {
         /* Error handling */
         })
        });
if (condition) {
         import('moduleA').then(...);
        } else {
         import('moduleB').then(...);
        }
import(f())
        .then(...);

model的加载实现

默认情况下,浏览器是同步加载 JavaScript 脚本,如果是外部脚本,还必须加入脚本下载的时间。(defer是“渲染完再执行”,async是“下载完就执行”。另外,如果有多个defer脚本,会按照它们在页面出现的顺序加载,而多个async脚本是不能保证加载顺序的。)

ES6模块 VS CommonJs

// m1.js
    export var foo = 'bar';
    setTimeout(() => foo = 'baz', 500);
    ​
    // m2.js
    import {foo} from './m1.js';
    console.log(foo);
    setTimeout(() => console.log(foo), 500); // bar baz

AMD

CMD

上一篇 下一篇

猜你喜欢

热点阅读