<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ### 看東西要仔細,關鍵的地方一個字不看清楚就會意淫差之千里 sea.js 的 CMD 推崇 as lazy as possible,并不是懶加載,而是懶執行(懶解析) > 注意我這里說的是執行(真正運行define中的代碼)模塊, 而非加載(load文件)模塊. 模塊的加載都是并行的, 沒有區別, 區別在于執行模塊的時機, 或者說是解析. script加載后立即運行是沒錯,只不過是運行define,而不是運行define內的代碼,請注意這點。 之前沒看仔細,誤讀了sea.js的意思,還以為真是懶加載文件的,就和懶加載圖片是一樣的,真是自己一廂情愿的意淫的,呵呵,想多了。 * * * * * ### sea.js 可以看到b.js中的代碼此時才執行。這樣就真正實現了“就近書寫,延遲執行“,不可謂不優雅。 如果你一定要挑出一點不爽的話,那就是b.js的預先下載了。你可能不太想一開始就下載好所有的資源,希望像requirejs那樣,等點擊按鈕的時候再開始下載b.js。本著兼容并包的思想,seajs也實現了這一功能,提供require.async API,在點擊按鈕的時候,只需這樣寫: JavaScript var b = require.async('b'); b.hello(); var b = require.async('b'); b.hello(); b.js就不會在一開始的時候就加載了。這個API可以說是簡單漂亮。 引自:[JavaScript 模塊化歷程 · Issue #6 · wqb2017/yctabs](https://github.com/wqb2017/yctabs/issues/6) ### 參考 [SeaJS 所為何](http://cyj.me/why-seajs/zh/) - [seajs與requirejs區別](http://zccst.iteye.com/blog/2084545) - [第三課:sea.js模塊加載原理](http://www.cnblogs.com/chaojidan/p/4123980.html) - [seajs的CMD模式的優勢以及使用 - chaojidan - 博客園](http://www.cnblogs.com/chaojidan/p/4147925.html) - [JS模塊加載器加載原理是怎么樣的? - 知乎](https://www.zhihu.com/question/21157540) - [Sea.js作者發布微博: 應該給 Sea.js 和 KISSY 也樹一塊墓碑了。 為啥啊?過時了嗎?](https://www.zhihu.com/question/34756861) - [LABjs、RequireJS、SeaJS 哪個最好用?為什么? - 知乎](https://www.zhihu.com/question/20342350) > 大部分的頁面不是Single Page Application,不需要依靠腳本來初始化頁面。服務器返回的頁面是立即可用的。也就是單頁往往服務器返回的都不是立即可用的。請注意,體會這個用詞。 - [讓我們再聊聊瀏覽器資源加載優化](http://www.infoq.com/cn/articles/browser-resource-loading-optimization) [Hello Sea.js 深入淺出分析Sea.js模塊機制](http://island205.github.io/HelloSea.js/) ### 擴展 >[info] 上文說過SeaJS會在html頁面打開時通過靜態分析,一次性下載所有需要的js文件,如果想要某個js文件在用到時才下載,可以使用require.async。 原來你說的懶并不是真正的懶加載啊? ```text 我之前還一直糾結: 到底是異步加載文件還是怎么的啊,都在繞著彎子,只談想讓別人知道的,而對于別人想知道的,文件加載方式,避而不談,諱莫如深,避重就輕,還說什么沒有明顯的bug ``` 如果以服務端的模式去思考前端的模塊化,文件加載,那是行不通的,因為服務端不用考慮網絡IO,并且JS也不想PHP,并沒有PHP那樣可以在腳本執行的過程中直接引入其他文件的特性,所以以服務端的思維來看前端的模塊化,就是不正確的。并且如果真的懶加載文件,那么頁面解析執行的過程中,不斷的請求加載JS文件,頁面就會卡卡卡的,這樣的用戶體驗誰受得了,所以直接拿S端的開發經驗來給B端使用,這本身就是一件非常愚蠢的事情。(所以別老揪著懶加載這個問題不放,讓自己糾結了) 瀏覽器端無法做到和服務端一樣的依賴加載模式,因為瀏覽器端和服務端工作的方式不同 依賴都是以根為起點,在服務端,先加載根,遇到依賴的葉子,直接加載葉子。 而在瀏覽器端,還是以根為起點,如果先加載根,再遇到葉子加載葉子就行不通了,因為瀏覽器端的工作模式不像服務端,js也不是PHP,所以要處理好依賴關系,實現類似的加載,在瀏覽器端就必須首先分析出依賴樹,然后從最末的葉子端依次往根的方向加載才行,也就是和服務端的加載順序完全相反。 既然這樣,那么瀏覽器端也就無法做到跟服務端一樣的懶加載了,所以服務端的思維拿過來是夠不能直接套用的。 其實sea.js也有真正的懶加載,`require.async()` 用到才加載,不過實際應用中不會大規模使用這種方式,而是更偏向于一次性靜態分析加載所有的文件,因為瀏覽器環境的特性決定了越少的http請求越好,不能過度依賴網絡IO,并且SPM依賴打包分析的工具也是將靜態分析的結果一次性打包加載,關于這個問題我們已經在 [技術/思想的斗爭](http://www.hmoore.net/xiak/quanduan/279198)里面討論過了。 本來瀏覽器端的依賴關系對加載順序很重要,[script標簽](http://www.hmoore.net/xiak/quanduan/278616) 的順序,因為JS沒有PHP運行時動態加載包含文件的特性,所以這個加載順序是很嚴格的,沒嚴格按照依賴順序加載就會出錯的。比如依賴JQ的插件必須放在JQ的下面。 現在使用模塊化工具后,js文件按照模塊化的格式書寫,定義在define函數里面,此時依賴關系完全的交給框架來處理了,所以忘了之前的標簽順序關系吧,使用框架就好了。 所以前端要實現模塊化,依賴加載,依賴管理,加載順序,就不是那么容易了,不是僅僅只處理好文件的加載,網絡的IO就好了那么簡單的。 這就是模塊化規范,框架需要做的事了。 update:2017-8-4 18:33:18
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看