Javascript 将常规angularjs语法转换为es6语法以便迁移

Javascript 将常规angularjs语法转换为es6语法以便迁移,javascript,angularjs,ecmascript-6,Javascript,Angularjs,Ecmascript 6,如何在es6中将静态属性设置为类 我的问题是: 我有一个名为命令的工厂 commandsFactory.js 该工厂在另一个名为模块的工厂中用作依赖项: moduleFactory.js 重构后,我有以下几点: commandFactory.js 我添加了一个新文件以导出一个名为 data.module.js 我正在调用另一个名为 K模块 新的K_模块如下所示(以下是问题): 是否可以将命令、$q和DataProxy作为静态属性? 所以我可以继承这些属性,而不必每次都写? var我的问题是每个依

如何在es6中将静态属性设置为

我的问题是: 我有一个名为命令的工厂

commandsFactory.js 该工厂在另一个名为模块的工厂中用作依赖项:

moduleFactory.js 重构后,我有以下几点:

commandFactory.js 我添加了一个新文件以导出一个名为

data.module.js 我正在调用另一个名为

K模块 新的K_模块如下所示(以下是问题):

是否可以将命令、$q和DataProxy作为静态属性? 所以我可以继承这些属性,而不必每次都写?
var

我的问题是每个依赖项的冗余

好的,解决方案就是将它们作为当前模块的全局变量

let _Commands;
let _DataProxy;
let _$q;
class K_Module {
        constructor(data, Commands, DataProxy, $q) {// I don't want to include these dependencies (except data) each time I create a K_Module
            'ngInject';
            let _self = this;
            _Commands = Commands;
            _DataProxy = DataProxy;
            _$q = $q;
    //... other stuff

这样,该模块中的每个实例都可以访问该变量

当然,您可以将其设置为全局变量。你可以让任何东西全球化。当然,这也完全与模块系统背道而驰,模块系统的建立是为了不污染全局名称空间。将它们注入构造函数可以使您可以更改(比如)希望使用的Promise库。例如,你可以用蓝鸟代替Q。这在测试时特别好,这样你就不需要依赖30个文件来测试一个函数了。那么,在你看来,将它注入构造函数是一种最佳实践吗?如果在许多其他对象中使用同一个对象,这不是冗余的吗?AngularJS使用
新类名
调用类。在类中注入依赖项的唯一位置是构造函数中。这就是AngularJS依赖注入的工作方式。@georgeawg所以我的重构是对的?(thx用于编辑我的问题)重新考虑使用类的决定是一个意见问题。一方面,代码需要更多的努力;另一方面,类类型是可以自动分析和重构的规则结构。如果您打算迁移到使用提前编译的框架,那么它们无疑是一条必经之路。
.factory('K_Module', ['Commands', function (Commands) {
// here I'm using Commands anytime and anywhere I need
// also all the instance created by this factory had access to Commands

}
    
function CommandsFactory() {
return all my commands
}
export {
    CommandsFactory
}
import $parser from '../parsers/parsers.module';
import $communication from '../communication/communication.module';
import {Connectors, CommandsFactory} from './Commands'

export default require('angular')
    .module('core.data', [$parser, $communication])
    .factory("Connectors", Connectors)
    .factory("Commands", CommandsFactory)
    .name;
import $data from '../core/data/data.module';
import {K_Module, K_Matrix} from './ModuleFactory'
export default require('angular')
    .module('kModules', [$data])
    .service('K_Module', K_Module)
    .name;
class K_Module {
    constructor(data, Commands, DataProxy, $q) {// I don't want to include these dependencies (except data) each time I create a K_Module
        'ngInject';
        let _self = this;
        _self.Commands = Commands;
        _self.DataProxy = DataProxy;
        _self.$q = $q;
//... other stuff
let _Commands;
let _DataProxy;
let _$q;
class K_Module {
        constructor(data, Commands, DataProxy, $q) {// I don't want to include these dependencies (except data) each time I create a K_Module
            'ngInject';
            let _self = this;
            _Commands = Commands;
            _DataProxy = DataProxy;
            _$q = $q;
    //... other stuff