在巴黎举行的ng-europe大会上,Angular团队为与会者介绍了即将到来的AngularJS 2.0版本的细节。
新版本对1.x版本进行了重大的颠覆,当前还没有任何迁移指南,此外它还是基于一个名为AtScript的新语言进行开发的。 对于熟悉Angular 1.X版本的开发者来说,他们将看到一个完全不同的框架,并且必须学习一种新的架构。
在一堂关于版本2.0的变更的讲座中,Igor Minar 和 Tobias Bosch介绍了新的模板语法: Add 这种新语法将数据绑定到元素的属性(property)上,而不是特性(attribute)上。这就允许你使用以下语法: 看上去类似于标准的HTML,但这个复选框元素不会暴露出checked特性。
新的模板引擎将数据绑定到元素的属性上,即使这些属性并非由DOM所暴露出的特性。 与新架构引起的其它剧变相比,新的模板语法只是一个相对较小的改动。
与会者之一的Michael Bromley描述了一些新版本的一些破坏性改动,版本2.0取消了1.X中的以下概念 控制器(Controller) (Directive定义对象) $scope angular.module jqLite 关于jqLite的取消,Igor是这样说的: 在2.0中,我们不会在框架中使用任何DOM的封装了,而是直接和原始的DOM打交道。自从我们启动项目以来,DOM本身已经得到了很大的改善,因此我们不再需要一个兼容层来帮助我们应付跨浏览器的问题了。
所以我们可以直接操作原始的DOM。不过如果你想要使用jQuery,在你的组件中应用jQuery,那也完全没问题。
2.0版本的一个目标是改善Angular应用的开发体验,在第2天的主题演讲上,AngularJS之父Miško Hevery描述了如何通过使用AtScript来实现这一目标。 AtScript是TypeScript的一个超集,后者是由微软创建的一门语言。
TypeScript为JavaScript加入了类型,而AtScript进一步扩展了这一思想,它为类型加入了标注与动态注入。 标注允许开发者为某个类加入“表达意图”的能力。
因此,无需通过模板代码的方式创建自定义directive,开发者可以创建一个类,并告诉AngularJS“这是一个directive”。而动态注入的能力允许框架在运行时检查类型信息。
不过,AtScript的使用是可选的,开发Angular 2.0应用并不一定要使用AtScript。Miško说道:由于现在的社区和类库都是使用纯JavaScript开发的,因此不强迫AtScript的使用是非常重要的目标。
而由于AtScript可以直接编译为EcmaScript 5(ES5),因此开发者可以直接编写Angular 2.0。 在一次问答讲座上,开发者们问道Angular 1.3还将获得多长时间的支持。
Brad Green是这样回答的: 比较合理的期望是,我们大约还需要1年半至2年时间以发布2.0的最终版本,这段时间内我们还会为1.3提供缺陷修复及安全补丁。 Angular团队还暗示他们没有为从Angular 1.X迁移到2.0提供迁移指南,但他们也不排除这种可能。
目前还没有确切的发布日期,不过团队基本达成了共识,会在2015年终最终完成版本2.0。 Brad Green还表示,Angular 2.0只会支持“最新的浏览器”,但没有指出确切的版本。
他说他们的团队“在尝试基于未来的标准进行开发,而不是关注于现有的标准”。 开发者们对于这次重大变更的感觉可谓是五味陈杂。
Hacker News的用户zak_mc_kracken说道: 虽然新版本依然叫做“Angular”,但它与之前的版本几乎没有多少相似之处,它完全是一个新的框架。一想到我对于Angular 1所掌握的全部知识都将成为过期的内容,就禁不住感到有点儿悲伤,但我也很期待对这个新的框架进行一番研究。
如果它的革新性能够达到Angular 1的一半,那我就会从中获得很大的乐趣。 ng-europe大会的视频曾被短暂地上传到YouTube上,但很快就被删除了。
未来的发展趋势是前端后端只靠json数据来进行通信:后端只处理和发送一段json数据到前端,然后计算和模板渲染都在前端进行。而前端的改动后,形成json数据然后传回到后端。未来趋势就是:后台程序再也不做模板的任何处理
AngularJS
的作用简单说就是就是把后台的json值直接用html进行渲染,然后html的操作又直接在形成json传回后台。
未来的后台MVC,试图不再是模板了,而是一段结构整齐标准的JSON,而这个JSON作为前台的model直接在AngularJS直接使用。
或者说后台的试图是前台的模型,而整个前台就是后台的视图。后台程序再也不做模板的任何处理了。
Angular是框架的一种,不学也能开发前端。学backbone或者ember也能开发前端。没有js的mvc,就光弄个jquery,也能开发前端。
那到底要不要学?个人觉得就是要看发展趋势。angular是否简化的前端开发,是否符合未来前端的开发趋势。以现在的js的发展程度来看,angular
是符合发展趋势的,第一,解耦前端,第二,可以模块化,第三可测试,第四天生支持json,第五依赖注入等等等,还有一些其他特性使得angular跟随甚至是推动了前端的开发趋势。
所以说angular学习是有好处的:
1.了解前端的开发趋势
2.学习MV*的设计方法
3.学习模块化编程
4.学习如何测试模块
5.使用angular简化开发流程
6.随着google的大力支持和逐渐流行,公司开始使用angular,有些岗位需要有angular的知识才能工作。
angularjs 与 jquery 等传统操作 dom 的思想有所不同,
对于 jquery 等,一般是先有完整 dom 然后在这些 dom 的基础上进行二次调教。
而 angularjs 等框架则是 根据 数据模型 以及其对应的 dom 模版,然后通过模版像搭积木那样组合页面。
显然的,前者在 seo 上有天然优势;而后者,搜索引擎还只能拿到某个模版,而无内容。
暂时没想到有什么特别好的解决方案,或许,对于内容页,可以继续使用传统方式,而只在需要更多交互的地方应用 angularjs,特别是在移动端应用上。
同理适用于各种 前端的 mvc 框架,后端只要为前端提供数据接口,而不再需要为其拼接 html.
在巴黎举行的ng-europe大会上,Angular团队为与会者介绍了即将到来的AngularJS 2.0版本的细节。
新版本对1.x版本进行了重大的颠覆,当前还没有任何迁移指南,此外它还是基于一个名为AtScript的新语言进行开发的。 对于熟悉Angular 1.X版本的开发者来说,他们将看到一个完全不同的框架,并且必须学习一种新的架构。
在一堂关于版本2.0的变更的讲座中,Igor Minar 和 Tobias Bosch介绍了新的模板语法: 这种新语法将数据绑定到元素的属性(property)上,而不是特性(attribute)上。这就允许你使用以下语法: 看上去类似于标准的HTML,但这个复选框元素不会暴露出checked特性。
新的模板引擎将数据绑定到元素的属性上,即使这些属性并非由DOM所暴露出的特性。 与新架构引起的其它剧变相比,新的模板语法只是一个相对较小的改动。
与会者之一的Michael Bromley描述了一些新版本的一些破坏性改动,版本2.0取消了1.X中的以下概念 控制器(Controller) (Directive定义对象) $scope angular.module jqLite 关于jqLite的取消,Igor是这样说的: 在2.0中,我们不会在框架中使用任何DOM的封装了,而是直接和原始的DOM打交道。自从我们启动项目以来,DOM本身已经得到了很大的改善,因此我们不再需要一个兼容层来帮助我们应付跨浏览器的问题了。
所以我们可以直接操作原始的DOM。不过如果你想要使用jQuery,在你的组件中应用jQuery,那也完全没问题。
2.0版本的一个目标是改善Angular应用的开发体验,在第2天的主题演讲上,AngularJS之父Miško Hevery描述了如何通过使用AtScript来实现这一目标。 AtScript是TypeScript的一个超集,后者是由微软创建的一门语言。
TypeScript为JavaScript加入了类型,而AtScript进一步扩展了这一思想,它为类型加入了标注与动态注入。 标注允许开发者为某个类加入“表达意图”的能力。
因此,无需通过模板代码的方式创建自定义directive,开发者可以创建一个类,并告诉AngularJS“这是一个directive”。而动态注入的能力允许框架在运行时检查类型信息。
不过,AtScript的使用是可选的,开发Angular 2.0应用并不一定要使用AtScript。Miško说道:由于现在的社区和类库都是使用纯JavaScript开发的,因此不强迫AtScript的使用是非常重要的目标。
而由于AtScript可以直接编译为EcmaScript 5(ES5),因此开发者可以直接编写Angular 2.0。 在一次问答讲座上,开发者们问道Angular 1.3还将获得多长时间的支持。
Brad Green是这样回答的: 比较合理的期望是,我们大约还需要1年半至2年时间以发布2.0的最终版本,这段时间内我们还会为1.3提供缺陷修复及安全补丁。 Angular团队还暗示他们没有为从Angular 1.X迁移到2.0提供迁移指南,但他们也不排除这种可能。
目前还没有确切的发布日期,不过团队基本达成了共识,会在2015年终最终完成版本2.0。 Brad Green还表示,Angular 2.0只会支持“最新的浏览器”,但没有指出确切的版本。
他说他们的团队“在尝试基于未来的标准进行开发,而不是关注于现有的标准”。 开发者们对于这次重大变更的感觉可谓是五味陈杂。
Hacker News的用户zak_mc_kracken说道: 虽然新版本依然叫做“Angular”,但它与之前的版本几乎没有多少相似之处,它完全是一个新的框架。一想到我对于Angular 1所掌握的全部知识都将成为过期的内容,就禁不住感到有点儿悲伤,但我也很期待对这个新的框架进行一番研究。
如果它的革新性能够达到Angular 1的一半,那我就会从中获得很大的乐趣。 ng-europe大会的视频曾被短暂地上传到YouTube上,但很快就被删除了。
实在是不能对jquery的ajax方法和基于页面dom的各种取值、传值方法满意(虽然jquery已经解救过我一次了),刚好手上这个项目用jquery的方法写了一半,决定试试很久以前自学的angularJS,把现在项目中jquery得部分用angularJS重写一遍。
写的时候碰到很多问题,因为刚开始用,写法思路还是和写jquery相似,导致与在一个生成select option下拉框时花费了2个小时才最终搞定。 普通html select option, 需要该字段名称name,选线id,选项label a b c jquery的取选项得做法 select_id = $("#data_select option:selected").val(); jqueryde的思路大概是上面这样的,但是使用了angularJS后,着实让我迷惑了 angularJS在select下使用ng-option 标签生成选项实例 生成的html dom如下: x1 x2 x3 x4 。
看见这个输出,我发现没法把id写在option > value上 这岂不是无法获取选项信息了?这不行,万万不行 。结果开始了长时间的google,还是没有解决办法,就只能生成这种只有label的option,这咋办呢?难道要用ng-repeat生成option? {{framework_y.name}} 我甚至开始这么尝试了,但是我的理智战胜了偷懒的邪念,决定通过ng-click取model里的值看一看,结果console.log出来一看,发现自己一个多小时都傻x了。
看看console里的结果: Object {bubble_name: "ab", bubble_description: "b", x: Object, y: Object, series: Object} bubble_description: "b" bubble_name: "ab" series: Object x: Object y: Object date: "2014-03-11 09:03:22" description: "" disable_flag: "1" id: "9" name: "y3" position: "1" team_id: "8" type: "y" __proto__: Object __proto__: Object angularJS根据model的名称早就把每个相关的input的值自动放在Object中了 根本不在需要什么value='id',只要把model的object从接口中取出来,放在html页面上,、选中的option的全部数据angularJS自动就帮我取到controller中得点击事件中去了。
run方法用于初始化全局的数据,仅对全局作用域起作用。
举个栗子吧:
<script type="text/javascript">
var m1 = angular.module('myApp',[]);
m1.run(['$rootScope',function($rootScope){
$rootScope.name = 'hello';
}]);
console.log( m1 );
</script>
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
蜀ICP备2020033479号-4 Copyright © 2016 学习鸟. 页面生成时间:3.108秒