優勢:jquery
一、防止js加載阻塞頁面渲染api
二、使用程序調用的方式加載js數組
require會定義三個變量:define,require,requirejs,其中require === requirejs,通常使用require更簡短函數
一、define 從名字就能夠看出這個api是用來定義一個模塊 requirejs
define(function(){ function fun1(){ alert("it works"); } fun1(); })
二、require 加載依賴模塊,並執行加載完後的回調函數ui
require(["js/a"]);
加載js的方式spa
一、加載本地jscode
require(["js/a"],function(){ alert("load finished"); })
第一個參數是數組,即便只有一個也要用數組定義,第二個參數是callback,一個function,用來處理加載完畢後的邏輯,第二個參數非必須。
二、加載非本地js,本地的js也可用ip
require.config({ //用來配置模塊的加載位置,簡單點說就是給模塊起一個更短更好記的名字 paths : { "jquery" : ["http://libs.baidu.com/jquery/2.0.3/jquery", "js/jquery"], //若是遠程庫沒有加載成功,能夠加載本地的庫 "a" : "js/a" } }) require(["jquery","a"],function($){ $(function(){ alert("load finished"); }) })
三、加載第三方jsunderscore
經過require
加載的模塊通常都須要符合AMD規範即便用define
來申明模塊,可是部分時候須要加載非AMD規範的js,這時候就須要用到另外一個功能:shim。
require.config({ shim: { "underscore" : { exports : "_"; } } })
這樣配置以後,就能夠引用了
require(["underscore"], function(_){ _.each([1,2,3], alert); })
全局配置
一、建main.js
require.config({ paths : { "jquery" : ["http://libs.baidu.com/jquery/2.0.3/jquery", "js/jquery"], //引入 jquery.js "a" : "js/a" //a.js } })
二、頁面引入
<script data-main="js/main" src="js/require.js"></script>