Javascript 用于创建服务和控制器的角度语法
我已经阅读了很多关于angular的文章,学习了一些在我正在开发的应用程序中应用的最佳实践。我读了一节,讨论了如何缩小javascript以及如何首选以下语法:Javascript 用于创建服务和控制器的角度语法,javascript,angularjs,Javascript,Angularjs,我已经阅读了很多关于angular的文章,学习了一些在我正在开发的应用程序中应用的最佳实践。我读了一节,讨论了如何缩小javascript以及如何首选以下语法: var myApp = angular.module('myApp',[]); myApp.controller('Controller', ['$scope', function($scope) { //code }]); var myApp = angular.module('myApp', []); function Co
var myApp = angular.module('myApp',[]);
myApp.controller('Controller', ['$scope', function($scope) {
//code
}]);
var myApp = angular.module('myApp', []);
function ControllerOne($scope) {
//code
}
myApp.controller('ControllerOne', ControllerOne)
然而,我也听到一些人说,以下语法是首选的:
var myApp = angular.module('myApp',[]);
myApp.controller('Controller', ['$scope', function($scope) {
//code
}]);
var myApp = angular.module('myApp', []);
function ControllerOne($scope) {
//code
}
myApp.controller('ControllerOne', ControllerOne)
我的第一个问题是,在第二个示例中,当注册控制器并将字符串作为参数传递时,那么名为“controllerOne”的函数是否具有与第一个示例中传递数组相同的好处(就缩小而言)
我的第二个问题是,这两种方法中有哪一种更受欢迎,还是“你更喜欢什么?”
现在看一下,我可以看到第二种方法如何更灵活,因为该函数不受实际控制器的影响,并且可以重用,而第一个示例代码特定于该特定控制器,因为它被声明为数组的一部分。这是否正确?第二个示例差异太大,无法进行比较。它不是注入
$scope
,而是假设
我认为对于控制器的阵列注入语法来说,所有这些都是多余的。如果您使用的是缩小,请尽可能使用并使代码清晰。因为支持/修复代码比编写代码更昂贵,比让计算机对其进行任何形式的自动化都要昂贵
$inject
服务来注入依赖项你尝试过谷歌的关闭()吗?jsdoc中的@ngint应该很好地处理缩小问题。我每天都在使用闭包,我必须说它非常健壮。开始时,学习曲线相当陡峭,但最终,你会开始喜欢它
可注入的
都已定义并缓存在模块
的某些空间中
- 选项二,缩小工具可能会将函数参数
重命名为较短的名称,例如$scope
,该名称未在模块定义中定义李>s
- 选项一:Angular将获取字符串
,在scope上找到它的定义,然后运行类似$scope
,最后运行控制器。所以调用s=$scope
李>注入
您可能希望使用选项一,最小化代码,然后看看会发生什么。对不起,输入错误,我的意思是将$scope传递到第二个示例控制器。大多数情况下,控制器是不可重用的,它们与视图紧密相连,两种语法都可以正常工作。我刚刚阅读了Ajay Kumar答案中的链接,并讨论了inject方法。看起来很不错,谢谢你指出!