最近幫朋友做個小網(wǎng)站迹冤,剛開始用angular+bootstrap做前端,angular入門不簡單,但是熟悉了之后就不想在使用jq來做頁面了访惜。
憋死憋活終于把網(wǎng)站初稿做出來了,然后朋友說angular的SEO實(shí)在不行.....其實(shí)做之前就知道有這問題腻扇,當(dāng)初提出的辦法是做一些靜態(tài)的引導(dǎo)頁面或者幫助頁面债热,然而現(xiàn)在覺得這樣做不太靠譜,繼續(xù)coding......
思考很久后覺得可以在中間架一層node幼苛,然后各種問度娘窒篱,發(fā)現(xiàn)淘寶已經(jīng)有這個思路了
http://ued.taobao.org/blog/2014/04/full-stack-development-with-nodejs/
服務(wù)器上同時跑tomcat和node,頁面請求過來的時候node這邊向java后臺獲取數(shù)據(jù)生成頁面返回給瀏覽器舶沿,盜用下淘寶的圖
之前的架構(gòu)
java:負(fù)責(zé)提供接口數(shù)據(jù)
angular:負(fù)責(zé)路由及頁面生成
現(xiàn)在的結(jié)構(gòu):
java:負(fù)責(zé)提供接口數(shù)據(jù)
express:頁面路由由負(fù)責(zé)
bootstrap:css框架(響應(yīng)式柵格布局)
ejs:模板引擎
angular:后臺管理頁面(部分不需要SEO的直接用angular了)
node:頁面生成
node這邊向java獲取數(shù)據(jù)舌剂,頁面ajax獲取數(shù)據(jù)的時由node做一下代理到j(luò)ava。
到了這個位置暑椰,只需要定義一套node,java荐绝,瀏覽器端通用的api規(guī)則就可以了一汽,原本想自己寫一套,看著看著又發(fā)現(xiàn)了點(diǎn)好東西,https://github.com/carlisliu/modelproxy 淘寶已經(jīng)有套現(xiàn)成的了召夹,直接拿來用就可以了(可能需要根據(jù)自己需求改下源碼岩喷,我把所有傳輸格式改成了json)
當(dāng)請求測試成功后,感覺一下子很完美了
但是圖片上傳會涉及跨域的問題监憎,node 80端口這邊無法請求到j(luò)ava 8080端口的文件纱意,各種度娘后的解決方案是:使用iframe新建一個網(wǎng)頁向后臺調(diào)用請求,后臺生成URL重定向到80端口下的一個靜態(tài)網(wǎng)頁鲸阔,這個URL中添加前臺需要的返回?cái)?shù)據(jù)偷霉,由靜態(tài)網(wǎng)頁中的腳本解析URL并且調(diào)用父網(wǎng)頁的函數(shù)。大致是這個思路褐筛,講的太亂了....可以看下面的鏈接
http://wengzhijuan12.blog.163.com/blog/static/3622414520138261584489/
終于折騰完了类少,這是文件結(jié)構(gòu),基本以express為標(biāo)準(zhǔn)
網(wǎng)站雛形也出來了:www.lifejx.com(別亂戳渔扎,會蹦掉的= =)
說了那么多硫狞,折騰那么久,其實(shí)就是因?yàn)楹笈_java是定死的晃痴,而我又不想寫jsp什么的残吩,于是就是各種折騰....
個人理解的前段應(yīng)該是:負(fù)責(zé)路由及展示出來的元素,后臺只負(fù)責(zé)提供數(shù)據(jù)接口(angular)倘核,這樣子就是會導(dǎo)致前臺的工作量不斷的加大泣侮。
入前端沒多久,覺得有什么問題可以討論下~輕噴...