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 )。它建议使用这种方法 –