2013-02-23 63 views
3

我對JavaScript的世界很陌生(特別是當涉及到庫)時。其中很多人會告訴你使用require('libName')作爲一種將你的網頁/應用程序庫集成的方法。有人可以向我解釋究竟是如何工作的,以及如何實現這一點?默認情況下,require()不起作用。JavaScript需要庫

回答

3

JavaScript在瀏覽器中沒有require功能,該功能由外部庫遵循兩個最流行的規格提供:CommonJSAMD。看看RequireJS,這兩種模式都很好。

服務器上的JavaScript(NodeJS)默認使用CommonJS規範。

+0

RequireJS沒有任何共同之處與要求(「SDFS」)阿多尼斯在問,其實它的名字很混亂,它應該被稱爲AMDJS。 require('package')是commonJS風格,可以很容易地在瀏覽器中使用Webmake或Browserify等工具 – 2013-02-25 11:18:30

2

要求是要自己編寫的手工函數,或者是要在頁面上的任何其他JS之前加載的庫的一部分。

例如,RequireJS是一個只處理依賴加載(和命名空間,如果需要的話)的庫。

通過使用腳本代碼中的onload事件,您可以編程插入到頁面(或舊版本的IE的onreadystatechange),並根據多少超老您想要支持的瀏覽器。

通過學習「承諾」模式,您還可以在模塊中間直接要求相關性。

同樣,不同的庫以不同的方式支持它。

2

這是一個非常輕量級的要求:

var require = function(src, success, failure){ 
    !function(source, success_cb, failure_cb){ 
      var script = document.createElement('script'); 
      script.async = true; script.type = 'text/javascript'; script.src = source; 
      script.onload = success_cb || function(e){}; 
      script.onerror = failure_cb || function(e){}; 
      (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(script); 
    }(src, success, failure); 
} 

require('js/jquery.js', function(){ 
    console.log('jQuery is ready to use'); 
}, function(){ 
    console.log("Something went wrong loading this script"); 
});