乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      SeaJS入門教程系列之使用SeaJS(二)

       昵稱36691332 2016-09-19

      下載及安裝

      要在項(xiàng)目中使用SeaJS,你所有需要做的準(zhǔn)備工作就是下載sea.js然后放到你項(xiàng)目的某個(gè)位置。
      SeaJS項(xiàng)目目前托管在GitHub上,主頁為 https://github.com/seajs/seajs/ ??梢缘狡鋑it庫的build目錄下下載sea.js(已壓縮)或sea-debug.js(未壓縮)。
      下載完成后放到項(xiàng)目的相應(yīng)位置,然后在頁面中通過



      這種寫法會(huì)令html更加簡潔。

      require

      require是SeaJS主要的模塊加載方法,當(dāng)在一個(gè)模塊中需要用到其它模塊時(shí)一般用require加載:

      var m = require('/path/to/module/file');

      這里簡要介紹一下SeaJS的自動(dòng)加載機(jī)制。上文說過,使用SeaJS后html只要包含sea.js即可,那么其它js文件是如何加載進(jìn)來的呢?SeaJS會(huì)首先下載入口模塊,然后順著入口模塊使用正則表達(dá)式匹配代碼中所有的require,再根據(jù)require中的文件路徑標(biāo)識(shí)下載相應(yīng)的js文件,對(duì)下載來的js文件再迭代進(jìn)行類似操作。整個(gè)過程類似圖的遍歷操作(因?yàn)榭赡艽嬖诮徊嫜h(huán)依賴所以整個(gè)依賴數(shù)據(jù)結(jié)構(gòu)是一個(gè)圖而不是樹)。
      明白了上面這一點(diǎn),下面的規(guī)則就很好理解了:
      傳給require的路徑標(biāo)識(shí)必須是字符串字面量,不能是表達(dá)式,如下面使用require的方法是錯(cuò)誤的:
      require('module' + '1');
      require('Module'.toLowerCase());

      這都會(huì)造成SeaJS無法進(jìn)行正確的正則匹配以下載相應(yīng)的js文件。

      require.async

      上文說過SeaJS會(huì)在html頁面打開時(shí)通過靜態(tài)分析一次性記載所有需要的js文件,如果想要某個(gè)js文件在用到時(shí)才下載,可以使用require.async:

      require.async('/path/to/module/file', function(m) {
          //code of callback...
      });

      這樣只有在用到這個(gè)模塊時(shí),對(duì)應(yīng)的js文件才會(huì)被下載,也就實(shí)現(xiàn)了JavaScript代碼的按需加載。

      SeaJS的全局配置
      SeaJS提供了一個(gè)seajs.config方法可以設(shè)置全局配置,接收一個(gè)表示全局配置的配置對(duì)象。具體使用方法如下:

      seajs.config({
          base: 'path/to/jslib/',
          alias: {
            'app': 'path/to/app/'
          },
          charset: 'utf-8',
          timeout: 20000,
          debug: false
      });

      其中base表示基址尋址時(shí)的基址路徑。例如base設(shè)置為 http:///js/3-party/ ,則:
      var $ = require('jquery');

      會(huì)載入 http:///js/3-party/jquery.js 。
      alias可以對(duì)較長的常用路徑設(shè)置縮寫。
      charset表示下載js時(shí)script標(biāo)簽的charset屬性。
      timeout表示下載文件的最大時(shí)長,以毫秒為單位。
      debug表示是否工作在調(diào)試模式下。

      SeaJS如何與現(xiàn)有JS庫配合使用

      要將現(xiàn)有JS庫如jQuery與SeaJS一起使用,只需根據(jù)SeaJS的的模塊定義規(guī)則對(duì)現(xiàn)有庫進(jìn)行一個(gè)封裝。例如,下面是對(duì)jQuery的封裝方法:

      define(function() {
       
      //{{{jQuery原有代碼開始
      /*! 
       * jQuery JavaScript Library v1.6.1
       * http:///
       *
       * Copyright 2011, John Resig
       * Dual licensed under the MIT or GPL Version 2 licenses.
       * http:///license
       *
       * Includes Sizzle.js
       * http:///
       * Copyright 2011, The Dojo Foundation
       * Released under the MIT, BSD, and GPL Licenses.
       *
       * Date: Thu May 12 15:04:36 2011 -0400
       */
      //...
      //}}}jQuery原有代碼結(jié)束
       
      return $.noConflict();
      });


      SeaJS項(xiàng)目的打包部署

      SeaJS本來集成了一個(gè)打包部署工具spm,后來作者為了更KISS一點(diǎn),將spm拆出了SeaJS而成為了一個(gè)單獨(dú)的項(xiàng)目。spm的核心思想是將所有模塊的代碼都合并壓縮后并入入口模塊,由于SeaJS本身的特性,html不需要做任何改動(dòng)就可以很方便的在開發(fā)環(huán)境和生產(chǎn)環(huán)境間切換。但是由于spm目前并沒有發(fā)布正式版本,所以本文不打算詳細(xì)介紹,有興趣的朋友可以參看其github項(xiàng)目主頁 https://github.com/seajs/spm/。
      其實(shí),由于每個(gè)項(xiàng)目所用的JS合并和壓縮工具不盡相同,所以spm可能并不是完全適合每個(gè)項(xiàng)目。在了解了SeaJS原理后,完全可以自己寫一個(gè)符合自己項(xiàng)目特征的合并打包腳本。


       

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多