gpt4 book ai didi

AngularJS 样板语法

转载 作者:行者123 更新时间:2023-12-02 23:41:04 25 4
gpt4 key购买 nike

我在使用 AngularJS 时遇到的挫折之一是示例中使用的各种样式。我见过 4 种不同的方法来声明 AngularJS 元素并将其添加到模块(包括声明模块的不同方法)。 In another question我询问了使用全局变量与直接声明模块的情况。现在我想知道使用各种样式向模块添加元素的优点/缺点是什么。 (我不会包含为模块声明全局变量的示例,因为该样式已被折扣为 'bad practice' )

假设模块在文件 myMod.js 中声明为:

angular.module('myMod', [
// Angular modules
'ui.router'
,'ui.bootstrap'
,'ngResource'
,'ngStorage'

]);

现在我想给模块添加一个 Controller ,我看到了:

(假设每个示例代表名为 myController.js 的文件的全部内容)

选项A:

angular.module('myMod')
.controller.('thisController',['dependencyA','dependencyB',
function(dependencyA, dependencyB){
....stuff to do
}]);

选项 B:只需添加“use strict”

'use strict';

angular.module('myMod')
.controller.('thisController',['dependencyA','dependencyB',
function(dependencyA, dependencyB){
....stuff to do
}]);

选项 C:将整个内容包装在匿名函数中,如下所示:

(function(){
'use strict';

angular.module('myMod')
.controller.('thisController',['dependencyA','dependencyB',
function(dependencyA, dependencyB){
....stuff to do
}]);

选项 D:在 Controller 声明中声明命名函数而不是匿名函数:

(function(){

'use strict'

angular
.module('myMod')
.controller('thisController',thisController);

thisController.$inject = ['dependencyA','dependencyB'];

function thisController(dependencyA,dependencyB){
...stuff to do
}

存在将工厂、服务、指令等添加到模块中的类似的不同示例。据我所知,这些是实现同一目标的不同风格。哪些技术代表“最佳实践”和“原因”?

(我不希望这变成“观点文章”,请提供选择风格的“客观”理由。)

最佳答案

至于“use strict”,这与 AngularjJS 本身无关。它是一个 Javascript 指令,强制执行严格模式,禁止在 Javascript 中使用未声明的变量。包装 Angular 代码的立即调用函数表达式 (IIFE) 可防止变量泄漏到全局范围内。至于声明命名函数,我认为这会导致代码更加清晰,并且是我的首选方式。

关于AngularJS 样板语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32720094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com