[英]AMD modules with transitive dependencies
假設我想創建一個本身依賴於其他AMD模塊的AMD模塊。 沒關系,但實際上,假設它依賴於moment.js的某種新型日期選擇器小部件
所以我設置了一個bower.json,看起來像這樣:
{
"name": "sampleLib",
"version": "0.0.1",
"description": "test",
"main": "myControl.js",
"moduleType": [
"amd"
],
"dependencies": {
"moment": "~2.8.1"
}
}
好的。 沒問題。
我的問題是關於它如何被消耗的...我看到兩個選擇,我都不喜歡:
將我的代碼和moment.js連接到一個統一的腳本中,並將其發布。 客戶端只需使用我的模塊即可輕松使用。 在這種情況下:
不要合並我的代碼,並在bower.json中將moment.js聲明為依賴項。 因此,當客戶bower install
我的庫時,它們還將關閉moment.js。 這很酷。 但是我擔心的是命名空間...假設我將瞬間視作“ lib / moment”,但客戶端的結構使其僅依賴於瞬間視作“ moment”? 在運行時,我的代碼是否會因為未定義lib / moment而失敗? 我擔心這太脆弱了,除了良好的文檔記錄之外,還有其他方法可以強化這一點嗎?
發布具有依賴性的AMD模塊的最可靠方法是什么?
選項1-雖然串聯更容易分發代碼,但這樣做卻遇到了一個問題-冒着與其他庫沖突的風險。 您還增加了js庫的大小。
選項2-我認為您並不是真正在這里指代命名空間,而是模塊的路徑。 那是對的嗎? RequireJS有一個配置塊,您可以更改基本路徑和映射來解決您所指的問題。 http://requirejs.org/docs/1.0/docs/api.html#config
因此,在您的情況下,如果要發布AMD模塊和依賴項,我仍然會選擇選項2。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.