面向未来的Angular应用程序具有ES6功能

时间:2014-10-16 03:29:01

标签: angularjs ecmascript-6

在ES6(使用Traceur)中编写控制器,服务和指令的建议(如果有的话)是什么是未来的方法,以便大多数相同的代码可以与AngularJS 2.0一起使用。我意识到AngularJS 2.0仍然处于绘图板上,但如果我今天要开始一个新的应用程序,我会遵循哪种风格或约定,因此迁移到2.0将有望减轻痛苦。

声明一个类然后将对该类的引用传递到controllerservice是我看到的一点:

var app = angular.module('myApp', []);

class MainCtrl {
   ....
}

class MyService {
   ....
}

app.controller('MainCtrl', MainCtrl);
app.service('MyService', MyService);

是否应该将MyService类移动到一个单独的文件中以便将来可能export它可以被注入?

当我使用AngularJS(< = 1.3.x)和ES6处理新项目时,要记住哪些其他事项?

更新 经过一番挖掘,我写了一系列博客文章,在我的博客上谈论我的发现

2 个答案:

答案 0 :(得分:1)

ngEurope的角度团队今天证实,Angular 2.0中的$ controls,$ scopes,$ services和jqLit​​e将不再存在。还将有一个全新的路由器,他们打算在未来几个月内向后移植到1.3。

为了准备迁移,他们建议只关注到目前为止已经在社区中发展的best practices/styles/conventions,并且当2.0准备就绪(明年某个时候)时,他们将找到从那里迁移的最佳方式。

此外,他们表示1.3版本将在2.0版本发布后至少一年半内得到全面支持。

答案 1 :(得分:0)

您可以定义ES6类并将其添加到现有的Angular 1.x应用程序中。您将需要设置转换等,但这是一个通用示例:

class PersonService{
    constructor(){
    }
    getPerson(){
        return 'Jim Smith';
    }
}
angular.module('app').value('PersonService', PersonService);

class GreetingService{
    constructor(){
    }
    sayHello(){
        return 'Hello from ES6!';
    }
}
angular.module('app').service('GreetingService', GreetingService); 

此处有更多详情:http://www.syntaxsuccess.com/viewarticle/552dc66f955de264e1fbbaee