真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

js模塊

寫過前端代碼大概率聽說過amd cmd umd commonjs esm這些名詞, 想當(dāng)初我第一次看到這些的時候, 人都麻了, 都是些啥啊. 后來我知道了, 這些都是js的模塊規(guī)范.

目前成都創(chuàng)新互聯(lián)公司已為上1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計、玉龍網(wǎng)站維護等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

amd - 瀏覽器中的js模塊化解決方案

AMD全稱是Async Module Definition異步模塊定義

RequireJs是AMD模塊規(guī)范的一個具體實現(xiàn).

AMD中定義一個計算器模塊calculator, 這個模塊依賴另一個名為math的模塊

calculator.js
define('calculator', ['math'], function(math) {
    return {
        add: function(left, right) { return math.add(left, right) },
        subtract: function(left, right) { return math.subtract(left, right) }
    }
})

使用剛才定義的calculator模塊

main.js
require('calculator', function(calculator) {
    console.log('1 + 1 = ' + calculator.add(1, 1));
    console.log('2 - 2 = ' + calculator.subtract(2, 1));
})

cmd - 類似amd的用于瀏覽器中的js模塊規(guī)范

CMD全稱是Common Module Definition即通用模塊定義,. 像AMDRequireJs關(guān)系一樣, 與CMD規(guī)范綁定的是sea.js

在定義模塊方面, CMDAMD一樣通過define函數(shù)來定義模塊; 兩者的主要區(qū)別在于對依賴的加載上, CMD中不需要在define的參數(shù)中直接聲明需要用到的模塊

還是以聲明calculator模塊為例

calculator.js
define('calculator', function(require, exports) {
    var math = require('math');
    exports.add = function(left, right) { return math.add(left, right) };
    exports.subtract = function(left, right) { return math.subtract(left, right) };
})

可以看到calculator模塊所的依賴的math模塊沒有在define函數(shù)的參數(shù)中進行聲明, 而是通過require('math')來引入的

使用calculator模塊

seajs.use(['calculator'], function(calculator) {
    console.log('1 + 1 = ' + calculator.add(1, 1));
    console.log('2 - 2 = ' + calculator.subtract(2, 1));
})

commonjs - Node中使用的模塊規(guī)范

定義math模塊

math.js
module.exports = {
    add: function(left, right) {
        return left + right;
    },
    subtract: function(left, right) {
        return left - right;
    }
}

使用剛才定義的math模塊, 并再定義一個calculator模塊

calculator.js
const math = require('./math.js');
module.exports = {
    add: math.add
}

umd - 一種同時兼容amd cmd commonjs規(guī)范的規(guī)范

amd cmd通常只能在瀏覽器中使用, commonjs只能在服務(wù)端(Node)環(huán)境下使用, 這樣子搞會導(dǎo)致我們基于其中某一種模塊規(guī)范寫的js模塊無法在服務(wù)端和瀏覽器端進行復(fù)用. umd解決了這個問題, 它兼容并包, 使得使用此規(guī)范寫的js模塊既可以在瀏覽器環(huán)境下使用, 也可以在Node(服務(wù)端)環(huán)境中用

(function (root, factory) {
    if (typeof exports === 'object' && typeof module === 'object')
        // commonjs
        module.exports = factory()
    else if (typeof define === 'function' && define.amd)
        // amd
        define([], factory)
    else if (typeof exports === 'object')
        // commonjs
        exports['math'] = factory()
    else
        // 全局對象, 瀏覽器中是 window
        root['math'] = factory()
})(this, function() {
    return { add: function(left, right) { return left + right; } }
})

esm - ES6模塊規(guī)范

使用import導(dǎo)入模塊, 通過export導(dǎo)出模塊

math.js
export { add: (left, right) => left + right; }
點擊此處查看代碼
import { add } from './math.js';

console.log('1 + 1 = ' + add(1, 1));

小結(jié)

amd, cmd已經(jīng)成為了過去式(個人感覺), 現(xiàn)在常用的模塊規(guī)范一般就是es6模塊和commonjs(只用于node)了, node中也已經(jīng)提供了實驗性的es模塊支持.

瀏覽器對es的importexport的支持也已經(jīng)很不錯了(除了IE其他主流瀏覽器都支持了)

好消息是微軟將在2022-6-15停止對IE11在win10非長期支持版上的支持


分享標(biāo)題:js模塊
本文地址:http://weahome.cn/article/dsojhoh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部