我一直在阅读有关角度的内容,以便学习一些应用于我正在处理的应用程序中的最佳实践。我经历了一个部分,讨论缩小javascript以及如何优先使用以下语法:
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"的函数确实具有相同的好处(至于缩小)在第一个例子中传递数组?
我的第二个问题是,优先于其他方法的首选方法之一,或者这是一个“你更熟悉”的情况吗?
现在看一下,我可以看到第二种方法如何更灵活,因为该函数不受实际控制器的影响而且可以重复使用,而第一个示例代码特定于该特定控制器,因为它声明为数组。这是对的吗?
答案 0 :(得分:2)
将控制器名称注册为字符串对缩小没有影响。传递依赖项确实会产生影响。你需要以缩小安全的方式传递它们。您还可以使用<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light">
<item name="android:colorPrimary">@color/primary</item>
<item name="android:statusBarColor">@color/primary</item>
<item name="android:colorPrimaryDark">@color/primary_dark</item>
<item name="android:textColorPrimary">@color/primary_text</item>
<item name="android:textColorSecondary">@color/secondary_text</item>
<item name="android:colorAccent">@color/accent</item>
<item name="android:textColor">@color/textColor</item>
</style>
</resources>
服务注入依赖项。
要获得编写Angular代码的所有最佳方法,请遵循John Papa的Angular样式指南
答案 1 :(得分:1)
您是否尝试过Google的关闭(https://developers.google.com/closure/)? jsdoc中的@ngInject应该很好地处理缩小。我每天都使用闭包,我必须说它非常强大。学习曲线在开始时非常陡峭,但最终,你会开始喜欢它
答案 2 :(得分:0)
第二个例子太多不同,无法比较。它不会注入$scope
并假设"ControllerAs" syntax in template。
我认为关于控制器的阵列注入语法的所有这些大惊小怪都是多余的。如果您正在使用缩小功能,请使用ng-annotate并使代码尽可能清晰。因为支持/修复代码比编写代码更昂贵,所以编写它等等,然后让计算机对其进行任何类型的自动化。
答案 3 :(得分:0)
使用内联声明(选项一)完全是为了在缩小后的正确性。
请注意,所有injectable
都已定义并缓存在module
的某个空格中。
$scope
重命名为某个较短的名称,例如s
,它未在模块定义中定义。 $scope
,在范围内找到它的定义,然后运行类似s = $scope
的内容,最后运行控制器。所以请致电injection
。 始终使用选项一。
您可能希望使用选项一,最小化代码,然后看看会发生什么。