Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS中的代码分离_Javascript_Angularjs - Fatal编程技术网

Javascript AngularJS中的代码分离

Javascript AngularJS中的代码分离,javascript,angularjs,Javascript,Angularjs,我对AngularJS很陌生,所以在阅读这个问题时请记住 我有一些功能,我想让我的网站中的不同模块可以在全球范围内使用,计划是让页面以单页应用程序样式执行自己的功能(因此,用户列表/创建/修改将是一个页面,而产品列表/创建/修改将是另一个页面)。我希望有一些共享的逻辑,比如实用程序功能,以及可以在不同页面模块之间共享的用户授权 这就引出了我的问题 假设我将所有帐户功能封装在一个服务中(例如app.factory('account,etc…),并分离到它自己的JS文件中,那么最好将其放在它自己的模

我对AngularJS很陌生,所以在阅读这个问题时请记住

我有一些功能,我想让我的网站中的不同模块可以在全球范围内使用,计划是让页面以单页应用程序样式执行自己的功能(因此,用户列表/创建/修改将是一个页面,而产品列表/创建/修改将是另一个页面)。我希望有一些共享的逻辑,比如实用程序功能,以及可以在不同页面模块之间共享的用户授权

这就引出了我的问题

假设我将所有帐户功能封装在一个服务中(例如app.factory('account,etc…),并分离到它自己的JS文件中,那么最好将其放在它自己的模块中并使用依赖项注入,如下所示:

var accountMod = angular.module('accountModule', ['dependencies']);
accountMod.factory('account', ['dependencies', function (...) { }]);
或者假设app变量的名称始终为app,并将其表示为:

app.factory('account', ['dependencies', function (...) { }]);
从功能上来说,这两种方法都是可行的,但我正在尝试使用最佳实践。第二种选择似乎有限,我从来没有热衷于假设变量始终是相同的名称,对我来说依赖注入方法似乎更好,但我已经看到了这两种风格的许多例子


非常感谢您的帮助

真是个好问题。这里面有微妙的东西。 我认为使用下面的代码会很有帮助,即使用模块

var accountMod = angular.module('accountModule', ['dependencies']);
accountMod.factory('account', ['dependencies', function (...) { }]);
  • 然而,借助angular provider和添加模块级配置,我们可以模拟对象或服务。最终,这将提高代码的测试能力
  • 若有多个服务在记帐中,那个么我更愿意将它们分组到模块中
  • 这是我想看的方面。如果您发现,请添加更多


    谢谢。

    我只需为你的代码示例支付2美分。 不建议采用以下方法:

    var accountMod = angular.module('accountModule', ['dependencies']);
    accountMod.factory('account', ['dependencies', function (...) { }]);
    
    最佳实践是每个文件只有一个组件,因此无需定义变量。看看这个:


    如果您刚开始学习Angular,我建议您阅读John Papa的《风格指南》的其余部分

    我喜欢Angular fullstack generator for yeoman的结构

    您可以看到每个模块和组件是如何分离的,内部、反工厂、服务、指令等以及它们的关联测试是如何在每个功能的一个文件中分割的


    对于你的提议来说,这可能有些过分,你只能从角度考虑。

    每个模块通常都应该是独立的,易于测试……非常好,因此将模块分开并使用DI!非常感谢!!谢谢你的回答!我同意你的观点,这种方法使代码更易于测试,我想我会沿着这条路走下去,看看我的结局如何!那是一篇很棒的文章!谢谢你给我指明了那个方向!我很惊讶有这么多的排列,我想是找到了一个适合我的风格!我喜欢将模块分配给变量,然后将控制器和工厂添加到变量中的组织方式,但可以看出这可能会被视为过度使用。。。使用变量的优点之一似乎是在构造过程中使用DI,而不是直接使用喷油器。稍后我将详细阅读样式指南!!谢谢你的提示!