欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(guān)于javascript模塊加載技術(shù)的一些思考

 更新時(shí)間:2014年11月28日 17:19:17   投稿:mdxy-dxy  
這篇文章主要介紹了關(guān)于javascript模塊加載技術(shù)的一些思考 ,需要的朋友可以參考下

前不久有個(gè)網(wǎng)友問我在前端使用requireJs和seajs的問題,我當(dāng)時(shí)問他你們公司以前有沒有自己編寫的javascript庫(kù),或者javascript框架,他的回答是什么都沒有,他只是聽說像requirejs和seajs是新東西新技術(shù),很有價(jià)值所以想用它。

  這位網(wǎng)友的問題引起了我對(duì)javascript模塊加載技術(shù)的思考,上篇文章我給出了自己寫的一個(gè)javascript庫(kù)的基本結(jié)構(gòu),其實(shí)寫這篇文章的一個(gè)起因就是因?yàn)槲蚁胧褂胷equirejs或者seajs這樣的技術(shù)來重新設(shè)計(jì)我寫javascript庫(kù)的基本模型,當(dāng)我深入了解這個(gè)技術(shù)后,我發(fā)現(xiàn)使用模塊加載系統(tǒng)來解決把javascript庫(kù)里通用代碼和業(yè)務(wù)代碼解耦的問題,是不正確的,模塊加載系統(tǒng)的作用范圍是解決不同javascript庫(kù)之間的依賴問題,而不是幫助你去如何開發(fā)一個(gè)javascript庫(kù)。

  那么什么是javascript的模塊加載系統(tǒng)呢?

  模塊系統(tǒng)主要為了解決不同javascript庫(kù)里操作對(duì)象的命名沖突問題以及不同javascript庫(kù)之間依賴的問題,模塊加載系統(tǒng)是針對(duì)大型web前端應(yīng)用或者說是巨型的web前端應(yīng)用。

  一般巨型的web前端應(yīng)用頁(yè)面里,該頁(yè)面的功能非常豐富,業(yè)務(wù)非常龐雜,而且隨著時(shí)間推移,頁(yè)面的功能經(jīng)常會(huì)發(fā)生變遷,所以導(dǎo)致前端開發(fā)人員經(jīng)常要開發(fā)出針對(duì)新功能的功能模塊,但是實(shí)際業(yè)務(wù)里各個(gè)功能模塊之間的功能還有可能相互滲透,相互依賴的,關(guān)系錯(cuò)綜復(fù)雜,當(dāng)頁(yè)面復(fù)雜后,各個(gè)前端庫(kù)之間的關(guān)系就出現(xiàn)很難管理和控制的問題,這個(gè)時(shí)候模塊加載系統(tǒng)才會(huì)派上用場(chǎng)。

  對(duì)于大多數(shù)程序員而言,能獨(dú)立承擔(dān)這么大web前端應(yīng)用的機(jī)會(huì)并不是太多,而開發(fā)中小型web前端應(yīng)用的機(jī)會(huì)會(huì)多的多,例如企業(yè)級(jí)的web項(xiàng)目,這樣的項(xiàng)目使用到的javascript庫(kù)的種類很少,各個(gè)庫(kù)的依賴關(guān)系很好控制,是沒有必要引入什么模塊管理系統(tǒng)的必要,就算很多中小型互聯(lián)網(wǎng)公司的網(wǎng)頁(yè),估計(jì)也不會(huì)比企業(yè)級(jí)web應(yīng)用前端那么復(fù)雜,所以它的模塊之間或者說javascript庫(kù)之間的關(guān)系很好管理的。其實(shí)像上面這些中小應(yīng)用都是針對(duì)某些或某一個(gè)具體場(chǎng)景進(jìn)行的,因此我個(gè)人覺得面對(duì)這樣的web前端項(xiàng)目我們最后能自己形成一個(gè)獨(dú)立的javascript庫(kù),這個(gè)庫(kù)的特點(diǎn)應(yīng)該和jQuery這種類型的庫(kù)類似:一個(gè)主庫(kù)加上若干個(gè)插件庫(kù)的模式,主庫(kù)的目的是解決通用性的問題,它應(yīng)該是可以進(jìn)行復(fù)用和遷移的,而插件庫(kù)的目的往往和業(yè)務(wù)代碼相關(guān)的,不過為了區(qū)別主庫(kù)和插件庫(kù)的作用域問題,所以我在庫(kù)里加上了命名空間的功能。

  Javascript模塊加載技術(shù)和hadoop的技術(shù)有些相同點(diǎn),那就是它們都是針對(duì)超大型系統(tǒng)的技術(shù),它們只有在一定條件下才能發(fā)揮它們的作用,所以這些技術(shù)都是從大型互聯(lián)網(wǎng)公司推出出來,因?yàn)榇笮突ヂ?lián)網(wǎng)公司隨著應(yīng)用變大變復(fù)雜后必須要去解決的問題,當(dāng)你系統(tǒng)還是處于起步階段,這些技術(shù)的運(yùn)用往往要謹(jǐn)慎,我們應(yīng)該找出最簡(jiǎn)單最有效的方法解決我們實(shí)際問題,如果你覺得這個(gè)系統(tǒng)以后會(huì)越來越大,那么你應(yīng)該保留以后使用這些技術(shù)的接口,如果使用太早了,很有可能當(dāng)系統(tǒng)規(guī)模擴(kuò)大后,你重構(gòu)代碼的代價(jià)會(huì)更高。

  對(duì)于模塊加載系統(tǒng),它最適合的場(chǎng)景是解決大型web前端應(yīng)用模塊之間的解耦的問題,如果我們只要新寫一個(gè)javascript文件就馬上使用模塊加載技術(shù),這個(gè)不是有點(diǎn)濫用技術(shù)的嫌疑了,我們運(yùn)用某個(gè)技術(shù)之前不應(yīng)該只是考慮它怎么用,如何用,應(yīng)該還要想想使用它有沒有價(jià)值的問題。

  最后我想說的是,我覺得中小型web前端應(yīng)用到了生產(chǎn)部署,因?yàn)閖avascript并非最復(fù)雜,所以所有外部javascript文件都打包成一個(gè)javascript外部文件最好,這樣的好處就是減少了http請(qǐng)求個(gè)數(shù),使用模塊加載技術(shù)會(huì)讓你打包文件操作很麻煩,甚至無法做到(像requirejs和seajs的模塊都是以文件為單位的,每個(gè)模塊就是一個(gè)獨(dú)立文件),這和解決減少http目的是相悖的。

相關(guān)文章

  • js關(guān)于命名空間的函數(shù)實(shí)例

    js關(guān)于命名空間的函數(shù)實(shí)例

    這篇文章主要介紹了js關(guān)于命名空間的函數(shù),實(shí)例講述了namespace函數(shù)的使用技巧,需要的朋友可以參考下
    2015-02-02
  • js實(shí)現(xiàn)簡(jiǎn)單的日歷顯示效果函數(shù)示例

    js實(shí)現(xiàn)簡(jiǎn)單的日歷顯示效果函數(shù)示例

    這篇文章主要介紹了js實(shí)現(xiàn)簡(jiǎn)單的日歷顯示效果函數(shù),結(jié)合完整實(shí)例形式分析了JavaScript實(shí)現(xiàn)的日歷功能相關(guān)原理與具體操作技巧,需要的朋友可以參考下
    2019-11-11
  • javascript實(shí)現(xiàn)自定義滾動(dòng)條效果

    javascript實(shí)現(xiàn)自定義滾動(dòng)條效果

    這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)自定義滾動(dòng)條效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • JS控制靜態(tài)頁(yè)面之間傳遞參數(shù)獲取參數(shù)并應(yīng)用的簡(jiǎn)單實(shí)例

    JS控制靜態(tài)頁(yè)面之間傳遞參數(shù)獲取參數(shù)并應(yīng)用的簡(jiǎn)單實(shí)例

    下面小編就為大家?guī)硪黄狫S控制靜態(tài)頁(yè)面之間傳遞參數(shù)獲取參數(shù)并應(yīng)用的簡(jiǎn)單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-08-08
  • js 中 document.createEvent的用法

    js 中 document.createEvent的用法

    用該方法創(chuàng)建了 Event 對(duì)象以后,必須用上表中所示的初始化方法初始化對(duì)象。關(guān)于初始化方法的詳細(xì)信息,請(qǐng)參閱 Event 對(duì)象參考。
    2010-08-08
  • JavaScript實(shí)現(xiàn)跨瀏覽器的添加及刪除事件綁定函數(shù)實(shí)例

    JavaScript實(shí)現(xiàn)跨瀏覽器的添加及刪除事件綁定函數(shù)實(shí)例

    這篇文章主要介紹了JavaScript實(shí)現(xiàn)跨瀏覽器的添加及刪除事件綁定函數(shù),采用純javascript實(shí)現(xiàn)jquery的bind及unbind添加與刪除事件綁定的技巧,具有很好的瀏覽器兼容性,需要的朋友可以參考下
    2015-08-08
  • 微信小程序按鈕巧妙用法

    微信小程序按鈕巧妙用法

    這篇文章主要介紹了微信小程序按鈕巧妙用法,按鈕組件功能比?HTML?中的?button?按鈕豐富,通過?open-type?屬性可以調(diào)用微信提供的各種功能(客服、轉(zhuǎn)發(fā)、獲取用戶授權(quán)、獲取用戶信息等),需要的朋友可以參考下
    2022-12-12
  • JavaScript 中的輸出數(shù)據(jù)多種方式

    JavaScript 中的輸出數(shù)據(jù)多種方式

    在 JavaScript 中,不像 Java 等語(yǔ)言,它沒有任何打印或者輸出方法的,在js中通過使用4種方式來輸出數(shù)據(jù),本文通過實(shí)例代碼給大家詳細(xì)介紹,感興趣的朋友跟隨小編一起看看吧
    2022-03-03
  • javascript實(shí)現(xiàn)智能手環(huán)時(shí)間顯示

    javascript實(shí)現(xiàn)智能手環(huán)時(shí)間顯示

    這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)智能手環(huán)時(shí)間顯示,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • 淺談FastClick 填坑及源碼解析

    淺談FastClick 填坑及源碼解析

    這篇文章主要介紹了淺談FastClick 填坑及源碼解析,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-03-03

最新評(píng)論