精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

亚洲女人天堂视频| 色综合天天综合网天天看片| 91传媒免费看| 久热这里只有精品6| 国产一区二区亚洲| 欧美老肥妇做.爰bbww| 国产免费裸体视频| 电影在线高清| 国产91精品久久久久久久网曝门| 欧美在线视频观看免费网站| 91精品少妇一区二区三区蜜桃臀| 国产一级成人av| 欧美日本韩国一区| 成熟丰满熟妇高潮xxxxx视频| av电影在线观看一区二区三区| 国产精品一二三四| 国产精品老女人视频| 黄色小视频在线免费看| 91麻豆精品国产91久久久平台| 亚洲成人黄色在线观看| 国产精品一区二区小说| 岛国在线视频网站| 亚洲欧美一区二区三区国产精品 | 影音先锋欧美激情| 欧美性受极品xxxx喷水| 亚洲人成无码网站久久99热国产| 在线看av的网址| 91麻豆视频网站| 国产成人看片| 亚洲系列在线观看| 久久深夜福利| 欧美一级淫片丝袜脚交| 青娱乐免费在线视频| 日韩av久操| 亚洲天堂影视av| 三级电影在线看| 国产精品男女| 欧美精品一区二区三区在线 | 久久伊人精品| 欧美久久久久久久久中文字幕| 欧美激情成人网| 久久男人av资源站| 亚洲成a人v欧美综合天堂下载| 91免费视频黄| 精品美女在线观看视频在线观看| 日本一区二区高清| 五月婷婷一区| 99re热久久这里只有精品34| 国产女同互慰高潮91漫画| 久久亚洲免费| 香港一级纯黄大片| 91视频免费播放| 久久99精品久久久久久水蜜桃| 亚洲不卡免费视频| 国产福利精品导航| 国产精品美女黄网| 风流老熟女一区二区三区| 国产精品18久久久久久vr| 亚洲a在线播放| 精品久久久久成人码免费动漫| 国产一区在线观看麻豆| 91精品国产一区二区三区动漫 | 懂色av噜噜一区二区三区av| 99国产视频在线| 亚洲精品一区二区三区新线路| 国产一区二区电影| 国产99在线免费| 手机看片福利在线| 久久久久国产精品麻豆ai换脸| 日本一区二区在线视频| jzzjzzjzz亚洲成熟少妇| 国产精品久久久一区麻豆最新章节| 亚洲国产精品久久久久婷婷老年 | 中文字幕亚洲一区二区av在线| 亚洲一区二区三区精品动漫| 麻豆传媒在线观看| 亚洲一区二区av电影| av免费看网址| 外国成人直播| 制服丝袜在线91| 免费不卡的av| 激情综合网站| 欧美大成色www永久网站婷| 久热这里只有精品在线| 国产亚洲在线观看| 国产日韩亚洲欧美| 午夜精品久久久久久久99| 99re成人在线| 中文字幕久久综合| 爱啪视频在线观看视频免费| 91久久国产最好的精华液| 热久久久久久久久| 欧美a级网站| 日日骚av一区| 日韩久久久久久久久| 日韩制服丝袜先锋影音| 99re在线视频观看| 91精彩视频在线观看| 一区二区三区蜜桃| 日本a√在线观看| 51社区在线成人免费视频| 国产亚洲精品久久久优势| 欧美黑人精品一区二区不卡| 中文在线不卡| 91传媒免费看| 日韩专区在线| 欧美午夜影院在线视频| 最好看的中文字幕| 日本女优一区| 国产91|九色| 国产手机精品视频| 国产欧美精品一区二区三区四区| 日韩一级片免费视频| 久久91视频| 精品亚洲一区二区三区在线播放 | 午夜欧美视频在线观看| 五月天av在线播放| 蜜桃a∨噜噜一区二区三区| 欧美高清无遮挡| 91国产免费视频| 久久精品一区四区| 一区二区传媒有限公司| 一本一道久久a久久| 久久久国产精彩视频美女艺术照福利 | 稀缺小u女呦精品呦| 久久av中文| 91高潮精品免费porn| 国内毛片毛片毛片毛片| 国产精品麻豆久久久| 免费看黄在线看| 欧美日韩黄网站| 久久九九国产精品怡红院| 中文字幕第一页在线播放| 久久噜噜亚洲综合| 亚洲熟妇av日韩熟妇在线| 6080亚洲理论片在线观看| 欧美成人激情图片网| 国产又黄又粗又硬| 国产精品短视频| 一本色道久久亚洲综合精品蜜桃| 国产一区日韩| 国产精品久久婷婷六月丁香| 青梅竹马是消防员在线| 黑人巨大精品欧美一区二区一视频| 在线中文字日产幕| 激情偷拍久久| 国产精品国产三级国产专区53| 欧美videosex性极品hd| 欧美大片国产精品| 久久精品免费av| 国产1区2区3区精品美女| 欧美久久久久久久久久久久久久| 欧美日本三级| 亚洲91精品在线| 无码h黄肉3d动漫在线观看| 精品国产91久久久| 亚洲第一成人网站| 人人超碰91尤物精品国产| 日韩精品不卡| 成人在线日韩| 久久97精品久久久久久久不卡| 亚洲a视频在线| 亚洲18女电影在线观看| 一区二区不卡免费视频| 日精品一区二区| 亚洲乱码一区二区三区三上悠亚| 小说区图片区亚洲| 欧美成年人网站| 少妇精品高潮欲妇又嫩中文字幕 | 波多野结衣乳巨码无在线| 自拍偷拍欧美一区| 国产精品爽黄69天堂a| 黄色av免费在线| 欧美变态tickling挠脚心| 日本一区二区三区四区五区| 国产日韩精品一区二区浪潮av| 九色91popny| 欧美精品91| 看高清中日韩色视频| www.久久.com| 欧美多人爱爱视频网站| 视频一区二区三区在线看免费看| 色老综合老女人久久久| 午夜国产福利一区二区| 99久久国产综合精品女不卡| 中文字幕一区二区三区四区在线视频| 天天天综合网| 九九九九久久久久| 久久不卡日韩美女| 欧美精品18videosex性欧美| 久草在现在线| 日韩一区二区在线观看视频| 圆产精品久久久久久久久久久| 欧美极品aⅴ影院| 制服丝袜av在线| 久久国产精品99久久人人澡| 久久久久久久9| 色狮一区二区三区四区视频| 国产精品中出一区二区三区| 老司机精品视频网| 91av在线免费观看视频| 国产日产一区二区三区| 亚洲欧美在线播放| www.天天干.com| 欧美三级在线播放| 你懂的国产在线| 亚洲精品免费在线播放| 亚洲精品国产精品国自| 菠萝蜜视频在线观看一区| 91女神在线观看| 免费在线观看成人av| 日韩精品综合在线| 天天天综合网| 亚洲午夜精品久久久中文影院av | 最新国产精品久久| 欧美**字幕| 国产精品免费看一区二区三区| 啪啪av大全导航福利综合导航| 日本国产欧美一区二区三区| 不卡av免费观看| 久久综合伊人77777蜜臀| 国产三级电影在线| 精品视频久久久| 天天色综合久久| 精品国产sm最大网站| 国产剧情精品在线| 欧美日韩国产高清一区二区三区| 国产精品久久久久久久久久精爆| 亚洲福中文字幕伊人影院| 粉嫩av性色av蜜臀av网站| 中文字幕巨乱亚洲| 亚洲а∨天堂久久精品2021| wwwwww.欧美系列| 好吊色视频一区二区三区| 国产成人亚洲精品青草天美 | 92国产精品观看| 欧美做受高潮中文字幕| 高清国产一区二区| 美女被爆操网站| 国产精品伊人色| 国产资源中文字幕| 国产麻豆一精品一av一免费| 999久久久精品视频| 激情小说亚洲一区| 亚洲天堂一区二区在线观看| 精品中文字幕一区二区小辣椒| 亚洲精品性视频| 激情久久五月天| av亚洲天堂网| 国产成人自拍网| 岛国精品一区二区三区| k8久久久一区二区三区 | 一本色道久久亚洲综合精品蜜桃| 日本不卡一区二区三区| 免费精品99久久国产综合精品应用| 老鸭窝一区二区久久精品| 中文字幕日韩综合| 国产精品中文字幕一区二区三区| 中国男女全黄大片| 9久草视频在线视频精品| 不卡一区二区在线观看| 久久久久久9999| 国产又粗又长又黄的视频| 亚洲欧美自拍偷拍| 久久久全国免费视频| 懂色av一区二区三区| 波多野结衣mp4| 在线不卡中文字幕播放| 亚洲精品一区二区三区不卡| 日韩乱码在线视频| 日本免费中文字幕在线| 欧美激情高清视频| 中文在线资源| 成人国产在线视频| 色妞ww精品视频7777| 精品一区二区不卡| 日本在线电影一区二区三区| www婷婷av久久久影片| 夜夜嗨网站十八久久| 一区二区三区国产免费| 国产精品996| 一级做a爰片毛片| 国产精品乱人伦| 亚洲国产精一区二区三区性色| 日韩欧美中文字幕在线观看| 一区二区三区免费在线| 亚洲福利在线看| 福利片在线看| 欧美国产日韩视频| 欧美色片在线观看| 国产高清自拍一区| 国产欧美日韩在线观看视频| 青草全福视在线| 久热精品视频| 日本黄色大片在线观看| 久久精品亚洲精品国产欧美 | 91在线视频免费| 视频一区在线观看| 久久综合亚洲精品| 日本在线不卡视频| 精品视频站长推荐| 1024成人网| 青青国产在线视频| 亚洲国产欧美精品| 麻豆tv入口在线看| 国产成人a亚洲精品| 午夜久久av| 中文字幕久久综合| 日韩在线播放一区二区| 五十路六十路七十路熟婆| 亚洲欧美日韩国产综合| 久久亚洲精品石原莉奈| 亚洲精品在线电影| 国产精品久久久久久福利| 国产91在线视频| 欧美五码在线| 日韩黄色片在线| 黑人精品欧美一区二区蜜桃| 无码少妇一区二区| 日韩欧美精品免费在线| 亚洲免费视频网| 久久夜色精品国产| 久久福利在线| 视频一区视频二区视频三区高| 国产毛片久久| 毛茸茸free性熟hd| 亚洲资源在线观看| 国产99对白在线播放| 色狠狠av一区二区三区香蕉蜜桃| 97se综合| 欧美日韩精品免费观看视一区二区| 韩国自拍一区| 国产人妻精品午夜福利免费| 亚洲精品视频在线| 国产强被迫伦姧在线观看无码| 色视频www在线播放国产成人 | 成人在线播放av| 国产精品久久久久久久| 自拍偷拍21p| 国产精品久久久久毛片软件| 中文字幕在线观看国产| 在线观看不卡av| 国产精品久久久久77777丨| 亚洲国产精品123| 麻豆91在线播放免费| 四虎影视一区二区| 欧美精品在线视频| 成人区精品一区二区不卡| 92看片淫黄大片欧美看国产片| 久久久久午夜电影| 久久久久久久久久毛片| 亚洲欧美日韩国产另类专区| 国产又粗又猛又爽| 九九热这里只有精品6| 91精品国产乱码久久久竹菊| 日本中文字幕亚洲| 久久久久免费观看| 欧美激情一区二区三区免费观看| 色系列之999| 成人豆花视频| 日韩精品一区二区在线视频| 高清久久久久久| 久久国产视频精品| 中文字幕亚洲欧美日韩在线不卡| 欧美天堂在线| 久久福利一区二区| 99久久精品免费看| 看黄色一级大片| 欧美巨乳美女视频| 日韩黄色网络| 日韩一区二区三区不卡视频| 亚洲免费观看高清完整版在线 | 99久久免费精品| 精人妻无码一区二区三区| www.国产一区| 成人av综合网| 手机看片福利盒子久久| 亚洲青青青在线视频| 亚洲欧洲成人在线| 国产日韩欧美在线| 尤物精品在线| 夜夜春很很躁夜夜躁| 欧美一区中文字幕| 日韩欧美精品一区二区三区| 亚洲欧美99| 不卡高清视频专区| 91超薄丝袜肉丝一区二区| 久久久久中文字幕2018| 狠狠综合久久av一区二区蜜桃| 九色91porny| 色偷偷成人一区二区三区91| 成人免费网址| 欧美日韩成人一区二区三区| 狠狠色狠狠色综合日日91app| 91看片在线播放| 久久久精品一区二区三区| 欧美成人午夜77777| 手机免费看av网站| 一本到不卡精品视频在线观看| 超碰免费公开在线|