1. 程式人生 > >一個後端的前端學習之旅你應該決定學什麼

一個後端的前端學習之旅你應該決定學什麼

年末學點新東西,後端的東西寫久了考慮學點前端的東西。

首先考慮選擇用什麼,公司的前端同學給我了兩個連結 es6 babel,大體看了下es6是下一波js規範,出了一些js的新語法,解決了一些坑(肯定有新坑),babel是雖然現在很多瀏覽器不支援es6但是你可以寫es6我給你編譯成支援的東西。

然而我並不想學習原生的js,作為一個後端我不是特別想關於js裡面的各種詭異的坑,而且我以前寫過前端,so選擇coffee是比較好的選擇,可以大體說一下,coffee雖然號稱借鑑了很多python ruby的語法,個人感覺借鑑ruby的更多(然而我是寫python的,曾經大體看過ruby,貌似看到切片那裡就無法忍受了),不過coffee寫js還是很不錯的。

coffee會把我的類python程式碼編譯成js,幫我避開很多js的坑這是我選擇coffee的原因。推薦coffeescript小書同學們可以先看一下,百度一搜一大片37頁而已。

然而作為一個前端的專案,所以自然我不想回到刀耕火種的時代,brunch並不好用,grunt看起來也很煩,gulp兩年前有點慘,然而現在挺好用的,so 我決定先找個gulp + coffee的腳手架先把基本的前端編譯+壓縮+除錯的一些問題解決,這樣才能沒有任何後顧之憂快速的學習一些前端的東西,關注點就可以更加集中。

github一搜就能非常容易的搜到一個腳手架,然而並不能很順利的跑通,我fork了一份https://github.com/duoduo369/gulp-frontend-scaffold

(我的專案非常大因為我把node_ bower_的安裝檔案放到git中了,哎網路坑爹沒辦法)

所以剩下的關注點是其他的前端技術:

  • coffee

  • styl

  • 某種css框架(我的部落格我之前使用polymer寫的,然而google的工程師一貫喜歡挖坑讓你跳,坑爹的是當時的polymer版本人家重構了,很多子專案都直接close了,我bower都無法安裝,所以部落格好久沒加新功能了。好吧其實是懶)

  • 某種js框架,js太多了,可能隨便選一個React什麼的

web開發分為前後,作為一個後端工程師,或者是前端小白,前端的開發可能會很頭疼。
一路走來,坎坎坷坷,好在升級打怪還是會遺留一些經驗的,記錄下現代前端開發的經驗。
黑暗時代的前端開發,在這個時代,前端開發的流程可能是這樣的:
寫各種html、css、js
跑到各種前端模組網站上手動下載各種庫
一遍遍重新整理瀏覽器,檢視效果
最終壓縮各種靜態檔案
問題
html程式碼重複,例如對於一個header和footer極有可能違反DRY,
後期維護的時候絕對會是鎮痛
無法實時檢視效果,需要手動重新整理,就像某些蛋疼的java伺服器,寫個api不能自動載入
需要手動重啟,一個小時調不了幾個bug(Life is too short,please use python).
壓縮這個事情很多人是不會去做的。
程式碼的模組性很差,jquery確實靈活,不過時間長了之後程式碼就會雜草叢生,尤其是有
別人接管你的程式碼的時候,極有可能看不懂,然後重構,這也就是為什麼前端會出現各種
MVC框架的原因
現代前端開發
這個時代已經不是刀耕火種的年代了。
首先說說MVC
MVC在後端已經出現N多年了,前端現在也有出現,但是前端是不是要用MVC這種
東西是有待商榷的,個人的體會是,如果你的專案很小,只有 你1~2個工程師
維護的時候,不需要用MVC框架,原因很簡單,學習成本,時間是寶貴的,學習成本
絕對是硬傷,例如你選擇Backbone Angular的時候,陡峭的學習曲線不僅僅會影響
你自己,以後新人在用你專案的時候也會經歷這個痛苦。
MVC的優點,貌似這個就不用說了,一搜一大片。
我的實踐
github上有很多優秀的開源專案,前端的工具也有很多,善用工具,善用優秀庫
check到不同分支使用,或者直接download release
使用coffee寫js,coffee會幫你避開js裡面的各種血坑,使用類似python的語法
使用html、css模板引擎,可以讓你少寫很多字母
html我選擇的是jade, 可以使用include的語法,幫你減少DRY的可能性
css我選擇stylus
使用構建工具,我使用的是brunch,npm,bower
brunch解決黑暗時代一遍一遍手動重新整理,以及自動引擎coffee,jade,編譯
bower使得js、css庫的安裝方式變的異常簡單
npm類似bower
bootstrap或者purecss(YUI),個人傾向於使用purecss(IE7+),IE6需要你自己手寫css
如果不用MVC,對js又不是很懂的話可以使用zarkfx,絕對節省你的開發時間,
zarkfx可以使用brunch + jade的 具體可以參考我simple專案的br-coffee-jade分支
如果使用MVC,backbone + chaplin or angular選一個吧,注意MVC裡面的限制,
例如使用MVC後他們有自己的驅動機制,對DOM操作都有限制,尤其是不能使用
zarkfx,這點非常討厭。作者:
北大青鳥