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

基于Require.js使用方法(總結(jié))

 更新時(shí)間:2017年10月26日 08:40:26   作者:Dragonir  
下面小編就為大家?guī)?lái)一篇基于Require.js使用方法(總結(jié))。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

一、為什么要使用require.js

首先一個(gè)頁(yè)面如果在加載多個(gè)js文件的時(shí)候,瀏覽器會(huì)停止網(wǎng)頁(yè)渲染,加載文件越多,網(wǎng)頁(yè)失去響應(yīng)的時(shí)間就會(huì)越長(zhǎng);其次,由于js文件之間存在依賴(lài)關(guān)系,因此必須嚴(yán)格保證加載順序,當(dāng)依賴(lài)關(guān)系很復(fù)雜的時(shí)候,代碼的編寫(xiě)和維護(hù)都會(huì)變得困難。

require.js,就是為了解決這兩個(gè)問(wèn)題:

1. 實(shí)現(xiàn)js文件的異步加載,避免網(wǎng)頁(yè)失去響應(yīng);
2. 管理模塊之間的依賴(lài)性,便于代碼的編寫(xiě)和維護(hù)。

二、require.js的加載

第一步,去官網(wǎng)下載最新版本,直接放到頁(yè)面進(jìn)行加載

<script src="js/require.js"></script>

加載這個(gè)文件可能會(huì)導(dǎo)致網(wǎng)頁(yè)失去響應(yīng),可以將它放到頁(yè)面的底部加載,也可以這樣寫(xiě)

<script src="js/require.js" defer async="true" ></script>

async屬性表明這個(gè)文件需要異步加載,避免網(wǎng)頁(yè)失去響應(yīng)。IE不支持這個(gè)屬性,只支持defer,所以把defer也寫(xiě)上。

加載require.js以后,下一步就要加載我們自己的代碼了,也就是入口,可以叫主模塊,如果文件名叫main.js,寫(xiě)成下面這樣就可以了:

<script src="js/require.js" data-main="js/main"></script>  .js后綴可以省略 


三、主模塊的寫(xiě)法

如果主模塊依賴(lài)于jQuery可以這樣寫(xiě)

require(['jquery'], function ($){ 
   alert($); 
}); 

四、require.config()方法

require.config({ 
  paths: { 
    "jquery": "jquery.min", 
    "underscore": "underscore.min", 
    "backbone": "backbone.min"
  } 
}); 

上面的代碼給出了三個(gè)模塊的文件名,路徑默認(rèn)與main.js在同一個(gè)目錄(js子目錄)。如果這些模塊在其他目錄,比如js/lib目錄,則有兩種寫(xiě)法。

• 一種是逐一指定路徑

require.config({ 
  paths: { 
    "jquery": "lib/jquery.min", 
    "underscore": "lib/underscore.min", 
    "backbone": "lib/backbone.min"
  } 
}); 

• 另一種則是直接改變基目錄(baseUrl)。

require.config({ 
  baseUrl: "js/lib", 
  paths: { 
    "jquery": "jquery.min", 
    "underscor: "underscore.min", 
    "backbone": "backbone.min" 
  } 
}); 

• 如果某個(gè)模塊在另一臺(tái)主機(jī)上,也可以直接指定它的網(wǎng)址,比如

require.config({ 
  paths: { 
    "jquery": "https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min"
  } 
}); 

五、AMD模塊的寫(xiě)法

require.js加載的模塊,采用AMD規(guī)范。也就是說(shuō),模塊必須按照AMD的規(guī)定來(lái)寫(xiě)。

具體來(lái)說(shuō),就是模塊必須采用特定的define()函數(shù)來(lái)定義。如果一個(gè)模塊不依賴(lài)其他模塊,那么可以直接定義在define()函數(shù)之中。

// math.js 
define(function (){ 
  var add = function (x,y){ 
    return x+y; 
  }; 
  return { 
    add: add 
  }; 
}); 

加載方法如下:

 // main.js 
require(['math'], function (math){ 
  alert(math.add(1,1)); 
}); 

如果這個(gè)模塊還依賴(lài)其他模塊,那么define()函數(shù)的第一個(gè)參數(shù),必須是一個(gè)數(shù)組,指明該模塊的依賴(lài)性。

define(['myLib'], function(myLib){ 
  function foo(){ 
    myLib.doSomething(); 
  } 
  return {  //返回模塊中的函數(shù) 
    foo : foo 
  }; 
}); 

當(dāng)require()函數(shù)加載上面這個(gè)模塊的時(shí)候,就會(huì)先加載myLib.js文件。

六、加載非規(guī)范的模塊(shim的使用方式)

// app.js 
 function sayHello(name){ 
  alert('Hi '+name); 
} 
// main.js 
require.config({ 
  shim: { 
    'app': { //這個(gè)鍵名為要載入的目標(biāo)文件的文件名,不能隨便命名。 
      exports: 'sayHello' //exports的值為my.js提供的 對(duì)外接口的名稱(chēng) 
    } 
  } 
}); 
 
require(['app'], function(sayHello) { 
 alert(sayHello()) 
}) 

導(dǎo)出一個(gè)函數(shù),意味著我們得到了一個(gè)javaScript類(lèi)

但是如果在my.js中寫(xiě)了很多function,整合成一個(gè)function有點(diǎn)麻煩,想直接導(dǎo)出?方法如下:

// app.js 
function sayHi(name){ 
 alert('Hi '+name); 
} 
function sayHello(name){ 
 alert('Hiello '+name); 
}
// main.js 
  require.config({ 
    shim: { 
      app: { 
        init: function() { //這里使用init將2個(gè)接口返回 
          return { 
            sayHi: sayHi, 
            sayHello: sayHello 
          } 
        } 
      } 
    } 
  }); 
 
  require(['app'], function(a) { 
    a.sayHi('zhangsan'); 
    a.sayHello('lisi'); 
  }); 

shim的有序?qū)?br />

require.config({ 
 
 shim: { 
    'jquery.ui.core': ['jquery'], //表示在jquery導(dǎo)入之后導(dǎo)入 
    'jquery.ui.widget': ['jquery'], 
    'jquery.ui.mouse': ['jquery'], 
    'jquery.ui.slider':['jquery'] 
   }, 
 paths : {  
  jquery : 'jquery-2.1.1/jquery',  
  domReady : 'require-2.1.11/domReady',  
  'jquery.ui.core' : 'jquery-ui-1.10.4/development-bundle/ui/jquery.ui.core',  
  'jquery.ui.widget' : 'jquery-ui-1.10.4/development-bundle/ui/jquery.ui.widget',  
  'jquery.ui.mouse' : 'jquery-ui-1.10.4/development-bundle/ui/jquery.ui.mouse',  
  'jquery.ui.slider' : 'jquery-ui-1.10.4/development-bundle/ui/jquery.ui.slider' 
  } 
  });  
 
  require(['jquery', 'domReady','jquery.ui.core','jquery.ui.widget','jquery.ui.mouse','jquery.ui.slider'], function($) {    
   $("#slider" ).slider({    
    value:0,   
    min: 0,   
    max: 4,   
    step: 1,   
    slide: function( event, ui ) {}  
     });  
   }); 

以上這篇基于Require.js使用方法(總結(jié))就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論