Javascript 角形js魔术弦
在angularJs中,去除魔法弦的最佳方法是什么 比如说,Javascript 角形js魔术弦,javascript,angularjs,Javascript,Angularjs,在angularJs中,去除魔法弦的最佳方法是什么 比如说, //app.js angular.module('starter', ['ionic', 'starter.controllers', 'starter.services']) //accountController.js angular.module('starter.controllers') .controller('AccountCtrl', function($scope) { }
//app.js
angular.module('starter', ['ionic', 'starter.controllers', 'starter.services'])
//accountController.js
angular.module('starter.controllers')
.controller('AccountCtrl',
function($scope) {
}
);
angular.module('starter')
.config(function config($stateProvider, $urlRouterProvider) {
$stateProvider.state($area.state, {
url: '/account',
views: {
'tab-account': {
templateUrl: 'templates/tab-account.html',
controller: 'AccountCtrl'
}
}
});
我正在考虑改变,这样
//constants.js
var MODULE_STARTER = function(){return 'starter';};
var MODULE_CONTROLLERS = function(){return 'starter.controllers';};
var MODULE_SERVICES = function(){return 'starter.services';};
//app.js
angular.module(MODULE_STARTER(), ['ionic', MODULE_CONTROLLERS(), MODULE_SERVICES()])
angular.module(MODULE_CONTROLLERS, []);
//accountController.js
var ACCOUNT_CONTROLLER = function() {
var $area = {};
$area.url = '/account';
$area.state = 'tab.account';
$area.controllerName = "AccountCtrl";
$area.stateConfig = function config($stateProvider, $urlRouterProvider) {
$stateProvider.state($area.state, {
url: $area.url,
views: {
'tab-account': {
templateUrl: 'templates/tab-account.html',
controller: $area.controllerName
}
}
});
};
return $area;
};
angular.module(MODULE_STARTER())
.config(ACCOUNT_CONTROLLER().stateConfig);
angular.module(MODULE_CONTROLLERS())
.controller(ACCOUNT_CONTROLLER().controllerName,
function($scope) {
}
);
所以关键是,当我引用相同的字符串值时,我不必重复神奇的字符串,重构也会更容易
此外,如果我想引用account controller或其URL进行重定向,我总是可以从account\u controller获取数据
这种方法有什么缺点吗?1)这些不是真正的神奇字符串,比如说,而是代码模块的名称……不应该做太多更改。2) 如果您确实希望引用它们以允许(比如)对模块名称进行单数编辑,为什么要将其设置为函数?这是额外的开销和打字。只需将字符串设置为一个变量并使用它。一切都会根据我的经验发生变化,尤其是在重构时,比如说如果应用程序增长,我需要添加另一个帐户控制器,那么我可能会将其重命名为User.AccountCtrl,并且我可能会为客户端添加一个名为client.AccountCtrl的新帐户控制器。我同意你对第二个问题的看法,但是有没有比定义全局变量更好的方法呢?如果你非常担心模块名称的变化,那么你很可能就是OCD类型的人,他们会不断地改变你在这个新系统中的组织,导致更多或更多的搜索和替换来改变变量/常量名称。我并不是说要冒犯你,我只是不认为你用这一点我认为过于工程化的东西节省了你的工作。:)好吧,我无意冒犯你,但我不认为强迫症是在一个系统进化时改变现有的名称,而不是为新的名称想出混乱的名称,这样旧的名称就不必改变,我认为我们在这方面陷入僵局。