设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 IT综合资讯 查看内容

Angular 2.0的设计方法和原则

2014-3-20 09:50| 发布者: joejoe0332| 查看: 3514| 评论: 0|原作者: 陈鑫伟|来自: 伯乐在线

摘要:   在开始实现Angular 2.0版本之际,我们认为应该着手写一些东西,告诉大家我们在设计上的考虑,以及为什么做这样的改变。现在把这些和大家一起分享,从而有助我们做出正确选择。   Angular 2 是一个针对移动应用 ...


  更简单化


  依赖注入(设计

  依赖注入依然是 Angular 区别于客户端框架的关键所在,它帮你消除了很多应用中的连接性代码,并且使默认的可测试性变成了现实。尽管在我们开发应用的时候已经很享受依赖注入带来的好处,但我们对目前的实现仍然不满意。我们可以让他变的更简单且功能更强大。

  我们会看到一个更加简化的依赖注入,移除了配置阶段,使用声明式的ES6+标注取代命令式的代码来简化语法。通过依赖注入和ES6模块化的模块加载的集成而获得更加强大的功能。我们还会看到使用子注入器(child injector)的方式来实现模块延时加载的特性。

  上面文档链接中是我们的初步设想,但是它是Angular 2中你现在就可以尝试的部分。你可以在这个代码仓库中看到目前实现的细节。


  模板和指令(设计

  能够直接使用HTML来定义模板,以及扩展HTML的语法,这些都是Angular赖以生存的东西。我们对Angular 2 的模板编译器新增了很多高级的改进:

  • 简化指令的API

  • 支持与其他标准Web框架的集成

  • 提高性能

  • 允许IDE等工具对模板进行分析和验证

  对上面的这些内容,我们非常激动,以至于迫不及待地炫耀它们。有太多优秀的东西而不能都在这篇概要中摘录,所以请直接跳到设计文档来查看更多内容。


  更强大的功能

  触摸动画(设计

  用户们已经习惯于一些特定的触摸行为模式。比如,使用手指来滚动一个列表,循环查看轮播中的照片,通过滑动来删除一个列表项。然而:

  • 目前的对于轮播、无限滚动等的实现,都没有共享通用的核心代码,因此有一堆各种各样的冗余和差异。

  • 目前的大多数的实现对原生的滚动事件都不提供可选的支持,因为老的浏览器甚至一些现代的浏览器对它们支持不好。然而,这些实现,也就不能在新设备上达到本来可以有的最佳性能。

  我们想给这些场景以最一流的支持,来让你的应用尽可能达到最佳的用户体验。


  路由(设计

  初始的Angular路由只为一些简单的用例而设计的。随着Angular的成长,我们已经渐渐的加入了一些新的功能。然而,底层的设计始终不适合做更多深层次的扩展。

  我们非常关注一些已知的用例以及其他很多应用框架的路由的实现,这样我们才能交付一个简单而又可扩展的路由,能够广泛地适用于各种应用。

  我们特别热衷于支持的一些用例包括:

  • 基于状态(State-based)的路由

  • 集成授权和认证

  • 选择性地保留一些视图的状态,移动端尤其需要。


  持久化(设计

  在Angular简陋的 $http 之上,很多开发者渴望一个更高层次的抽象来处理来自服务器端的数据以及浏览器的本地持久化存储。

  移动应用需要在一个“一直离线”的模式下工作,通过同步与服务器端保持一致。RESTful服务需要的远比我们$resource提供的更多。有些数据需要能够批量更新,而有些需要持续的流连接。

  在这个新的持久化层,我们会为这些情景提供干净的架构,如果需要的话会从当前的样板文件中剔除更多。


  问答

  什么时候能做完?

  如果你和我们一起经历了 1.2 版本的发布,你应该知道我们也不知道答案。:)尽管我们现在才发表设计文档,但我们已经为很多模块做过了原型。依赖注入和Zone.js甚至已经可以使用了。所有的工作都会在GitHub上完成,我们也会继续发布每周会议记录,你可以一直关注。


  Angular 1.x 到 Angular 2 的移植过程将是怎样的?

  Angular 2 目前仍然在开发中,老实说我们也不知道。在我们的想象中,移植将会非常直接和简单,但是也不是不劳而获的。如何使用ES6的优势将是最大的工作重心。模板 的更新几乎就是机械的查找和替换的练习。如果你的控制器中包含的是你的业务逻辑,而没有使用太多现有的Angular API的话,升级将会非常简单。最需要考虑的部分会是你对模块和指令的使用。


  Angualr 2 会是 PhoneGap 或 Ionic框架等移动技术的替代品吗?

  不是,Angular依然只是核心模块。你仍然需要使用其他的库,比如 Ionic框架来提供移动优化的 CSS/JS组件,PhoneGap之类的工具来打包和访问原生API。


  Angular 2 和 AngularDart的关系是怎样的?

  在将AngularJS向Dart语言移植的时候,我们运用所有我们学到的东西创建了一个新的Angular版本。这篇文档中讨论的很多改进已经在那里了,比如改良的指令的概念和语法,以及类和基于标注的依赖注入。

  尽管这不是我们在 2 中要实现的目标,但它是对未来的一个很好的预览。

  我们在打造AngularJS 2的同时,我们也会不断升级 AngularDart,这样喜欢Dart语言的人可以和喜欢JS的人享用到相同的好处。我们的目标是根据你选择的语言都会有一个单一的框架。


  其他有趣的文档


原文链接: AngularJS   翻译: 伯乐在线 - 陈 鑫伟
译文链接: http://blog.jobbole.com/63264/

酷毙

雷人
1

鲜花

鸡蛋

漂亮

刚表态过的朋友 (1 人)

  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部