我一直在寻找教程和文档;但我不明白下面的代码。来自2个文件的2个代码段;服务;以及导入服务的文件。
这是服务角度文件(address-local.js)的片段代码:
export default angular.module('erp.services.addressLocal', [])
.factory('addressLocal', addressLocal)
.name;
/* @ngInject */
function addressLocal($http) {
这是注入服务(account.js)的文件代码:
import addressLocalService from '../services/address-local';
我的问题是:
.name方法在导出中有什么作用;我在网上看到的大多数示例都不使用.name方法
在导出中使用“ erp.services.addressLocal”有什么意义;当不使用导入时,只是一个“导入addressLocalService”;完整的文档语法是什么?
/ * @ngInject * /,有用吗?
在哪里可以找到有关.name或可以在“导出”中使用的所有方法的完整文档? ES6和Angular混合了吗?
最佳答案
让我们一一检查一下这些行:
angular.module('erp.services.addressLocal', [])
这将定义一个名为
'erp.services.addressLocal'
的新角度模块。名字可以是任何东西。模块只是组件(服务,控制器等)的存储库。返回的值是创建的角度模块。.factory('addressLocal', addressLocal)
这会将名为
'addressLocal'
的服务添加到角度模块。该服务的定义要归功于工厂函数addressLocal
,该函数在此之后定义。这将返回角度模块。.name
这样可以访问模块的名称。此值(即“ erp.services.addressLocal”)是此文件中定义的ES6模块导出的值。
/* @ngInject */
function addressLocal($http) {
这是工厂函数,用于创建并返回addressLocal服务。它使用注入的$ http服务。 @ngInject由构建时使用的名为ng-annotate的工具使用,该工具可将上面的代码转换为
['$http', function($http)]
如果压缩代码,则必须使用这种奇怪的符号,因为压缩器会将
$http
更改为无意义且较短的内容,例如a
,而angular使用参数名称来知道要注入的内容。import addressLocalService from '../services/address-local';
这允许导入从优良的address-local.js中导出的内容,即模块名称。我不知道此行之后的代码如何处理它。但是变量名重命名,因为
addressLocalService
不是addressLocalService,而是在第一个文件中定义的模块的名称。