requireJS的匿名模組和命名模組的區別和最佳實務

來源:互聯網
上載者:User

標籤:簡單   height   let   使用   fine   init   mod   ini   efi   

requirejs是一個簡單的javascript架構,支援模組化編碼和模組的非同步載入。

在requireJS中模組能夠分為:匿名模組和命名模組這2種。

requireJS定義一個匿名模組

define(function(){  return {id:"noName"};}); 

requireJS定義一個命名模組

define("constantModule",[],function(){  return {id:"hasName"};}); 

requireJS官網上也說: It is normally best to avoid coding in a name for the module and just let the optimization tool burn in the module names。就是說推薦使用匿名模組。


jquery從1.7版本號碼開始支援AMD(Asynchronous Module Definition)。而且是一個命名模組,模組名就是jquery。我使用的是jquery-1.11.1.js,原始碼例如以下:

if ( typeof define === "function" && define.amd ) {define( "jquery", [], function() {return jQuery;});}

如今看下使用requireJS架構載入jquery。僅僅要路徑是正確的。以下代碼是可以正確載入jquery的。

require.config({baseUrl:"./../",    paths: {        jquery: ‘jquery-1.11.1‘    }});//jquery架構的模組名是jquery,這裡不能改動,不然載入不成功require(["jquery"], function(jq) {//假設載入成功,應該顯示1.11.1    alert(jq().jquery);});

上面的代碼可以正常載入jquery架構之後,我們略微改動下上面的代碼

require.config({baseUrl:"./../",    paths: {        jquery_name: ‘jquery-1.11.1‘    }});//jquery架構的模組名是jquery,這裡不能改動,不然載入不成功require(["jquery_name"], function(jq) {//假設載入成功,應該顯示1.11.1    alert(jq().jquery);});
能夠發現。這次jquery架構不能正常載入。我們不過改變了模組名而已。這裡能夠得出一個結論:

假設是命名模組,那麼使用require載入該模組的時候。模組名一定要正確,不能任意改動

接下來我們載入自訂的匿名模組和命名模組。驗證下我們的結論。

require.config({baseUrl:"./../",    paths: {        jquery: ‘jquery-1.11.1‘,        hehe: ‘require_demo/module_noName‘,        constantModule: ‘require_demo/module_hasName‘,    }});//jquery架構的模組名是jquery,這裡不能改動,不然載入不成功require(["jquery","hehe","constantModule"], function(jq,noName,hasName) {        alert(jq().jquery);alert(noName.id);alert(hasName.id);});
調整檔案路徑,保證上面的代碼可以正常載入。接下來我們可以改動上面的代碼

require.config({baseUrl:"./../",    paths: {        jquery: ‘jquery-1.11.1‘,        xx: ‘require_demo/module_noName‘,        constantModule_hehe: ‘require_demo/module_hasName‘,    }});//jquery架構的模組名是jquery,這裡不能改動,不然載入不成功require(["jquery","xx","constantModule_hehe"], function(jq,noName,hasName) {    alert(jq().jquery);alert(noName.id);alert(hasName.id);});
能夠發現:xx模組能夠正常載入,constantModule_hehe不能正常載入。

我們能夠看到:匿名模組具有更大的靈活性。載入匿名模組的時候,名稱能夠任意指定



requireJS的匿名模組和命名模組的區別和最佳實務

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.