`

AngularJS2.0教程(一)快速上手

 
阅读更多

Why Angular2

Angular1.x显然非常成功,那么,为什么要剧烈地转向Angular2?


性能的限制

AngularJS当初是提供给设计人员用来快速构建HTML表单的一个内部工具。随着时间的推移,各种特性 被加入进去以适应不同场景下的应用开发。然而由于最初的架构限制(比如绑定和模板机制),性能的 提升已经非常困难了。

快速变化的WEB

在语言方面,ECMAScript6的标准已经完成,这意味着浏览器将很快支持例如模块、类、lambda表达式、 generator等新的特性,而这些特性将显著地改变JavaScript的开发体验。

在开发模式方面,Web组件也将很快实现。然而现有的框架,包括Angular1.x对WEB组件的支持都不够好。

移动化

想想5年前…现在的计算模式已经发生了显著地变化,到处都是手机和平板。Angular1.x没有针对移动 应用特别优化,并且缺少一些关键的特性,比如:缓存预编译的视图、触控支持等。

简单易用

说实话,Angular1.x太复杂了,学习曲线太陡峭了,这让人望而生畏。Angular团队希望在Angular2中将复杂性 封装地更好一些,让暴露出来的概念和开发接口更简单。

Rob Eisenberg / Angular 2.0 Team

ES6工具链

要让Angular2应用跑起来不是件轻松的事,因为它用了太多还不被当前主流浏览器支持 的技术。所以,我们需要一个工具链:

001

Angular2是面向未来的科技,要求浏览器支持ES6+,我们现在要尝试的话,需要加一些 垫片来抹平当前浏览器与ES6的差异:

systemjs - 通用模块加载器,支持AMD、CommonJS、ES6等各种格式的JS模块加载 es6-module-loader - ES6模块加载器,systemjs会自动加载这个模块 traceur - ES6转码器,将ES6代码转换为当前浏览器支持的ES5代码。systemjs会自动加载 这个模块。

初识Angular2

写一个Angular2的Hello World应用相当简单,分三步走:

1. 引入Angular2预定义类型

import{Component,View,bootstrap}from"angular2/angular2";

import是ES6的关键字,用来从模块中引入类型定义。在这里,我们从angular2模块库中引入了三个类型: Component类、View类和bootstrap函数。

2. 实现一个Angular2组件

实现一个Angular2组件也很简单,定义一个类,然后给这个类添加注解:

[@Component](/user/Component)({selector:"ez-app"})[@View](/user/View)({template:"<h1>Hello,Angular2</h1>"})classEzApp{}

class也是ES6的关键字,用来定义一个类。@Component@View都是给类EzApp附加的元信息, 被称为注解/Annotation。

@Component最重要的作用是通过selector属性(值为CSS选择符),指定这个组件渲染到哪个DOM对象上。 @View最重要的作用是通过template属性,指定渲染的模板。

3. 渲染组件到DOM

将组件渲染到DOM上,需要使用自举/bootstrap函数:

bootstrap(EzApp);

这个函数的作用就是通知Angular2框架将EzApp组件渲染到DOM树上。

简单吗?我知道你一定还有疑问,别着急,我们慢慢把缺失的知识点补上!

注解/Annotation

你一定好奇@Component@View到底是怎么回事。看起来像其他语言(比如python) 的装饰器,是这样吗?

ES6规范里没有装饰器。这其实利用了traceur的一个实验特性:注解。给一个类 加注解,等同于设置这个类的annotations属性:

//注解写法[@Component](/user/Component)({selector:"ez-app"})classEzApp{...}

等同于:

classEzApp{...}EzApp.annotations =[newComponent({selector:"ez-app"})];

很显然,注解可以看做编译器(traceur)层面的语法糖,但和python的装饰器不同, 注解在编译时仅仅被放在annotation里,编译器并不进行解释展开 - 这个解释的工作是 Angular2完成的:

002

据称,注解的功能就是Angular2团队向traceur团队提出的,这不是traceur的默认选项, 因此你看到,我们配置systemjs在使用traceur模块时打开注解:

System.config({
  map:{traceur:"lib/traceur"},
  traceurOptions:{annotations:true}});

小结

如果你了解一点Angular1.x的bootstrap,可能隐约会感受到Angular2中bootstrap的一些 变化 - 我指的并非代码形式上的变化。

以组件为核心

在Angular1.x中,bootstrap是围绕DOM元素展开的,无论你使用ng-app还是手动执行bootstrap()函数,自举过程是建立在DOM之上的。

而在Angular2中,bootstrap是围绕组件开始的,你定义一个组件,然后启动它。如果没有一个组件, 你甚至都没有办法使用Angular2!

支持多种渲染引擎

以组件而非DOM为核心,意味着Angular2在内核隔离了对DOM的依赖 - DOM仅仅作为一种可选的渲染引擎存在:

003

上面的图中,DOM Render已经实现,Server Render正在测试,iOS Render和Android Render 是可预料的特性,虽然我们看不到时间表。

这有点像React了。

参考资料:http://www.hubwiz.com/course/5599d367a164dd0d75929c76/。 转发请赋原文链接:https://cnodejs.org/topic/55af2bc4911fb957520eacef

 

http://cnodejs.org/topic/55af2bc4911fb957520eacef

分享到:
评论

相关推荐

    angularjs tutorial SitePoint

    - **示例**:提供一个简单的 AngularJS 示例,以便读者快速上手。 - **引入 AngularJS**:讲解如何将 AngularJS 库集成到项目中。 - **指向 AngularJS 应用**:指导如何指定 AngularJS 应用的入口点。 - **视图*...

    dhtmlxTreeV2.0专业版

    dhtmlx提供详尽的官方文档和示例代码,帮助开发者快速上手。文档通常包含API参考、配置选项、事件处理和示例应用等部分,确保开发者能够充分利用dhtmlxTree的所有功能。 **六、性能优化** dhtmlxTree V2.0在性能...

    VueJS与angular比较1

    2. **版本更新**:AngularJS 2.0进行了重大重构,需要开发者重新学习。 3. **不支持IE8**:同样,AngularJS也不支持老旧的IE8浏览器。 总结来说,VueJS适合小型项目或需要快速开发的应用,它的轻便性和简洁API使其...

    vue,angular,avalon这三种MVVM框架优缺点

    2. **AngularJS 2.0的转变**:AngularJS 2.0进行了重大重构,学习成本增加。 3. **不支持旧版IE**:不支持IE8及以下版本,且2.0版本可能更倾向于移动端。 【Avalon.js】 Avalon.js是司徒正美老师开发的一个迷你MVVM...

    ajax上手ppt

    随着前端框架(如jQuery、AngularJS、React和Vue.js)的出现,使用Ajax变得更加容易,开发者可以利用这些框架提供的API来简化Ajax交互的实现。 总的来说,Ajax是一种强大的工具,它改变了Web应用程序的设计和交互...

    activiti6-完整包-解压即用.rar

    总的来说,"activiti6-完整包-解压即用.rar" 提供了一站式的 Activiti 6 部署方案,无论是开发者还是管理员,都能快速上手并利用 Activiti 实现工作流的自动化。无论是小型项目还是大型企业,都能从中受益,提升业务...

    Vue.js学习文档

    - **文档友好**:Vue.js 提供了详尽且易于理解的官方文档,帮助开发者快速上手。 #### 二、Vue.js 的核心理念 - **数据驱动**:Vue.js 的核心理念之一是数据驱动,即数据模型的变化会直接反映到视图上。 - **组件...

    flowable-6.6.0-官方离线文档.zip

    - **示例和教程**:包含多个示例流程和代码,帮助初学者快速上手。 - **常见问题解答**:解答了用户在使用Flowable过程中可能遇到的问题和困惑。 通过深入研究Flowable 6.6.0的官方离线文档,无论是开发人员还是...

    HighCharts-很不错的图表jquery开源控件。

    5. **易用性**:对于初学者来说,HighCharts具有友好的API和丰富的文档,提供了很多示例代码,便于快速上手。"很不错的示例,各位可以瞅一瞅"这句话就表明了HighCharts的示例资源丰富,适合初学者学习和参考。 6. *...

    web-2-framework:Web 2框架

    Web 2.0框架就是这一理念的实现手段,它们提供了开发具有这些特性的应用程序所需的工具和库。 二、HTML在Web 2.0中的作用 HTML(超文本标记语言)是网页内容的基础,但在Web 2.0时代,HTML得到了升级,例如HTML5的...

    jQuery做的WebPart插件

    2. **文档**:关于如何使用、配置和扩展插件的说明文档,帮助开发者快速上手。 3. **示例**:展示插件功能和用法的实例,供开发者参考和学习。 4. **许可证文件**:说明插件的授权方式,可能是MIT、Apache 2.0等开源...

    leetcode安卓-Read-me-first:【先看这里】加入组织,一起学习!

    2.0入门实战教程 002.组件方式开发web app全站 003.以慕课网日志分析为例 进入大数据 Spark SQL 的世界 004.响应式开发一招致胜 005.微信小程序商城构建全栈应用 006.微信小程序入门与实战 007.玩转算法面试 ...

    Avalon中文长字符截取、关键字符隐藏、自定义过滤器

    总之,Avalon是一个适用于快速开发和轻量级应用的MVVM框架,通过自定义过滤器等特性,可以灵活地处理数据展示,尤其是在处理中文长字符串和敏感信息时。虽然它在某些方面可能不如其他大型框架全面,但对于某些项目来...

Global site tag (gtag.js) - Google Analytics