精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

前端模塊化開發那點歷史

開發 前端
不談什么:傳統的模塊化開發方式,比如文件拆分、全局變量、命名空間,以及 YUI3 式的模塊化開發方式。談什么: 關于 CommonJS、AMD、Node.js、CMD 等相關的故事與未來趨勢,很有意思。

最近不斷有人問及,想起前些天跟 @dexteryy 等人的討論:dexteryy/OzJS#10 當時有過簡單總結,重新梳理如下。

寫在前面

1.不談什么:傳統的模塊化開發方式,比如文件拆分、全局變量、命名空間,以及 YUI3 式的模塊化開發方式。有興趣的可閱讀:前端模塊化開發的價值

2.談什么: 關于 CommonJS、AMD、Node.js、CMD 等相關的故事與未來趨勢,很有意思。

3.不一定精準:本文是基于史實的扯淡,因此部分文字特別是時間都是模糊記憶,不一定精準。關于流派、趨勢則是個人在社區的感受,不代表客觀看法。(看法都是主觀的,呵呵)

CommonJS 社區

大概 09 年 – 10 年期間,CommonJS 社區大牛云集。CommonJS 原來叫 ServerJS,推出 Modules/1.0 規范后,在 Node.js 等環境下取得了很不錯的實踐。

09年下半年這幫充滿干勁的小伙子們想把 ServerJS 的成功經驗進一步推廣到瀏覽器端,于是將社區改名叫 CommonJS,同時激烈爭論 Modules 的下一版規范。分歧和沖突由此誕生,逐步形成了三大流派:

1.Modules/1.x 流派。這個觀點覺得 1.x 規范已經夠用,只要移植到瀏覽器端就好。要做的是新增 Modules/Transport 規范,即在瀏覽器上運行前,先通過轉換工具將模塊轉換為符合 Transport 規范的代碼。主流代表是服務端的開發人員?,F在值得關注的有兩個實現:越來越火的 component 和走在前沿的 es6 module transpiler。

2.Modules/Async 流派。這個觀點覺得瀏覽器有自身的特征,不應該直接用 Modules/1.x 規范。這個觀點下的典型代表是 AMD 規范及其實現 RequireJS。這個稍后再細說。

3.Modules/2.0 流派。這個觀點覺得瀏覽器有自身的特征,不應該直接用 Modules/1.x 規范,但應該盡可能與 Modules/1.x 規范保持一致。這個觀點下的典型代表是 BravoJS 和 FlyScript 的作者。BravoJS 作者對 CommonJS 的社區的貢獻很大,這份 Modules/2.0-draft 規范花了很多心思。FlyScript 的作者提出了 Modules/Wrappings 規范,這規范是 CMD 規范的前身。可惜的是 BravoJS 太學院派,FlyScript 后來做了自我閹割,將整個網站(flyscript.org)下線了。這個故事有點悲壯,下文細說。

AMD 與 RequireJS

再來說 AMD 規范。真正的 AMD 規范在這里:Modules/AsynchronousDefinition。AMD 規范一直沒有被 CommonJS 社區認同,核心爭議點如下:

執行時機有異議

看代碼

Modules/1.0:

  1. var a = require("./a"// 執行到此處時,a.js 才同步下載并執行 

AMD:

  1. define(["require"], function(require) {  
  2.   // 在這里,模塊 a 已經下載并執行好  
  3.   // ...  
  4.   var a = require("./a"// 此處僅僅是取模塊 a 的 exports  
  5.    
  6. }) 

AMD 里提前下載 a.js 是瀏覽器的限制,沒辦法做到同步下載,這個社區都認可。

但執行,AMD 里是 Early Executing,Modules/1.0 里是第一次 require 時才執行。這個差異很多人不能接受,包括持 Modules/2.0 觀點的也不能接受。

這個差異,也導致實質上 Node 的模塊與 AMD 模塊是無法共享的,存在潛在沖突。

模塊書寫風格有爭議

AMD 風格下,通過參數傳入依賴模塊,破壞了 就近聲明 原則。比如:

  1. define(["a""b""c""d""e""f"], function(a, b, c, d, e, f) {  
  2.    
  3.     // 等于在最前面申明并初始化了要用到的所有模塊  
  4.    
  5.    if (false) {  
  6.        // 即便壓根兒沒用到某個模塊 b,但 b 還是提前執行了  
  7.        b.foo()  
  8.    }  
  9.    
  10. }) 

還有就是 AMD 下 require 的用法,以及增加了全局變量 define 等細節,當時在社區被很多人不認可。

最后,AMD 從 CommonJS 社區獨立了出去,單獨成為了 AMD 社區。有陣子,CommonJS 社區還要求 RequireJS 的文檔里,不能再打 CommonJS 的旗幟(這個 CommonJS 社區做得有點小氣)。

脫離了 CommonJS 社區的 AMD 規范,實質上演化成了 RequireJS 的附屬品。比如

1.AMD 規范里增加了對 Simplified CommonJS Wrapper 格式的支持。這個背后是因為 RequireJS 社區有很多人反饋想用 require 的方式,最后 RequireJS 作者妥協,才有了這個半殘的 CJS 格式支持。(注意這個是偽支持,背后依舊是 AMD 的運行邏輯,比如提前執行。)

2.AMD 規范的演進,離不開 RequireJS。這有點像 IE…… 可能是我的偏見。

AMD 的流行,很大程度上取決于 RequireJS 作者的推廣,這有點像 less 因 Bootstrap 而火起來一樣。但火起來的東西未必好,比如個人覺得 stylus 就比 less 更優雅好用。

關于 AMD 和 RequireJS,暫且按下不表。來看另一條暗流:Modules/2.0 流派。

Modules/2.0

BravoJS 的作者 Wes Garland 有很深厚的程序功底,在 CommonJS 社區也非常受人尊敬。但 BravoJS 本身非常學院派,是為了論證 Modules/2.0-draft 規范而寫的一個項目。學院派的 BravoJS 在實用派的 RequireJS 面前不堪一擊,現在基本上只留存了一些美好的回憶。

這時,Modules/2.0 陣營也有一個實戰派:FlyScript。FlyScript 拋去了 Modules/2.0 中的學究氣,提出了非常簡潔的Modules/Wrappings 規范:

  1. module.declare(function(require, exports, module)  
  2. {  
  3.    var a = require("a");   
  4.    exports.foo = a.name;   
  5. }); 

這個簡潔的規范考慮了瀏覽器的特殊性,同時也盡可能兼容了 Modules/1.0 規范。悲催的是,FlyScript 在推出正式版和官網之后,RequireJS 當時正直紅火。期間 FlyScript 作者 khs4473 和 RequireJS 作者 James Burke 有過一些爭論。再后來,FlyScript 作者做了自我閹割,將 GitHub 上的項目和官網都清空了,官網上當時留了一句話,模糊中記得是

我會回來的,帶著更好的東西。

這中間究竟發生了什么,不得而知。后來我有發郵件給 @khs4473 詢問,khs 給了兩點挺讓我尊重的理由,大意是

1.我并非前端出身,RequireJS 的作者 James Burke 比我更懂瀏覽器。

2.我們應該協同起來推動一個社區的發展,即便它不是你喜歡的。

這兩句話對我影響很大。也是那之后,開始仔細研究 RequireJS,并通過郵件等方式給 RequireJS 提出過不少建議。

再后來,在實際使用 RequireJS 的過程中,遇到了很多坑。那時 RequireJS 雖然很火,但真不夠完善。期間也在尋思著 FlyScript 離開時的那句話:“我會回來的,帶著更好的東西”

我沒 FlyScript 的作者那么偉大,在不斷給 RequireJS 提建議,但不斷不被采納后,開始萌生了自己寫一個 loader 的念頭。

這就是 SeaJS。

SeaJS 借鑒了 RequireJS 的不少東西,比如將 FlyScript 中的 module.declare 改名為 define 等。SeaJS 更多地來自 Modules/2.0 的觀點,但盡可能去掉了學院派的東西,加入了不少實戰派的理念。

最后

寫著寫著,有點滄桑感,不想寫了。

歷史不是過去,歷史正在上演。隨著 W3C 等規范、以及瀏覽器的飛速發展,前端的模塊化開發會逐步成為基礎設施。一切終究都會成為歷史,未來會更好。

原文鏈接:http://blog.jobbole.com/35528/

責任編輯:張偉 來源: github
相關推薦

2013-03-11 10:00:13

前端模塊化

2013-08-20 16:33:52

前端模塊化

2017-05-12 14:00:07

大數據前端模塊化開發

2014-04-22 10:19:40

objection模塊化開發iOS

2010-08-02 09:21:48

Flex模塊化

2023-02-15 22:13:19

客戶端Android

2023-11-08 13:55:27

2013-08-20 15:31:18

前端模塊化

2020-09-17 10:30:21

前端模塊化組件

2022-03-11 13:01:27

前端模塊

2020-09-18 09:02:32

前端模塊化

2022-09-05 09:01:13

前端模塊化

2015-10-10 10:01:28

前端模塊化webpack

2023-10-17 09:19:34

開發Java

2020-11-09 10:46:35

CommonJS

2019-12-02 16:05:10

前端模塊化JavaScript

2023-05-24 10:35:11

Node.jsES模塊

2010-08-02 09:10:36

Flex模塊化

2011-01-11 13:40:44

webcssdiv

2018-12-18 11:20:28

前端模塊化JavaScript
點贊
收藏

51CTO技術棧公眾號

国产在线麻豆精品观看| 残酷重口调教一区二区| 一二三区精品视频| 99国产在线| 中文字幕在线字幕中文| 91午夜精品| 精品久久久视频| 日韩免费电影一区二区三区| 91theporn国产在线观看| 欧美在线二区| 精品国产sm最大网站| 国产精品后入内射日本在线观看| 日本在线丨区| 日产国产欧美视频一区精品| 欧美老女人性生活| 强迫凌虐淫辱の牝奴在线观看| 巨茎人妖videos另类| 国产精品久久久久久久岛一牛影视| www.成人三级视频| 波多野结衣视频在线看| 欧美日韩精品一本二本三本| 亚洲片在线观看| 91网址在线观看精品| 成人私拍视频| 亚洲男人电影天堂| 日韩久久不卡| 天天插天天干天天操| 久久国产精品免费| 全亚洲最色的网站在线观看| 欧美丰满艳妇bbwbbw| 国产午夜一区| 亚洲精品videossex少妇| 中文字幕第一页在线视频| 久草在线资源福利站| 亚洲视频1区2区| 午夜精品一区二区三区在线观看| 日韩中文字幕综合| 国产伦精品一区二区三区免费迷| 国产精品大陆在线观看| 日本三级免费看| 91精品啪在线观看国产81旧版| 亚洲欧美在线一区| 国产视频久久久久久| 免费看一区二区三区| 欧美日韩高清不卡| 男人操女人免费软件| 国产亚av手机在线观看| 亚洲男女毛片无遮挡| 亚洲欧美影院| 国产高清在线| 久久久美女艺术照精彩视频福利播放| 国产欧美丝袜| 亚洲欧美另类视频| 国产精品一区二区果冻传媒| 成人妇女淫片aaaa视频| 中日韩av在线| 日本不卡在线视频| 国产97人人超碰caoprom| 亚洲国产成人精品激情在线| 国内一区二区三区| 欧美激情三级免费| 国产一级av毛片| 狠狠88综合久久久久综合网| 久久99精品久久久久久琪琪| 婷婷在线精品视频| 中文字幕日韩一区二区不卡| 久久夜色精品国产亚洲aⅴ| 你懂得在线观看| 国产精品久久久久一区二区三区厕所| 综合网中文字幕| 美国精品一区二区| 97偷自拍亚洲综合二区| 日韩中文字幕免费视频| 制服丨自拍丨欧美丨动漫丨| 国产精品成人一区二区不卡| 久久视频在线视频| 男女羞羞免费视频| 亚洲欧洲日本mm| 全球成人中文在线| 在线播放国产一区| 国产高清无密码一区二区三区| 产国精品偷在线| 欧美一区二区黄片| 91看片淫黄大片一级在线观看| 欧美一卡2卡3卡4卡无卡免费观看水多多 | 欧美人妖在线观看| 亚洲欧美日韩高清| 欧美乱大交做爰xxxⅹ小说| 99成人超碰| 久久久久国产精品免费| 亚洲天堂一区在线观看| 欧美aaaaaa午夜精品| 成人性生交大片免费观看嘿嘿视频| 精品久久国产视频| 91麻豆蜜桃一区二区三区| 日本黑人久久| 宅男网站在线免费观看| 精品magnet| 国产精品区在线| 爱爱精品视频| 一区二区三区动漫| 欧美日韩人妻精品一区二区三区 | 中文久久乱码一区二区| 91看片淫黄大片91| 暖暖成人免费视频| 欧美一级在线视频| 色欲av无码一区二区三区| 欧美国产一区二区三区激情无套| 欧美黑人一级爽快片淫片高清| av大片在线免费观看| 激情综合色丁香一区二区| 精品视频免费观看| 国产精品扒开做爽爽爽的视频| 欧美日韩精品在线播放| 成人免费黄色av| 国产精品亚洲人成在99www| 两个人的视频www国产精品| 久久久久99精品成人片三人毛片| 国产乱码一区二区三区| 久久一区二区三区av| 99自拍视频在线观看| 色八戒一区二区三区| 9.1在线观看免费| 爽成人777777婷婷| 日本韩国欧美精品大片卡二| www.成人精品| 国产精品久久久久毛片软件| 啊啊啊一区二区| 99re91这里只有精品| 色黄久久久久久| 国产精品免费精品一区| 成人免费毛片aaaaa**| 天天做天天爱天天高潮| 国产一区一一区高清不卡| 亚洲另类xxxx| 亚洲一区 视频| 国产成人综合视频| 中文字幕日韩精品一区二区| 天天综合网站| 日韩大片免费观看视频播放| 国产亚洲精品成人| 国产成人精品一区二区三区网站观看| 中文字幕一区二区三区5566| 日韩制服一区| 亚洲最新av在线网站| 草久视频在线观看| 国产91在线|亚洲| 亚洲色图都市激情| 亚洲欧美在线人成swag| 国产一区二区三区中文| 国产一级片av| 2020国产精品自拍| 97av视频在线观看| 在线观看欧美理论a影院| 欧美一级淫片aaaaaaa视频| 无码国产伦一区二区三区视频| 亚洲国产精品视频| 精品国产免费久久久久久婷婷| 欧美精品成人| 国产高清自拍一区| www视频在线观看| 亚洲精品久久久久中文字幕欢迎你 | 欧美福利视频在线| 亚洲国产精品18久久久久久| 洋洋av久久久久久久一区| 不许穿内裤随时挨c调教h苏绵| 激情文学一区| 精品一区二区日本| 成人做爰视频www网站小优视频| 亚洲无av在线中文字幕| 中文在线观看av| 国产精品国产成人国产三级| 久久精品国产99久久99久久久| 欧美精品18| 精品国产免费一区二区三区| av高清不卡| 一二美女精品欧洲| 国产精品亚洲lv粉色| 亚洲视频一二三| 亚洲一区二区在线免费| 视频一区视频二区中文| 欧美爱爱视频网站| 荡女精品导航| 国产成人一区二| 免费大片在线观看www| 欧美大片拔萝卜| 九九精品免费视频| 中文字幕一区二区三中文字幕| 熟妇女人妻丰满少妇中文字幕 | 国产麻花豆剧传媒精品mv在线| 精品国产一区二区三区噜噜噜 | 国产精品欧美大片| 国产目拍亚洲精品99久久精品 | 国产高清自产拍av在线| 亚洲美女精品久久| 亚洲午夜无码久久久久| 亚洲女同一区二区| 国产精品无码网站| 狠狠久久亚洲欧美| 国产精品秘入口18禁麻豆免会员| 日韩在线欧美| 久久国产精品亚洲va麻豆| 国产91在线精品| 久久久噜噜噜久久久| 国产一级免费在线观看| 日韩写真欧美这视频| 亚洲自拍一区在线观看| 日韩理论片在线| 日本一区二区三区网站| 精品一区二区三区视频| 日韩欧美一区三区| 偷偷www综合久久久久久久| 精品在线观看一区二区| 国内精品视频| 日韩av快播网址| 青草影视电视剧免费播放在线观看| 亚洲女人天堂av| 午夜精品无码一区二区三区| 欧美自拍偷拍一区| 久久久久久久久影院| 亚洲精品久久嫩草网站秘色| 中文字幕网站在线观看| 成人精品一区二区三区四区 | 日韩女优一区二区| 久久精品亚洲精品国产欧美| 国产乱淫av麻豆国产免费| 奇米色一区二区| 国产精品一区二区免费在线观看| 中文字幕午夜精品一区二区三区| 亚洲高清视频一区二区| 亚洲欧洲av| 国产成人精品日本亚洲11| 香蕉久久一区| 国产精品美女视频网站| 一二三四视频在线中文| 欧美精品久久久久久久久| 国产精品剧情一区二区在线观看| 在线观看不卡av| 欧美孕妇孕交xxⅹ孕妇交| 欧美精品一区二区高清在线观看| av综合在线观看| 欧美日韩不卡一区二区| 久久这里只有精品9| 日本精品视频一区二区| 黄色片网站在线免费观看| 精品电影在线观看| 亚洲黄色一区二区| 偷拍亚洲欧洲综合| av黄色在线看| 狠狠干狠狠久久| 国产美女激情视频| 欧美日韩一区二区三区在线免费观看| 久久高清免费视频| 亚洲成人av免费| 日本少妇激情舌吻| 欧美日韩亚洲视频| 日本免费在线观看视频| 日韩欧美视频一区二区三区| www.毛片.com| 色婷婷精品久久二区二区蜜臂av | 亚洲综合自拍一区| 日韩欧美一级| 国产成人免费观看| 久久综合社区| 久久精品国产精品青草色艺| 丝袜久久网站| 欧美日本亚洲| japanese国产精品| 一区二区三区不卡在线| 婷婷综合在线| 久久综合久久网| 国产精品亚洲综合色区韩国| 精品久久久久av| 欧美aⅴ一区二区三区视频| 国产一区二区在线观看免费视频| 国产乱人伦精品一区二区在线观看| 亚洲911精品成人18网站| 成人免费视频一区| 精品人妻无码一区| 亚洲视频 欧洲视频| 国产无遮挡裸体免费视频| 欧美日韩亚洲视频| 中文字幕一区二区三区波野结 | 黄色片网站免费在线观看| 亚洲精品久久久久国产| eeuss影院在线观看| 欧美成人全部免费| 国产传媒在线观看| 国产精品视频不卡| 97色成人综合网站| 欧美视频观看一区| 亚洲一区 二区 三区| 国产女大学生av| 蜜桃视频在线观看一区| 中文字幕永久免费| 国产欧美日韩另类视频免费观看| 翔田千里88av中文字幕| 欧美视频13p| 国产精品呻吟久久| 精品无人区太爽高潮在线播放| 香蕉视频免费在线播放| 午夜精品一区二区三区在线播放 | 国产婷婷在线观看| 欧美激情综合网| 国产精品suv一区二区69| 中文字幕影音在线| 国产精品久久综合av爱欲tv| 精品久久免费| 欧美在线激情| 亚洲三级电影在线观看| 老司机久久精品| wwwwxxxxx欧美| 久久久久亚洲av成人片| 欧美日韩中字一区| 日本高清视频免费看| 中文字幕九色91在线| 国产调教在线| 亚洲bt天天射| 日韩欧美网站| 国产激情在线观看视频| 国产福利一区二区三区在线视频| 精品国产aaa| 一本一道波多野结衣一区二区| 亚洲精品国偷拍自产在线观看蜜桃| 中文字幕日韩在线观看| 美女搞黄视频在线观看| 成人三级视频在线观看一区二区| 成人3d动漫在线观看| 久久婷婷五月综合色国产香蕉| 懂色av中文字幕一区二区三区| 性色国产成人久久久精品| 91久久久免费一区二区| 五月天激情婷婷| 久久久久这里只有精品| 麻豆一区在线| 国产四区在线观看| 久久精品国产99久久6| 中文字幕网站在线观看| 欧美性猛交xxxx免费看久久久| 囯产精品一品二区三区| 欧美精品日韩www.p站| 国产精品va视频| 亚洲一区二区三区涩| 日韩高清在线不卡| 小早川怜子久久精品中文字幕| 精品人伦一区二区三区蜜桃网站| 韩国av在线免费观看| 久久99热这里只有精品国产| 国产精品va视频| 桥本有菜av在线| 国产真实精品久久二三区| 福利视频第一页| 欧美日韩一区高清| 秋霞午夜理伦电影在线观看| 国产精品jvid在线观看蜜臀| 精品产国自在拍| 黄色免费网址大全| 国产精品免费看片| 国产又色又爽又黄又免费| 久久手机精品视频| 久久精品一级| 日韩精品一区二区免费| 成人激情校园春色| 天堂在线免费观看视频| 亚洲色在线视频| 精品三级在线| 免费观看国产视频在线| 国产不卡一区视频| 日韩欧美三级在线观看| 精品无码久久久久久国产| av高清一区| 亚洲日本精品国产第一区| 国产在线精品一区二区不卡了| 欧美成人一区二区三区高清| 亚洲黄色片网站| 国产成人精品一区二三区在线观看| 亚洲国产精品www| 久久精品久久99精品久久| 黑人巨大精品一区二区在线| 亚洲精品国产成人| 精品久久在线| 91精品国产91久久久久麻豆 主演| 91免费看`日韩一区二区| 岛国av中文字幕| 久久韩国免费视频| 老汉色老汉首页av亚洲| 91在线视频观看免费| 亚洲视频一二三| 日本一区高清| 亚洲a成v人在线观看| 99av国产精品欲麻豆| 网爆门在线观看| 精品国产免费人成在线观看| 欧美大片免费高清观看| 中国一级大黄大黄大色毛片| 91在线观看下载| 国产三级第一页| 国产ts一区二区| 午夜亚洲福利| 波多野结衣a v在线|