日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Requirejs与r.js打包,AMD、CMD、UMD、CommonJS、ES6模块化

發(fā)布時(shí)間:2023/12/31 javascript 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Requirejs与r.js打包,AMD、CMD、UMD、CommonJS、ES6模块化 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一:require.js

1、require.js是什么?為什么要用它?
require.js是一個(gè)JavaScript模塊載入框架,實(shí)現(xiàn)的是AMD規(guī)范。使用require.js有以下優(yōu)點(diǎn):
① 異步加載,防止js加載阻塞頁面渲染,提高了性能。
② 使用程序調(diào)用的方式加載js,避免使用傳統(tǒng)的標(biāo)簽引入方式。
③ 模塊化,便于代碼的編寫和維護(hù)。
④ 按需加載,減少不必要的載入。
2、require.js與傳統(tǒng)方式對比
①:傳統(tǒng)方式
dom結(jié)構(gòu):

a.js源碼:

運(yùn)行效果:

總結(jié):這樣雖然結(jié)構(gòu)與邏輯分離,a.js這種寫法雖然實(shí)現(xiàn)了模塊化,不會(huì)污染全局環(huán)境,但是看起來并沒有那么優(yōu)雅,而且可以看到文本test并沒有渲染出來,也就是在head中引入js,js的加載會(huì)阻塞下邊dom的渲染,這是一個(gè)同步的過程。
② require.js方式
dom結(jié)構(gòu):

a.js源碼:

運(yùn)行效果:

總結(jié):可以看到require.js方式head中js的加載并沒有阻塞下邊dom的渲染,也就是說這是一個(gè)異步的過程,通過define定義模塊,require加載模塊更清晰明了。
3、require.js常用api
(1)define 定義模塊
(2)reuqire 加載依賴模塊,執(zhí)行加載完后的回調(diào)函數(shù)
(3)config 配置信息,常用配置項(xiàng):
① paths 指定資源別名、設(shè)置資源路徑
② baseUrl 設(shè)置獲取資源時(shí)的公共前置路徑,簡化paths中路徑的寫法
③ waitSeconds 設(shè)置加載模塊時(shí)的最長等待時(shí)間
④ shim 設(shè)置文件的依賴、輸出非AMD模塊化文件
4、使用require.js改造昨天的sass demo
(1)目錄結(jié)構(gòu):

(2) 運(yùn)行效果:

(3)源碼鏈接:https://github.com/XieTongXue/demo/tree/master/requirejs-demo

二、r.js

概念:r.js是requireJs的優(yōu)化工具,能合并壓縮js、css。
使用r.js打包以上開發(fā)的demo,r.js在github下載
文件目錄如下:

新增build.js,源碼如下:

其中name配置項(xiàng)為打包入口,out為輸出,baseUrl為paths前置路徑。
新建collect.js,用于收集模塊

進(jìn)入build 文件夾,命令行運(yùn)行 node r.js -o build.js,會(huì)生成一個(gè)app.js,在index.html中引用即可。

源碼鏈接:https://github.com/XieTongXue/demo/tree/master/r.js-demo

三、AMD|CMD|UMD|CommonJS|ES6

AMD:異步模塊定義,異步加載模塊,即不堵塞瀏覽器其他任務(wù),而加載內(nèi)部是同步的(加載完模塊后立即執(zhí)行回調(diào))。
CMD:與AMD不同的是,AMD一開始要將依賴以數(shù)組形式導(dǎo)入,而CMD推崇依賴就近,延遲執(zhí)行。
UMD:AMD和CommonJS(服務(wù)端模塊化規(guī)范)的結(jié)合體,UMD先判斷是否支持Node.js的模塊(exports)是否存在,存在則使用Node.js模塊模式,再判斷是否支持AMD(define是否存在),存在則使用AMD方式加載模塊。
CommonJS:服務(wù)端模塊化規(guī)范,如Nodejs

寫法舉例:

AMD:(代表:require.js)

// math.js define(function () {var add = function (x, y) {return x + y}return {add: add} })// use.js require(['math', 'other'], function (math, other) {console.log(math.add(1, 2)) // 3other.doSomething() // other })

CMD:(代表:sea.js)

// CMD define(function(require, exports, module) {var a = require('./a');a.doSomething();var b = require('./b');b.doSomething(); }) // 對應(yīng) AMD define(['a', 'b'], function(a, b) {a.doSomething()b.doSomething()// 模塊自己的方法 })

UMD:

(function (root, factory) {if (typeof define === 'function' && define.amd) {// AMD. Register as an anonymous module.define(['b'], factory);} else if (typeof module === 'object' && module.exports) {// Node. Does not work with strict CommonJS, but// only CommonJS-like environments that support module.exports,// like Node.module.exports = factory(require('b'));} else {// Browser globals (root is window)root.returnExports = factory(root.b);} }(this, function (b) {//use b in some fashion.// Just return a value to define the module export.// This example returns an object, but the module// can return a function as the exported value.return {}; }));

CommonJS:

// math.js exports.add = function (a, b) {return a + b }// use.js var math = require('math') math.add(1, 2)

ES6:

// math.js export function add (a, b) {return a, b }// use.js import {add} from 'math' add(1, 2)

總結(jié)

以上是生活随笔為你收集整理的Requirejs与r.js打包,AMD、CMD、UMD、CommonJS、ES6模块化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 污视频网址| 国产又粗又猛又爽又黄91 | 情侣av| 性欢交69精品久久久 | 欧美日本精品 | 精品国产欧美一区二区三区成人 | 免费看一级黄色大片 | 精品在线播放 | 日本不卡一 | 中国色视频 | 五月天一区二区三区 | 久久亚洲网 | 在线国产视频一区 | 视频一区 国产 | 拔插拔插华人 | 久久精品人妻一区二区三区 | 一本一道久久a久久 | 亚洲 日本 欧美 中文幕 | 91嫩草影视| 强行糟蹋人妻hd中文字幕 | 成年人网站免费观看 | av一区二区三区免费观看 | 夜夜草导航 | 欧美12--15处交性娇小 | 亚洲区色 | 国产九色av | 国产精品自拍视频 | 亚洲天堂2014| 91微拍| 久久成人a毛片免费观看网站 | 黄色一级片免费 | 色视频免费看 | 国产乱码精品 | 国产精品亚洲二区在线观看 | 成人午夜视频网站 | 搞中出 | 高潮一区二区三区 | 夏晴子在线 | 手机在线一区 | 中文无码日韩欧 | 巨大乳の揉んで乳榨り奶水 | 韩国美女主播跳舞 | 国产在线一区二区视频 | 成人a级大片 | 成人激情自拍 | 黄色片免费在线播放 | 91av视频在线 | 国产手机在线播放 | 男人天堂999 | 中文不卡在线 | 男女视频在线 | 在线综合视频 | 国产乱色精品成人免费视频 | 欧美激情精品久久久久久免费 | 超碰97在线人人 | 最近中文字幕在线观看视频 | 久色电影 | 亚洲中文字幕一区二区在线观看 | 手机看片日韩国产 | 日韩在线一区二区 | xxx.国产| 国产伦精品一区二区三区视频网站 | 最近中文字幕在线中文视频 | 日韩区在线观看 | 欧美freesex黑人又粗又大 | 一级黄色录像免费观看 | 无码人妻精品一区二区 | 国产美女久久久久久 | 国产精品高清在线 | 精品国产午夜福利 | 精品欧美在线观看 | 小蝌蚪av | 日本中文在线观看 | 欧美资源 | 久久99热人妻偷产国产 | a毛片大片 | 变态另类丨国产精品 | 处女朱莉第一次 | 秋霞毛片少妇激情免费 | 一级a毛片免费观看久久精品 | 欧美成人片在线观看 | a√在线观看 | 欧美9999| 国产欧美熟妇另类久久久 | 午夜欧美精品 | 国产suv精品一区二区四 | 精品国产乱码久久久久久88av | 日韩高清不卡 | 不卡中文av | 伊人国产精品 | 男人的天堂视频在线观看 | 国产成人77亚洲精品www | 日本一区二区在线观看视频 | av最新网址| 蜜臀久久99精品久久一区二区 | 亚洲欧美日韩另类在线 | 亚洲在线视频一区 | 日韩福利片在线观看 | 午夜成人免费影院 |