1
我將一個現有的AngularJS(1.x)項目移植到TypeScript,到目前爲止代碼正在工作,但我想知道爲什麼會發生這種情況。TypeScript編譯模塊在自動調用函數之前聲明var
在JavaScript中,我宣佈一個模塊,像這樣:
(function() {
'use strict';
angular.module('myModule', []);
})();
在打字稿,像這樣:
module myModule {
'use strict';
angular.module('myModule', []);
}
這是編譯成這樣:
var myModule;
(function (myModule) {
"use strict";
angular.module("myModule", []);
})(myModule || (myModule = {}));
我有幾個疑點:
- 添加到全球範圍
var myModule
是否錯了? - 爲什麼
myModule
被傳遞給匿名函數? - 由於
var myModule
被添加,我不知道是否應該避免覆蓋。我將模塊聲明從Controller中分離出來。我想知道,當我宣佈控制器時,我應該使用不同的module
名稱嗎?
換句話說,我可以重複使用相同的名稱爲第二模塊,像這樣
module myModule {
angular
.module('myModule')
.controller('myController');
}
// which will "overwrite" the preexisting var myModule
或者它會更好地使用其他名稱的模塊,像這樣:
module myModuleController {
angular
.module('myModule')
.controller('myController');
}
// which will generate another var myModule
我已經看到代碼工作得很好,但我確信在這件事情上我應該知道某些事情。
謝謝,更清晰:-)。有一個問題,因爲我在AngularJS中,我應該使用define嗎? – ghego1
我不是一個有角度的開發人員,所以我無法從經驗中回答,但是作爲一個整體,JavaScript世界正在轉向模塊加載器。查看本文我發現:[AngularJS 1.x with TypeScript(或ES6)Best Practices](https://codepen.io/martinmcwhorter/post/angularjs-1-x-with-typescript-or-es6-best-practices )。它建議使用這種方法 –