几个月前,我决定学习英语.当我在做一些改进并使用它创建一些应用程序时,我意识到Angular 2在开发者预览中,所以它发布只是时间问题.因为Angular 2不会与Angular 1兼容,而且有很多变化,问题是,继续开发Angular 1是否更好.x还是开始开发Angular 2?
事实是,我们不必总是使用市场上最新的版本或最新的语言,但在这种情况下,这款应用程序仍然很小,所以我可以毫不费力地进行更改.
几个月前,我决定学习英语.当我在做一些改进并使用它创建一些应用程序时,我意识到Angular 2在开发者预览中,所以它发布只是时间问题.因为Angular 2不会与Angular 1兼容,而且有很多变化,问题是,继续开发Angular 1是否更好.x还是开始开发Angular 2?
事实是,我们不必总是使用市场上最新的版本或最新的语言,但在这种情况下,这款应用程序仍然很小,所以我可以毫不费力地进行更改.
让我先说一句,我假设你和所有读这篇文章的人都已经习惯了Angular 1(now referred to as AngularJS,而不是新版本的Angular).这就是说,让我们来看看Angular 2+中的一些加法和关键区别.
你可以通过运行ng new [app name]
来启动一个新项目.
要完全掌握这一点,我建议查看我答案底部的一些资源列表.
在一个基本 struct 中,你将有一个app/ts
文件夹,你将在其中完成大部分工作,还有一个app/js
文件夹,扩展名为.js.map
.它们会将".ts"文件"映射"到浏览器进行调试,因为浏览器无法读取本机typescript.
Update:已经过了测试版.在大多数情况下,项目 struct 发生了一些变化,如果您使用angular cli,您将在
app.component.css
app.component.html
app.component.spec.ts
app.component.ts
app.module.ts
index.ts
app.component.css:你应该使用特定于component.html
的CSS文件
app.component.html:视图(在app.component.js中声明的变量)
app.component.spec.ts:用于测试app.component.ts
app.component.ts:绑定到app.component.html
的代码
app.module.ts:这就是你的应用程序的启动,以及你定义所有插件、组件、服务等的地方.这相当于Angular 1中的app.js
个
index.ts用于定义或导出项目文件
Additional information:
此外,tsconfig.json
文件也很重要,因为它为您的项目定义了TS编译规则.
如果你想I have to learn a whole new language?...UH在某种程度上,TypeScript是JavaScript的超集.不要被吓倒;它可以让你的发展更容易.在玩了几个小时后,我感觉自己对它有了很好的理解,三天后,我就把它弄得一塌糊涂了.
这一次你可能被暗示了.Angular 2仍然是MV*,但是您将使用‘components’作为将代码绑定到模板的一种方式,例如,请执行以下操作
import { Component } from '@angular/core';
@Component({
selector:'my-app',
template: '<h1> Hello World! </h1>'
})
export class AppComponent {}
这里,将import
语句视为v1控制器中的依赖项注入.你使用import
到import个包,其中import {Component}
表示你将制作一个component
,你想绑定到HTML
.
注意@Component
装饰师,你有selector
和template
.这里,把selector
想象成$scope
,就像v1directives
一样,其中selector
的名字是用来绑定HTML的
<my-app> </my-app>
其中<my-app>
是您将使用的自定义标记的名称,它将用作模板中声明内容的占位符.即)<h1> Hello World! </h1>
.而在v1中,这将如下所示:
HTML个
<h1>{{hello}}</h1>
JS个个
$scope.hello = "Hello World!"
您还可以在这些标记之间添加一些内容,以生成加载消息,如下所示:
<my-app> Loading... </my-app>
然后它将显示"Loading..."作为加载消息.
请注意,在template
中声明的是路径或原始HTML,您将在HTML
in selector
标记中使用它.
Angular 1的更完整实现看起来更像这样:
HTML个
<h1 ng-controller="myCtrl">{{hello}}</h1>
在v1中,这看起来像
JS个个
angular.module('controller', [])
.controller('myCtrl', function( $scope) {
$scope.hello = "Hello World!"
})
这就是我真正喜欢v2的地方.我发现在v1中,指令对我来说是一个陡峭的学习曲线,即使当我弄明白它们时,我经常使用CSS
渲染,而不是我想要的.我发现这更简单.
V2允许你的应用更容易扩展,因为你可以比v1更容易地分解你的apply.我喜欢这种方法,因为您可以将所有工作部件放在一个文件中,而不是放在多个文件中.
What about converting your project from v1 to v2?个
根据我从开发团队那里听到的消息,如果您想将您的v1项目更新到v2,您只需判断并删除不推荐使用的BLOB,并用selector
替换您的$scope
.我觉得这段视频很有帮助.这是与一些ionic 团队,谁是并肩工作的Angular 团队,因为v2有更强的重点在移动https://youtu.be/OZg4M_nWuIk希望,这是有帮助的.
UPDATE:随着Angular 2的正式实现浮出水面,我通过添加示例进行了更新.
UPDATE 2:这似乎仍然是一个很受欢迎的问题,所以我只是想找一些在我开始使用angular 2时发现非常有用的资源.
要了解更多关于ES6的信息,我建议大家看看新的Boston's ECMAScript 6 / ES6 New Features Tutorials - YouTube Playlist
要编写TypeScript函数并查看它们如何编译为Javascript,请参阅Typescript language Playground
要查看Angular 2中Angular 1类似功能的函数分解,请参见Angular.io - Cookbook -A1 A2 Quick Reference