在巴黎舉行的ng-europe大會(huì)上,Angular團(tuán)隊(duì)為與會(huì)者介紹了即將到來的AngularJS 2.0版本的細(xì)節(jié)。
新版本對1.x版本進(jìn)行了重大的顛覆,當(dāng)前還沒有任何遷移指南,此外它還是基于一個(gè)名為AtScript的新語言進(jìn)行開發(fā)的。 對于熟悉Angular 1.X版本的開發(fā)者來說,他們將看到一個(gè)完全不同的框架,并且必須學(xué)習(xí)一種新的架構(gòu)。
在一堂關(guān)于版本2.0的變更的講座中,Igor Minar 和 Tobias Bosch介紹了新的模板語法: Add 這種新語法將數(shù)據(jù)綁定到元素的屬性(property)上,而不是特性(attribute)上。這就允許你使用以下語法: 看上去類似于標(biāo)準(zhǔn)的HTML,但這個(gè)復(fù)選框元素不會(huì)暴露出checked特性。
新的模板引擎將數(shù)據(jù)綁定到元素的屬性上,即使這些屬性并非由DOM所暴露出的特性。 與新架構(gòu)引起的其它劇變相比,新的模板語法只是一個(gè)相對較小的改動(dòng)。
與會(huì)者之一的Michael Bromley描述了一些新版本的一些破壞性改動(dòng),版本2.0取消了1.X中的以下概念 控制器(Controller) (Directive定義對象) $scope angular.module jqLite 關(guān)于jqLite的取消,Igor是這樣說的: 在2.0中,我們不會(huì)在框架中使用任何DOM的封裝了,而是直接和原始的DOM打交道。自從我們啟動(dòng)項(xiàng)目以來,DOM本身已經(jīng)得到了很大的改善,因此我們不再需要一個(gè)兼容層來幫助我們應(yīng)付跨瀏覽器的問題了。
所以我們可以直接操作原始的DOM。不過如果你想要使用jQuery,在你的組件中應(yīng)用jQuery,那也完全沒問題。
2.0版本的一個(gè)目標(biāo)是改善Angular應(yīng)用的開發(fā)體驗(yàn),在第2天的主題演講上,AngularJS之父Mi?ko Hevery描述了如何通過使用AtScript來實(shí)現(xiàn)這一目標(biāo)。 AtScript是TypeScript的一個(gè)超集,后者是由微軟創(chuàng)建的一門語言。
TypeScript為JavaScript加入了類型,而AtScript進(jìn)一步擴(kuò)展了這一思想,它為類型加入了標(biāo)注與動(dòng)態(tài)注入。 標(biāo)注允許開發(fā)者為某個(gè)類加入“表達(dá)意圖”的能力。
因此,無需通過模板代碼的方式創(chuàng)建自定義directive,開發(fā)者可以創(chuàng)建一個(gè)類,并告訴AngularJS“這是一個(gè)directive”。而動(dòng)態(tài)注入的能力允許框架在運(yùn)行時(shí)檢查類型信息。
不過,AtScript的使用是可選的,開發(fā)Angular 2.0應(yīng)用并不一定要使用AtScript。Mi?ko說道:由于現(xiàn)在的社區(qū)和類庫都是使用純JavaScript開發(fā)的,因此不強(qiáng)迫AtScript的使用是非常重要的目標(biāo)。
而由于AtScript可以直接編譯為EcmaScript 5(ES5),因此開發(fā)者可以直接編寫Angular 2.0。 在一次問答講座上,開發(fā)者們問道Angular 1.3還將獲得多長時(shí)間的支持。
Brad Green是這樣回答的: 比較合理的期望是,我們大約還需要1年半至2年時(shí)間以發(fā)布2.0的最終版本,這段時(shí)間內(nèi)我們還會(huì)為1.3提供缺陷修復(fù)及安全補(bǔ)丁。 Angular團(tuán)隊(duì)還暗示他們沒有為從Angular 1.X遷移到2.0提供遷移指南,但他們也不排除這種可能。
目前還沒有確切的發(fā)布日期,不過團(tuán)隊(duì)基本達(dá)成了共識(shí),會(huì)在2015年終最終完成版本2.0。 Brad Green還表示,Angular 2.0只會(huì)支持“最新的瀏覽器”,但沒有指出確切的版本。
他說他們的團(tuán)隊(duì)“在嘗試基于未來的標(biāo)準(zhǔn)進(jìn)行開發(fā),而不是關(guān)注于現(xiàn)有的標(biāo)準(zhǔn)”。 開發(fā)者們對于這次重大變更的感覺可謂是五味陳雜。
Hacker News的用戶zak_mc_kracken說道: 雖然新版本依然叫做“Angular”,但它與之前的版本幾乎沒有多少相似之處,它完全是一個(gè)新的框架。一想到我對于Angular 1所掌握的全部知識(shí)都將成為過期的內(nèi)容,就禁不住感到有點(diǎn)兒悲傷,但我也很期待對這個(gè)新的框架進(jìn)行一番研究。
如果它的革新性能夠達(dá)到Angular 1的一半,那我就會(huì)從中獲得很大的樂趣。 ng-europe大會(huì)的視頻曾被短暫地上傳到Y(jié)ouTube上,但很快就被刪除了。
未來的發(fā)展趨勢是前端后端只靠json數(shù)據(jù)來進(jìn)行通信:后端只處理和發(fā)送一段json數(shù)據(jù)到前端,然后計(jì)算和模板渲染都在前端進(jìn)行。而前端的改動(dòng)后,形成json數(shù)據(jù)然后傳回到后端。未來趨勢就是:后臺(tái)程序再也不做模板的任何處理
AngularJS
的作用簡單說就是就是把后臺(tái)的json值直接用html進(jìn)行渲染,然后html的操作又直接在形成json傳回后臺(tái)。
未來的后臺(tái)MVC,試圖不再是模板了,而是一段結(jié)構(gòu)整齊標(biāo)準(zhǔn)的JSON,而這個(gè)JSON作為前臺(tái)的model直接在AngularJS直接使用。
或者說后臺(tái)的試圖是前臺(tái)的模型,而整個(gè)前臺(tái)就是后臺(tái)的視圖。后臺(tái)程序再也不做模板的任何處理了。
Angular是框架的一種,不學(xué)也能開發(fā)前端。學(xué)backbone或者ember也能開發(fā)前端。沒有js的mvc,就光弄個(gè)jquery,也能開發(fā)前端。
那到底要不要學(xué)?個(gè)人覺得就是要看發(fā)展趨勢。angular是否簡化的前端開發(fā),是否符合未來前端的開發(fā)趨勢。以現(xiàn)在的js的發(fā)展程度來看,angular
是符合發(fā)展趨勢的,第一,解耦前端,第二,可以模塊化,第三可測試,第四天生支持json,第五依賴注入等等等,還有一些其他特性使得angular跟隨甚至是推動(dòng)了前端的開發(fā)趨勢。
所以說angular學(xué)習(xí)是有好處的:
1.了解前端的開發(fā)趨勢
2.學(xué)習(xí)MV*的設(shè)計(jì)方法
3.學(xué)習(xí)模塊化編程
4.學(xué)習(xí)如何測試模塊
5.使用angular簡化開發(fā)流程
6.隨著google的大力支持和逐漸流行,公司開始使用angular,有些崗位需要有angular的知識(shí)才能工作。
angularjs 與 jquery 等傳統(tǒng)操作 dom 的思想有所不同,
對于 jquery 等,一般是先有完整 dom 然后在這些 dom 的基礎(chǔ)上進(jìn)行二次調(diào)教。
而 angularjs 等框架則是 根據(jù) 數(shù)據(jù)模型 以及其對應(yīng)的 dom 模版,然后通過模版像搭積木那樣組合頁面。
顯然的,前者在 seo 上有天然優(yōu)勢;而后者,搜索引擎還只能拿到某個(gè)模版,而無內(nèi)容。
暫時(shí)沒想到有什么特別好的解決方案,或許,對于內(nèi)容頁,可以繼續(xù)使用傳統(tǒng)方式,而只在需要更多交互的地方應(yīng)用 angularjs,特別是在移動(dòng)端應(yīng)用上。
同理適用于各種 前端的 mvc 框架,后端只要為前端提供數(shù)據(jù)接口,而不再需要為其拼接 html.
在巴黎舉行的ng-europe大會(huì)上,Angular團(tuán)隊(duì)為與會(huì)者介紹了即將到來的AngularJS 2.0版本的細(xì)節(jié)。
新版本對1.x版本進(jìn)行了重大的顛覆,當(dāng)前還沒有任何遷移指南,此外它還是基于一個(gè)名為AtScript的新語言進(jìn)行開發(fā)的。 對于熟悉Angular 1.X版本的開發(fā)者來說,他們將看到一個(gè)完全不同的框架,并且必須學(xué)習(xí)一種新的架構(gòu)。
在一堂關(guān)于版本2.0的變更的講座中,Igor Minar 和 Tobias Bosch介紹了新的模板語法: 這種新語法將數(shù)據(jù)綁定到元素的屬性(property)上,而不是特性(attribute)上。這就允許你使用以下語法: 看上去類似于標(biāo)準(zhǔn)的HTML,但這個(gè)復(fù)選框元素不會(huì)暴露出checked特性。
新的模板引擎將數(shù)據(jù)綁定到元素的屬性上,即使這些屬性并非由DOM所暴露出的特性。 與新架構(gòu)引起的其它劇變相比,新的模板語法只是一個(gè)相對較小的改動(dòng)。
與會(huì)者之一的Michael Bromley描述了一些新版本的一些破壞性改動(dòng),版本2.0取消了1.X中的以下概念 控制器(Controller) (Directive定義對象) $scope angular.module jqLite 關(guān)于jqLite的取消,Igor是這樣說的: 在2.0中,我們不會(huì)在框架中使用任何DOM的封裝了,而是直接和原始的DOM打交道。自從我們啟動(dòng)項(xiàng)目以來,DOM本身已經(jīng)得到了很大的改善,因此我們不再需要一個(gè)兼容層來幫助我們應(yīng)付跨瀏覽器的問題了。
所以我們可以直接操作原始的DOM。不過如果你想要使用jQuery,在你的組件中應(yīng)用jQuery,那也完全沒問題。
2.0版本的一個(gè)目標(biāo)是改善Angular應(yīng)用的開發(fā)體驗(yàn),在第2天的主題演講上,AngularJS之父Mi?ko Hevery描述了如何通過使用AtScript來實(shí)現(xiàn)這一目標(biāo)。 AtScript是TypeScript的一個(gè)超集,后者是由微軟創(chuàng)建的一門語言。
TypeScript為JavaScript加入了類型,而AtScript進(jìn)一步擴(kuò)展了這一思想,它為類型加入了標(biāo)注與動(dòng)態(tài)注入。 標(biāo)注允許開發(fā)者為某個(gè)類加入“表達(dá)意圖”的能力。
因此,無需通過模板代碼的方式創(chuàng)建自定義directive,開發(fā)者可以創(chuàng)建一個(gè)類,并告訴AngularJS“這是一個(gè)directive”。而動(dòng)態(tài)注入的能力允許框架在運(yùn)行時(shí)檢查類型信息。
不過,AtScript的使用是可選的,開發(fā)Angular 2.0應(yīng)用并不一定要使用AtScript。Mi?ko說道:由于現(xiàn)在的社區(qū)和類庫都是使用純JavaScript開發(fā)的,因此不強(qiáng)迫AtScript的使用是非常重要的目標(biāo)。
而由于AtScript可以直接編譯為EcmaScript 5(ES5),因此開發(fā)者可以直接編寫Angular 2.0。 在一次問答講座上,開發(fā)者們問道Angular 1.3還將獲得多長時(shí)間的支持。
Brad Green是這樣回答的: 比較合理的期望是,我們大約還需要1年半至2年時(shí)間以發(fā)布2.0的最終版本,這段時(shí)間內(nèi)我們還會(huì)為1.3提供缺陷修復(fù)及安全補(bǔ)丁。 Angular團(tuán)隊(duì)還暗示他們沒有為從Angular 1.X遷移到2.0提供遷移指南,但他們也不排除這種可能。
目前還沒有確切的發(fā)布日期,不過團(tuán)隊(duì)基本達(dá)成了共識(shí),會(huì)在2015年終最終完成版本2.0。 Brad Green還表示,Angular 2.0只會(huì)支持“最新的瀏覽器”,但沒有指出確切的版本。
他說他們的團(tuán)隊(duì)“在嘗試基于未來的標(biāo)準(zhǔn)進(jìn)行開發(fā),而不是關(guān)注于現(xiàn)有的標(biāo)準(zhǔn)”。 開發(fā)者們對于這次重大變更的感覺可謂是五味陳雜。
Hacker News的用戶zak_mc_kracken說道: 雖然新版本依然叫做“Angular”,但它與之前的版本幾乎沒有多少相似之處,它完全是一個(gè)新的框架。一想到我對于Angular 1所掌握的全部知識(shí)都將成為過期的內(nèi)容,就禁不住感到有點(diǎn)兒悲傷,但我也很期待對這個(gè)新的框架進(jìn)行一番研究。
如果它的革新性能夠達(dá)到Angular 1的一半,那我就會(huì)從中獲得很大的樂趣。 ng-europe大會(huì)的視頻曾被短暫地上傳到Y(jié)ouTube上,但很快就被刪除了。
實(shí)在是不能對jquery的ajax方法和基于頁面dom的各種取值、傳值方法滿意(雖然jquery已經(jīng)解救過我一次了),剛好手上這個(gè)項(xiàng)目用jquery的方法寫了一半,決定試試很久以前自學(xué)的angularJS,把現(xiàn)在項(xiàng)目中jquery得部分用angularJS重寫一遍。
寫的時(shí)候碰到很多問題,因?yàn)閯傞_始用,寫法思路還是和寫jquery相似,導(dǎo)致與在一個(gè)生成select option下拉框時(shí)花費(fèi)了2個(gè)小時(shí)才最終搞定。 普通html select option, 需要該字段名稱name,選線id,選項(xiàng)label a b c jquery的取選項(xiàng)得做法 select_id = $("#data_select option:selected").val(); jqueryde的思路大概是上面這樣的,但是使用了angularJS后,著實(shí)讓我迷惑了 angularJS在select下使用ng-option 標(biāo)簽生成選項(xiàng)實(shí)例 生成的html dom如下: x1 x2 x3 x4 。
看見這個(gè)輸出,我發(fā)現(xiàn)沒法把id寫在option > value上 這豈不是無法獲取選項(xiàng)信息了?這不行,萬萬不行 。結(jié)果開始了長時(shí)間的google,還是沒有解決辦法,就只能生成這種只有l(wèi)abel的option,這咋辦呢?難道要用ng-repeat生成option? {{framework_y.name}} 我甚至開始這么嘗試了,但是我的理智戰(zhàn)勝了偷懶的邪念,決定通過ng-click取model里的值看一看,結(jié)果console.log出來一看,發(fā)現(xiàn)自己一個(gè)多小時(shí)都傻x了。
看看console里的結(jié)果: 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根據(jù)model的名稱早就把每個(gè)相關(guān)的input的值自動(dòng)放在Object中了 根本不在需要什么value='id',只要把model的object從接口中取出來,放在html頁面上,、選中的option的全部數(shù)據(jù)angularJS自動(dòng)就幫我取到controller中得點(diǎn)擊事件中去了。
run方法用于初始化全局的數(shù)據(jù),僅對全局作用域起作用。
舉個(gè)栗子吧:
<script type="text/javascript">
var m1 = angular.module('myApp',[]);
m1.run(['$rootScope',function($rootScope){
$rootScope.name = 'hello';
}]);
console.log( m1 );
</script>
聲明:本網(wǎng)站尊重并保護(hù)知識(shí)產(chǎn)權(quán),根據(jù)《信息網(wǎng)絡(luò)傳播權(quán)保護(hù)條例》,如果我們轉(zhuǎn)載的作品侵犯了您的權(quán)利,請?jiān)谝粋€(gè)月內(nèi)通知我們,我們會(huì)及時(shí)刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學(xué)習(xí)鳥. 頁面生成時(shí)間:3.108秒