我一直在寻找教程和文档;但我不明白下面的代码。来自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,而是在第一个文件中定义的模块的名称。

07-24 19:15