美文网首页
js 模块化总结

js 模块化总结

作者: that_is_this | 来源:发表于2022-07-05 14:55 被阅读0次

目前主流的模块化框架有 commonJS / amd / cmd / umd / es module ,动态引用时使用 es 比较好;

模块示例代码:

umd

模块声明:

(function (name, context, factory) {
    if (typeof module === 'object' && typeof module.exports === 'object') {
        console.log("function in object ");
        module.exports = factory();
    } else if (typeof window.define === 'function' && window.define.amd) {
        console.log("function in define.amd ");
        window.define(factory);
    }
    else if (typeof exports === "object") {
        console.log("function in context.exports ");
        context.exports = factory();
    }
    else {
        console.log("function in context[name] " + context);
        context[name] = factory();
    }
}("test2", this, function () {
    console.log("function body " + this);
    function SDK() {
        this.call1 = function () {
            console.log("call1 in .");
        }
        this.call2 = function () {
            console.log("call2 in .");
        }
    }
    const sdk = new SDK();
    console.log("function body out " + this);
    return sdk;
}));

模块调用:

import('./test2.js').then((test2) => {
    console.log("test22 in . ");
    test2.SDK().call1();
    console.log("test22 out. ");
})

es module

方法声明:
function SDK() {
    function SDK() {
        this.getData = function() {
            console.log("getData in.");
        }
    }
    const msdk = new SDK();
    return msdk;
}

export function getData() {
    new SDK().getData();
}

方法调用1:
import('./test2.js').then((test2) => {
    console.log("test22 in . ");
    test2.getData();
    console.log("test22 out. ");
})
方法调用2:
import {getData} from './test2.js'

var data = getData();

commomJS

导出
var a = 1;
function b() {}

module.exports {a:a, b:function()}

引用:
var b = require('./test.js');
b();

amd

define('myModule', 
    ['foo', 'bar'], 
    function ( foo, bar ) {
        var myModule = {
            doStuff:function(){
                console.log('Yay! Stuff');
            }
        }
        return myModule;
});

require(['foo', 'bar'], function ( foo, bar ) {
        // 这里写其余的代码
        foo.doSomething();
});

ESM 是最好的模块格管理式,这要归功于其简单的语法、异步性质和 tree-shakeability。
UMD 随处可用,通常用作 ESM 不起作用时的后备方案
CJS 是同步的,有利于后端。
AMD 是异步的,适合前端。

https://juejin.cn/post/6895952580607016968
es6 学习
https://www.w3cschool.cn/escript6/escript6-v8gr37fg.html

相关文章

  • 模块化开发

    前端JS模块化开发有两大规范AMD合CMD,下面以我的理解来简单总结一下模块化开发的思想 ,以及js前端常用的AM...

  • 模块化开发

    js模块化开发vue模块化开发

  • require.js的学习

    require的总结: 1.require用来将js文件模块化,可以避免一个html文件引入过多的js文件。因为大...

  • js 模块化总结

    目前主流的模块化框架有 commonJS / amd / cmd / umd / es module ,动态引用时...

  • Javascript 模块化

    Javascript 模块化发展的历史精读 js 模块化发展直接定义依赖 (1999): 由于当时 js 文件非常...

  • js模块化规范

    title: js模块化date: 2019-01-30 17:49:22tags: js 1.无模块化 缺点:1...

  • js 模块化

    尚硅谷_JS模块化 笔记

  • 06Vue的前端工程化

    Vue的前端工程化 一 模块化规范 1.1模块化规范举例 浏览器端JS模块化规范:AMD,CMD 服务器端JS模块...

  • 模块化开发

    什么是模块化? 模块化就是讲js文件按照功能分离,根据需求引入不同的文件中。源于服务器端。 js模块化方案有AMD...

  • 前端模块化

    在学node.js, 实际上就是基于common.js开发的,所以了解了一下模块化开发。 JS的模块化初衷和所有语...

网友评论

      本文标题:js 模块化总结

      本文链接:https://www.haomeiwen.com/subject/yojsbrtx.html