<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

        基于Node.js實現(xiàn)前后端分離_node.js

        來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 20:53:48
        文檔

        基于Node.js實現(xiàn)前后端分離_node.js

        基于Node.js實現(xiàn)前后端分離_node.js:基本介紹 首先從一個重要的概念模板說起。 廣義上來說,web中的模板就是填充數(shù)據(jù)后可以生成文件的頁面。 嚴(yán)格意義上來說,應(yīng)該是模板引擎利用特定格式的文件和所提供的數(shù)據(jù)編譯生成頁面。模板大致分為前端模板(如ejs)和后端模板(如freemarker)
        推薦度:
        導(dǎo)讀基于Node.js實現(xiàn)前后端分離_node.js:基本介紹 首先從一個重要的概念模板說起。 廣義上來說,web中的模板就是填充數(shù)據(jù)后可以生成文件的頁面。 嚴(yán)格意義上來說,應(yīng)該是模板引擎利用特定格式的文件和所提供的數(shù)據(jù)編譯生成頁面。模板大致分為前端模板(如ejs)和后端模板(如freemarker)
        基本介紹

        首先從一個重要的概念“模板”說起。 廣義上來說,web中的模板就是填充數(shù)據(jù)后可以生成文件的頁面。 嚴(yán)格意義上來說,應(yīng)該是模板引擎利用特定格式的文件和所提供的數(shù)據(jù)編譯生成頁面。模板大致分為前端模板(如ejs)和后端模板(如freemarker)分別在瀏覽器端和服務(wù)器端編譯。

        由于當(dāng)場有一部分同學(xué)對node.js并不是很了解,這里補(bǔ)充一下node.js的相關(guān)知識。官網(wǎng)上的給他的定義事件驅(qū)動、異步什么的就不說了。這里借用樸靈書上的一張圖來解釋一下node.js這個玩意的結(jié)構(gòu)。如果懂java的同學(xué)可以將其理解為js版本的jvm。 瀏覽器一般包括渲染器和js腳本引擎,以chrome瀏覽器為例,用的webkit內(nèi)核的渲染器,V8的腳本引擎,而node.js用到了v8引擎。總而言之它就是一個js的運(yùn)行環(huán)境,就好比瀏覽器的F12調(diào)試工具,只不過node.js沒有DOM和BOM。

        這張圖描述的是node.js周邊的一些信息,比如npm這個出色的包管理器和cnode社區(qū)以及github,都在一定程度上促進(jìn)了node.js的繁榮,提供了技術(shù)保障。

        大公司通常都是技術(shù)的風(fēng)向標(biāo),例如google的angular、facebook的react現(xiàn)在都很火。這里只列了3個大公司當(dāng)作例子。淘寶的中途島架構(gòu)就不用說了,國內(nèi)node.js的先行者樸靈就來自淘寶。去哪兒也出了個應(yīng)該叫做“QTX”的技術(shù)框架。360月影帶領(lǐng)的75團(tuán)隊出了個基于ES6/ES7的web服務(wù)器框架——thinkjs,當(dāng)時我們技術(shù)總監(jiān)很看好,但是由于鄙人沒有時間學(xué)習(xí)ES6再加上插件不夠豐富,所以還是選用了較為成熟的Express。

        言歸正傳,這個表格列出了我所接觸過的3種前后端分離的開發(fā)方式。 第一種是最常見的使用java之類的后端語言模板,SEO友好,緩存利用率和減輕瀏覽器渲染負(fù)擔(dān)方面都比較好,最大的問題就是模板文件的耦合度太高,出了問題誰都不想來解決,前端人員看不到數(shù)據(jù),后端人員不懂頁面,模板文件就像是一個燙手的山芋。 第二種是目前我們項目移動端的實現(xiàn)方案,利用angular這種框架(angular的指令可以看成是前端模板)和nginx這種反向代理服務(wù)器,讓前后端徹底解耦,只通過ajax交互數(shù)據(jù)。這種方案和前一種的優(yōu)缺點剛好相反。前端模板的性能始終是個問題,尤其是在移動端,更尤其是在低端的移動設(shè)備上。 最后一種是新項目使用的用node.js做前端服務(wù)器,將前端的職責(zé)從瀏覽器劃分到了模板這一層,解決了以上所有的問題,不過確實也有新的問題,這種問題稍后再分析。

        當(dāng)然全棧開發(fā)在小型項目中也是非常適合的。對于傳統(tǒng)的jsp/php開發(fā)來說,全棧開發(fā)的溝通成本更低,開發(fā)人員能更容易理解整個功能模塊,從而更好的還原產(chǎn)品的設(shè)計。尤其現(xiàn)在出現(xiàn)的以js語言為基礎(chǔ)的全棧開發(fā):meteor和MEAN技術(shù),更是使得前后端開發(fā)用一種語言直接搞定,再配上Mongodb,數(shù)據(jù)從瀏覽器到數(shù)據(jù)庫都無需轉(zhuǎn)義直接使用,還不用寫sql,開發(fā)成本又大大降低。

        這次搭建node.js服務(wù)器用到的一些插件。 鼎鼎大名的express不用多介紹了,輕量級web服務(wù)器框架。 用handlebars模板引擎也屬巧合,因為express4默認(rèn)就是它,handlebars不愧為“弱邏輯”的模板引擎,主張的是減少模板邏輯,盡量只用變量和分頁,基于它的設(shè)計理念,我只擴(kuò)充了兩個helper。具體文章:https://yalishizhude.github.io/2016/01/22/handlebars/superagent的使用還是因為express4,因為它的測試代碼用的是supertest,supertest是基于superagent,所以用了superagent來轉(zhuǎn)發(fā)和發(fā)起請求。superagent還是太弱了,長連接都無法建立,還是推薦request插件。 restfuleAPI就沒什么好介紹了,前端服務(wù)器與瀏覽器,前端服務(wù)器與后端服務(wù)器都是用的這一套規(guī)范,基本上就是url指向資源,增刪改查又具體的請求方法表示,狀態(tài)碼表示結(jié)果等~ gulp打包工具,webpack研究了很久,發(fā)現(xiàn)每增加一個頁面都要修改配置文件,這個太蛋疼,遂放棄。

        開發(fā)流程

        如果這次分享主要是講怎樣將node.js做為前端服務(wù)器來實現(xiàn)前后端分離的話那也沒什么好講的,看看淘寶UED的文章就好了。前后端分離其實最大的問題是帶來溝通成本的上升,具體來說就是接口的定義和調(diào)試。在上圖的傳統(tǒng)開發(fā)流程中,接口的定義會放在接口服務(wù)器中,然后前后端各自根據(jù)接口文檔造假數(shù)據(jù)進(jìn)行本地調(diào)試,之后進(jìn)行聯(lián)調(diào)。這個環(huán)節(jié)就是前后端開始撕逼的時候了,這個參數(shù)不對,那個返回值不對,總之很浪費(fèi)時間。接下來看這個問題在我們項目中是怎么解決的~

        前后端因為接口撕逼的問題一直存在,作為保守主義的我相信迭代開發(fā),所以第一步做的只是增加了一個mock服務(wù)器。這個服務(wù)器的神奇之處就是根據(jù)接口文檔自動生成假數(shù)據(jù),實現(xiàn)了接口即API,前端同學(xué)再也不用把數(shù)據(jù)寫死進(jìn)行測試了。沒辦法,誰叫我是前端開發(fā),首先想到自己人,嘿嘿~當(dāng)然這個只在一定程度上有利于前端開發(fā),后端的接口和文檔不一致聯(lián)調(diào)時也會出現(xiàn)問題。怎么辦?

        偶然在破浪大神的博客上看到老馬的一篇專門講前后端分離的文章,其中一個重要的概念就是契約測試也叫雙邊測試吧。核心概念就是為了解決遠(yuǎn)程聯(lián)調(diào)的問題。對前后端的參數(shù)都進(jìn)行校驗,要求大家按照接口文檔進(jìn)行開發(fā)。受其啟發(fā),加入json-schema規(guī)則,實現(xiàn)了對http請求的參數(shù)校驗,誰不按規(guī)矩來誰改。

        這個redmine是我們最早的接口文檔管理器,除了記錄和查看功能再無其他作用。

        swagger號稱世界最流行的接口文檔服務(wù)器,界面美觀,插件也還比較多,可以針對后端語言直接生成測試代碼。不過部署的時候始終沒玩懂,而且yaml格式不如json習(xí)慣,放棄了它。

        這就是現(xiàn)在我們項目上用的文檔服務(wù)器和mock服務(wù)器,基于MEAN技術(shù)實現(xiàn)的服務(wù)器,基本功能:

        利用mockjs插件,可以動態(tài)生成隨機(jī)數(shù)據(jù)基于json-schema對接口參數(shù)實行校驗和接口測試,并保存測試狀態(tài)和接口響應(yīng)時間。簡單的json編輯器帶有登陸校驗功能,可登陸后進(jìn)行接口調(diào)試mock服務(wù)器按照api服務(wù)器來響應(yīng)請求,接口更新時自動更新

        一些問題

        node.js是前端工程師的翅膀,而插上翅膀是變成天使還是變成惡魔?這個要看能不能解決的使用它時帶來的問題了。

        首先前端的工作量毫無疑問地會增加,但溝通成本會降低。node.js單線程的服務(wù)器穩(wěn)定性確實不夠好,不過代碼的健壯性和完善的日志可以有效的規(guī)避。回調(diào)。這個問題解決方法就太多了,node.js的q/async模塊以及ES6/ES7。node.js調(diào)試。雖然我一直排斥IDE,但不得不承認(rèn)webstorm在調(diào)試上確實很方便。我用的node-inspector也還湊合,界面類似chrome開發(fā)者工具,看上去挺熟悉的。

        如果對于后端程序員,更加應(yīng)該擁簇node.js了。接口整合的工作交給了前端服務(wù)器進(jìn)行處理,同時和前端耦合度大大降低,工作量和工作效率都減少了。

        心得體會有兩點

        node.js的使用雖然有一定的學(xué)習(xí)成本,但對于前端開發(fā)人員還是很友好的。而且前端使用node.js的話,無論是技術(shù)含量還是工作量都會有所提升,從而提升了崗位的重要性。當(dāng)前端開發(fā)人員能創(chuàng)造更多價值的時候才有資格要求更高的薪水~工作中建議少提建議多給可行性方案,同時進(jìn)行技術(shù)預(yù)研而不是寫個簡單的helloworld。

        總結(jié)

        可能有人說你介紹的這一套東西這么復(fù)雜,用起來太麻煩了,還不如面對面溝通。 對于這樣的質(zhì)疑我只能用騰訊高級UI工程師余果在《web全棧工程師的自我修養(yǎng)》中講到的一個例子。有一次他電面一家小公司的前端負(fù)責(zé)人問他怎么管理代碼時,對方說直接用ftp上傳,同時抱怨手下人老是更新錯代碼,又問他為什么不用svn或git,他說還不如手動更新方便。 這個故事的道理就是我面對質(zhì)疑的回答~

        ppt下載地址

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        基于Node.js實現(xiàn)前后端分離_node.js

        基于Node.js實現(xiàn)前后端分離_node.js:基本介紹 首先從一個重要的概念模板說起。 廣義上來說,web中的模板就是填充數(shù)據(jù)后可以生成文件的頁面。 嚴(yán)格意義上來說,應(yīng)該是模板引擎利用特定格式的文件和所提供的數(shù)據(jù)編譯生成頁面。模板大致分為前端模板(如ejs)和后端模板(如freemarker)
        推薦度:
        標(biāo)簽: 實現(xiàn) js no
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲精品无码不卡在线播放HE| 亚洲乱码中文字幕综合234| 亚洲毛片αv无线播放一区| 免费国产污网站在线观看不要卡 | jizzjizz亚洲日本少妇| 成人免费视频软件网站| 久久亚洲精品国产亚洲老地址| 无码av免费毛片一区二区| 亚洲婷婷天堂在线综合| 在线观看免费人成视频色| 亚洲色大成网站www永久男同| 成人黄动漫画免费网站视频| 亚洲av日韩av永久无码电影| 亚洲国产电影av在线网址| 中国一级全黄的免费观看| 亚洲AV无码久久精品狠狠爱浪潮| 无码国产精品一区二区免费3p| 亚洲成人福利在线| 在线不卡免费视频| aa在线免费观看| 亚洲成aⅴ人片在线观| 日韩免费高清一级毛片在线| 国产成人精品免费大全| 日韩精品亚洲人成在线观看| 亚洲一区免费在线观看| 色婷婷亚洲一区二区三区| 亚洲国产三级在线观看| 亚洲免费电影网站| 激情小说亚洲色图| 亚洲爆乳无码专区| 最近中文字幕免费mv视频7| av片在线观看永久免费| 亚洲无人区视频大全| 日本一线a视频免费观看| 在线播放免费人成毛片乱码| 亚洲成a人片在线观看精品| 国产成人精品亚洲精品| 精品国产污污免费网站aⅴ| 特级毛片aaaa免费观看| 亚洲欧洲国产经精品香蕉网| 亚洲精品无码专区2|