以前多少做過一點點前端绊寻,大概知道些JS掀宋,HTML戚丸,CSS的知識。最近技術(shù)選型又調(diào)研了下Angular——嘆一句世界變化真快呢裸违。
0. 思考
起先團隊中有用到AngularJS掖桦,當(dāng)時并不是太理解用它和velocity模板有什么不同,感覺也沒有減少太多的工作量供汛,而代碼結(jié)構(gòu)卻更加復(fù)雜了枪汪。
本人前端小白,純粹個人感覺怔昨,并非指AngularJS不好用雀久。
1. 工具或者框架
我的概念大概還停留在JQuery,Ajax等階段趁舀,因此第一次看到Angular這樣的框架赖捌,覺得非常新奇,所以想從我的角度談一下對“工具”或者“框架”的一些理解矮烹。
對JQuery等越庇,應(yīng)該算是工具,它們更多的是方便開發(fā)奉狈,提升開發(fā)便捷性卤唉,例如方便操作DOM、方便異步請求等仁期。但框架一般都需要有一整套閉環(huán)的設(shè)計理念桑驱、開發(fā)規(guī)范和約定在里面,這也是我初看Angular能夠深刻體會到的蟀拷。
Angular對前端開發(fā)提出了一整套的解決方案碰纬,它脫離了傳統(tǒng)后端的束縛,獨立出來问芬,成為了與后端平級的應(yīng)用或模塊悦析,甚至可以稱之為服務(wù)(可視化服務(wù))。
2. 技術(shù)歷史
雖我前端小白一枚此衅,但斷斷續(xù)續(xù)也和前端打了四五年交道强戴,說點歷史吧。
在很久之前挡鞍,前端是被限定在瀏覽器里的骑歹,而大多數(shù)前端工程師都掙扎在兼容各大瀏覽器的努力之中——樣式+事件。
直到Ajax出現(xiàn)墨微,讓大家發(fā)現(xiàn)JavaScript并不僅僅可以用來做超酷炫的彈窗道媚,其實可以做的更多。再之后開源瀏覽器引擎,Google Chrome和JavaScript V8的出現(xiàn)最域,終于JavaScript“成為”了一種腳本語言——其實一直都是祭示。
NodeJS的橫空出世苞冯,讓我這個做后端的碼農(nóng)十分驚愕手形,當(dāng)時還沒有完全接受JavaScript作為腳本語言的事實——尷尬酒觅。
NodeJS受到熱捧,最終確定了JavaScript的獨立發(fā)展薄翅,而不再僅僅是前端語言沙兰。
3. 技術(shù)趨勢
在我的印象中,隨著互聯(lián)網(wǎng)的發(fā)展翘魄,幾乎所有框架都旨在解決工程性的問題鼎天,之后才是性能上的優(yōu)化,如動靜分離熟丸,更多是部署考慮训措,而不是開發(fā)時衡量。
以前端為例光羞,這些年的發(fā)展方向也是在向應(yīng)用化和工程化方向發(fā)展绩鸣,其實想想這個是十分自然的。
前些年纱兑,大家努力在兼容各大瀏覽器(PC端)呀闻,但近幾年,隨著移動互聯(lián)網(wǎng)潜慎,HTML5等的發(fā)展捡多,前端工程師需要做到的則更多是在多終端、多分辨率下铐炫,對同一數(shù)據(jù)進行多樣式垒手、多布局的前端設(shè)計,這本身已經(jīng)差不多是工程性的工作了倒信。
引申: RESTFul
Cordova: 可以使用前端技術(shù)棧來開發(fā)終端應(yīng)用科贬。
Electron: 允許使用前端技術(shù)棧開發(fā)PC應(yīng)用。
寫到這里鳖悠,想到后端技術(shù)棧也曾嘗試過滲透到前端啊榜掌,只是沒流行起來,如基于Java的Applet乘综。
4. Angular初體驗
按照其官網(wǎng)-CN的教程憎账,寫了一遍Heros的例子,大概理解了Angular的基本邏輯和框架卡辰“澹——對我這個太久不接觸前端的人邪意,簡直是驚嘆啊。
上面也有提到反砌,Angular的設(shè)計理念抄罕,將前端提升到與后端平級的位置,成為“可視化服務(wù)”于颖,是整個平臺服務(wù)體系的一部分。
純粹從開發(fā)的角度看嚷兔,這將使之前基于Velocity之類的技術(shù)很尷尬森渐,即需要面對二選一的抉擇,我在最終決定技術(shù)選型時也糾結(jié)了很久冒晰。
相對于前端同衣,后端的框架和封裝,以及技術(shù)棧相對更成熟一些壶运,所以在移動互聯(lián)網(wǎng)發(fā)展這幾年耐齐,后端相對來說還是老幾樣,沒太多變化蒋情,而被最多提及的應(yīng)該就是RESTful API吧埠况。
RESTful API大行其道,其實就是為了應(yīng)對前文提到的“多終端棵癣,多分辨率辕翰,多應(yīng)用”等,我很喜歡的一個例子狈谊,就是天氣預(yù)報API(暫不論是否是RESTful風(fēng)格的)喜命,可以體會一下。
鑒于我只是走了一遍官方教程河劝,所以就不寫過多使用方面的內(nèi)容壁榕,可移步官網(wǎng)查看,https://www.angular.cn/赎瞎。
總結(jié)
本文從個人經(jīng)歷牌里,大概說了下初探Angular這個陌生框架的一些感觸和想法。因本人對前端了解有限煎娇,一些想法或表述會不準(zhǔn)確二庵,甚至是謬誤的,所以建議大家親自嘗試一下缓呛,再做判斷催享。
那么,對于我們團隊最后的技術(shù)選型呢哟绊?
我們主要考慮以下幾個問題:
- 后端是否已經(jīng)API化因妙;
- 前端應(yīng)用是否有多終端,多分辨率需求;
- 前后端分離攀涵,是否為開發(fā)需求铣耘;
- 團隊技術(shù)儲備情況;