小編給大家分享一下Require.js怎么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

在當(dāng)陽等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站制作、網(wǎng)站建設(shè) 網(wǎng)站設(shè)計制作按需策劃,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計,成都全網(wǎng)營銷推廣,外貿(mào)網(wǎng)站建設(shè),當(dāng)陽網(wǎng)站建設(shè)費用合理。
一、為什么要使用require.js
首先一個頁面如果在加載多個js文件的時候,瀏覽器會停止網(wǎng)頁渲染,加載文件越多,網(wǎng)頁失去響應(yīng)的時間就會越長;其次,由于js文件之間存在依賴關(guān)系,因此必須嚴(yán)格保證加載順序,當(dāng)依賴關(guān)系很復(fù)雜的時候,代碼的編寫和維護都會變得困難。
require.js,就是為了解決這兩個問題:
1. 實現(xiàn)js文件的異步加載,避免網(wǎng)頁失去響應(yīng);
2. 管理模塊之間的依賴性,便于代碼的編寫和維護。
二、require.js的加載
第一步,去官網(wǎng)下載最新版本,直接放到頁面進行加載
<script src="js/require.js"></script>
加載這個文件可能會導(dǎo)致網(wǎng)頁失去響應(yīng),可以將它放到頁面的底部加載,也可以這樣寫
<script src="js/require.js" defer async="true" ></script>
async屬性表明這個文件需要異步加載,避免網(wǎng)頁失去響應(yīng)。IE不支持這個屬性,只支持defer,所以把defer也寫上。
加載require.js以后,下一步就要加載我們自己的代碼了,也就是入口,可以叫主模塊,如果文件名叫main.js,寫成下面這樣就可以了:
<script src="js/require.js" data-main="js/main"></script> .js后綴可以省略
三、主模塊的寫法
如果主模塊依賴于jQuery可以這樣寫
require(['jquery'], function ($){
alert($);
});四、require.config()方法
require.config({
paths: {
"jquery": "jquery.min",
"underscore": "underscore.min",
"backbone": "backbone.min"
}
});上面的代碼給出了三個模塊的文件名,路徑默認與main.js在同一個目錄(js子目錄)。如果這些模塊在其他目錄,比如js/lib目錄,則有兩種寫法。
? 一種是逐一指定路徑
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"
}
});? 如果某個模塊在另一臺主機上,也可以直接指定它的網(wǎng)址,比如
require.config({
paths: {
"jquery": "https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min"
}
});五、AMD模塊的寫法
require.js加載的模塊,采用AMD規(guī)范。也就是說,模塊必須按照AMD的規(guī)定來寫。
具體來說,就是模塊必須采用特定的define()函數(shù)來定義。如果一個模塊不依賴其他模塊,那么可以直接定義在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));
});如果這個模塊還依賴其他模塊,那么define()函數(shù)的第一個參數(shù),必須是一個數(shù)組,指明該模塊的依賴性。
define(['myLib'], function(myLib){
function foo(){
myLib.doSomething();
}
return { //返回模塊中的函數(shù)
foo : foo
};
});當(dāng)require()函數(shù)加載上面這個模塊的時候,就會先加載myLib.js文件。
六、加載非規(guī)范的模塊(shim的使用方式)
// app.js
function sayHello(name){
alert('Hi '+name);
}// main.js
require.config({
shim: {
'app': { //這個鍵名為要載入的目標(biāo)文件的文件名,不能隨便命名。
exports: 'sayHello' //exports的值為my.js提供的 對外接口的名稱
}
}
});
require(['app'], function(sayHello) {
alert(sayHello())
})導(dǎo)出一個函數(shù),意味著我們得到了一個javaScript類
但是如果在my.js中寫了很多function,整合成一個function有點麻煩,想直接導(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個接口返回
return {
sayHi: sayHi,
sayHello: sayHello
}
}
}
}
});
require(['app'], function(a) {
a.sayHi('zhangsan');
a.sayHello('lisi');
});shim的有序?qū)?/p>
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怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
本文題目:Require.js怎么用
鏈接URL:http://chinadenli.net/article48/gejdhp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、自適應(yīng)網(wǎng)站、面包屑導(dǎo)航、手機網(wǎng)站建設(shè)、App設(shè)計、標(biāo)簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)