国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題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關鍵字專題關鍵字專題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
當前位置: 首頁 - 科技 - 知識百科 - 正文

基于Node.js實現前后端分離_node.js

來源:懂視網 責編:小采 時間:2020-11-27 20:53:48
文檔

基于Node.js實現前后端分離_node.js

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

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

由于當場有一部分同學對node.js并不是很了解,這里補充一下node.js的相關知識。官網上的給他的定義事件驅動、異步什么的就不說了。這里借用樸靈書上的一張圖來解釋一下node.js這個玩意的結構。如果懂java的同學可以將其理解為js版本的jvm。 瀏覽器一般包括渲染器和js腳本引擎,以chrome瀏覽器為例,用的webkit內核的渲染器,V8的腳本引擎,而node.js用到了v8引擎??偠灾褪且粋€js的運行環境,就好比瀏覽器的F12調試工具,只不過node.js沒有DOM和BOM。

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

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

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

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

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

開發流程

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

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

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

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

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

這就是現在我們項目上用的文檔服務器和mock服務器,基于MEAN技術實現的服務器,基本功能:

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

一些問題

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

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

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

心得體會有兩點

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

總結

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

ppt下載地址

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

文檔

基于Node.js實現前后端分離_node.js

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

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 欧美亚洲另类在线观看 | 国产高清在线免费视频 | 欧美一区二区在线 | 中文字幕综合 | 亚洲黄色一区 | 日韩 欧美 中文 | 欧洲一区二区三区在线观看 | 91视频国产一区 | 国产精品第一 | 国产欧美日韩在线不卡第一页 | 99精品久久99久久久久 | 日本黄 色 成 年 人免费观看 | 日韩欧美专区 | 成人在线日韩 | 国产一区二区三区久久精品 | 日韩精选| 久久国产精品一区二区三区 | 久操视频在线免费观看 | 亚洲欧美另类视频 | 亚洲综合欧美综合 | 国产欧美综合精品一区二区 | 成人精品视频一区二区三区 | 国产一区二区三区在线 | 国产资源在线看 | 在线国产观看 | 欧美日韩视频一区二区 | 国产成人乱码一区二区三区 | 国产在线不卡视频 | 国产美女视频黄a视频全免费网站 | 久久免费精品国产72精品剧情 | 欧美日韩大尺码免费专区 | 日本免费大黄 | 一级毛片不卡片免费观看 | 欧美一区二区三区网站 | 一边摸一边爽一边叫床免费视频 | 一区二区在线观看视频 | 日韩欧美高清视频 | 国产一级做a爰片在线看 | 中文国产成人精品久久app | 就爱啪啪网 | 国内精品伊人久久久久 |