從Java的角度理解前端框架,nodejs,reactjs,angularjs,requirejs,seajs
【前端神祕的面紗】
對後端開發來說,前端是神祕的,
眼花繚亂的技術,繁多的框架,
如果你還停留在前端等於只用jquery做開發,那麼你out了,
本文從Java的角度簡述下目前前端流行的一些框架。
水平有限,歡迎指正。
【nodejs】
官網:
簡介:
對前端來說極其重要的一個“框架”,簡直可以說是開天闢地
類比Java中:JVM
詳述:
就前端來說nodejs具有劃時代的意義,
做前端的沒用過nodejs都不好意思說自己是前端,
做後端的沒聽過nodejs,
或者說不出nodejs和java的優缺點,也不是一個合格的後端。
nodejs不是一個js框架,千萬不要認為是類似jquery的框架,
nodejs是js執行時,執行環境,類比java中jvm,
java的開端是什麼,無疑是jvm,自從有了jvm,java才能吹牛說自己是“一次編寫處處執行”,
不管你是windows還是linux,只要安裝了對應版本的jvm都可以執行.class檔案。
同樣nodejs的作用和jvm的一樣一樣的,也是js的執行環境,不管是你是什麼作業系統,
只要安裝對應版本的nodejs,那你就可以用js來開發後臺程式。
這具有劃時代的意義,意味著一直以來只能在瀏覽器上玩來玩去的js,可以做後端開發了,
從有了nodejs後就催生出一大批用js做後臺開發的前端人員,這部分人員就是偏前端的“全棧程式設計師”。
記住,nodejs是和jvm同等地位的js執行環境,打開了前端人員走向後端的道路。
【js mvc框架】
相關框架:
框架太多,詳見下面兩篇文章
類比Java中的:
ssh1(struts1+spring+hibernate),ssh2(struts2+spring+hibernate),ssm(springmvc+spring+mybatis)
詳述:
上面說到nodejs打開了前端開發人員開發後端的大門,而且nodejs類比jvm,
那麼學習java的人都知道,學習完jvm(基礎)後該學什麼了?
對,框架,
java中有哪些框架,正如上面所說,ssh1,ssh2,ssm等等,
這些框架都mvc框架。
既然nodej都有了,jvm出現了,那接下來就是js大神開始封裝mvc框架,正如java大神開始封裝mvc框架一樣,
相對java流行了幾種框架,nodejs對應的mvc框架就多的多了,
詳見上面兩篇文章,足夠讓你看的眼花繚亂。
其中比較有名的是expressjs。
記住,當你看到這些js框架的時候,微微一笑,原來就是寫mvc框架,基於nodejs:
Sails. js,Total.js,Partial.js,Koa. js,Locomotive. js,Express. js,Flatiron. js
【js模組化】
相關概念:
commonjs,amd,cmd,umd
相關框架:
commonjs,seajs,requirejs,coolie
類比Java中的:
import,對就是import。。
詳述:
如上所說,當有了nodejs(jvm),有了mvcjs(ssh)之後,
可想而知,每個mvcjs中會有多少js檔案,這個時候js模組化就派上用處了,
當有人和你說js模組化如何如何,感覺自己很吊的時候,甩他一句,不就是java中的import嗎?
對,雖然在前端看來js模組化如何牛x,如何吊,但是就java來說就是import。
看看下面兩張圖片就明白了,對比requirejs(amd)和java導包:
但是js中的模組化,還有很多規範,比如commonjs,amd,cmd,umd,感覺頭大了吧,
其實簡單的來說,就是commonjs是執行在nodejs端,amd,cmd,umd是執行在瀏覽器,
其作用就是import各種js檔案,把js模組化管理,可以理解為java中的包管理,
同樣,一個mvc,js能做出來10+種框架,可想而知模組化,js也對應很多框架,
例如commonjs,requirejs,seajs等等。
記住,commonjs,requirejs,seajs等js模組化框架,遵循各種規範(amd,cmd,umd,commonjs),
類比java中的import
【reactjs】
官網:
簡介:
facebook前不久出的一款框架,眾前端膜拜之。
類比Java中的:freemarker的巨集。
詳述:
facebook前不久出了一款js框架,reactjs,
一時間,凡是用過reactjs,或者聽過reactjs的前端開發就高人一等,
那麼,這個框架到底是幹嘛的,我們來看看官網的一個例子:
好的,看不懂沒關係,我來說說,
左邊是一段程式碼,右邊是這段程式碼在網頁中的效果,
左邊程式碼中上面一大段是定義,最後一句話是使用,
左邊程式碼jsx是reactjs的格式,旁邊有個compiled js是jsx編譯後的js,原生js。
也就是說,你通過寫jsx檔案,編譯後生成一段js檔案,這段js檔案執行後是右邊的效果,
那麼好處是什麼?
是封裝,一大段js定義,最後只需要一句話輸出,也就是一行js程式碼對應右邊一個ui元件。
很酷的效果,material ui風格的webui元件,基於reactjs開發的。
做java的不知道用過freemarker沒,用過freemarker的不知道用過巨集沒,看段程式碼:
----------------------------------------------
-----------------------------------------------
------------------------------------
------------------------------------
第一個圖片中是freemarker用巨集封裝了bootstrap的button元件,
第二個圖片是在程式碼用使用封裝後的bsbutton,
第三個圖片是效果
有沒有發現和reactjs很相似啊,只不過reactjs是在前端實現,
而freemarker是在後端實現,兩者的共同點是封裝,且可以傳參。