
文章插圖
最近關(guān)于 Serverless 的討論越來越多 ??此婆c前端關(guān)系不大的 Serverless,其實(shí)早已和前端有了頗深淵源,并且將掀起新的前端技術(shù)變革 。此次分享根據(jù)個人理解和總結(jié),從前端開發(fā)模式在serverless的演進(jìn)、Serverless 常見服務(wù)商提供的解決方案以及 基于Serverless 的前端開發(fā)模式等方面,與大家探討 Serverless 中的前端開發(fā)模式 。一、前端開發(fā)模式的演進(jìn)image.png
首先回顧一下前端開發(fā)模式的演進(jìn),我覺得主要有四個階段 。。1、基于模板渲染的動態(tài)頁面
2、基于 AJAX 的前后端分離
3、基于 Node.js 的前端工程化
4、基于 Node.js 的全棧開發(fā)
基于模板渲染的動態(tài)頁面在早起的互聯(lián)網(wǎng)時代,我們的網(wǎng)頁很簡單,就是一些靜態(tài)或動態(tài)的頁面,主要目的是用來做信息的展示和傳播 。這個時候開發(fā)一個網(wǎng)頁也很easy,主要就是通過 JSP、PHP 等技術(shù)寫一些動態(tài)模板,然后通過 Web Server(nginx,apache) 將模板解析成一個個 HTML 文件,瀏覽器只負(fù)責(zé)渲染這些 HTML 文件 。這個階段還沒有前后端的分工,通常是后端工程師順便寫了前端頁面 。
JSP: Java Server Page: Java服務(wù)端頁面,在html頁面中編寫Java代碼的頁面
WebServer:網(wǎng)站服務(wù)器或web服務(wù)器
基于 AJAX 的前后端分離2005 年 AJAX 技術(shù)的正式提出,翻開了 Web 開發(fā)的新篇章 ?;?AJAX,我們可以把 Web 分為前端和后端,前端負(fù)責(zé)界面和交互,后端負(fù)責(zé)業(yè)務(wù)邏輯的處理 。前后端通過接口進(jìn)行數(shù)據(jù)交互 。我們也不再需要在各個后端語言里面寫著難以維護(hù)的 HTML 。網(wǎng)頁的復(fù)雜度也由后端的 Web Server 轉(zhuǎn)向了瀏覽器端的 JavaScript 。也正因如此,開始有了前端這個職位 。
基于 Node.js 的前端工程化2009年 Node.js 的出現(xiàn),對于前端來說,也是一個歷史性的時刻 。隨著 Node.js 一同出現(xiàn)的還有 CommonJS 規(guī)范和 npm 包管理機(jī)制 。隨后也出現(xiàn)了 Grunt、Gulp、Webpack 等一系列基于 Node.js 的前端開發(fā)構(gòu)建工具 。
在 2013 年前后,前端三大框架 React.js/Angular/Vue.js 相繼發(fā)布第一個版本 。我們可以從以往基于一個個頁面的開發(fā),變?yōu)榛谝粋€個組件進(jìn)行開發(fā) 。開發(fā)完成后使用 webpack 等工具進(jìn)行打包構(gòu)建,并通過基于 Node.js 實(shí)現(xiàn)的命令行工具將構(gòu)建結(jié)果發(fā)布上線 。前端開發(fā)開始變得規(guī)范化、標(biāo)準(zhǔn)化、工程化 。
基于 Node.js 的全棧開發(fā)Node.js 對前端的重要意義還有,以往只能運(yùn)行在瀏覽器中的 js 也可以運(yùn)行在服務(wù)器上,前端可以用自己最熟悉的語言來寫服務(wù)端的代碼 。于是前端開始使用 Node.js 做全棧開發(fā),開始由前端向全棧的方向轉(zhuǎn)變 。這是前端主動突破自己的邊界 。
另一方面,前端在發(fā)展,后端也在發(fā)展 。也差不多在 Node.js 誕生那個時代,后端普遍開始由巨石應(yīng)用模式向微服務(wù)架構(gòu)轉(zhuǎn)變 。這也就導(dǎo)致以往的前后端分工出現(xiàn)了分歧 。隨著微服務(wù)架構(gòu)的興起,后端的接口漸漸變得原子性,微服務(wù)的接口也不再直接面向頁面,前端的調(diào)用變得復(fù)雜了 。于是 BFF(Backend For Frontend)架構(gòu)出現(xiàn)了,在微服務(wù)和前端中間,加了一個 BFF 層,由 BFF 對接口進(jìn)行聚合、裁剪后,再輸出給前端 。而 BFF 這層不是后端本質(zhì)工作,且和前端的關(guān)系最大,所以前端自然而然選擇了 Node.js 來實(shí)現(xiàn) 。這也是當(dāng)前 Node.js 在服務(wù)端較為廣泛的應(yīng)用的原因 。
巨石應(yīng)用:大部分web工程是將所有的功能模塊(service side)打包到一起并放在一個web容器中運(yùn)行,很多企業(yè)的Java應(yīng)用程序打包為war包微服務(wù)架構(gòu):微服務(wù)架構(gòu)是一種架構(gòu)理念,是指將功能分解到離散的各個服務(wù)當(dāng)中,從而降低系統(tǒng)的耦合性,并提供更加靈活的服務(wù)支持 。把一個大型的單體應(yīng)用程序和服務(wù)拆分為數(shù)個或數(shù)十個的微小型服務(wù),它可擴(kuò)展單個組件而不是整個的應(yīng)用程序堆棧,從而滿足服務(wù)等級協(xié)議 。下一代前端開發(fā)模式說完了這幾個階段,可以看到,每一次前端開發(fā)模式的變化,都因某個變革性的技術(shù)而起 。先是 AJAX,而后是 Node.js 。那么下一個變革性的技術(shù)是什么?不言而喻,個人覺得就是 Serverless 。
以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請您及時就醫(yī)或請專業(yè)人士給予相關(guān)指導(dǎo)!
「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對您有所幫助:- 小米人工智能云平臺 人工智能云平臺解決方案
- 容器與容器云的區(qū)別 云容器是什么東西
- 阿里云域名備案的方法 阿里云域名轉(zhuǎn)移到騰訊云
- 免費(fèi)云電腦主機(jī)永久使用 網(wǎng)絡(luò)好的云主機(jī)
- 阿里云視頻點(diǎn)播使用方法 阿里云視頻點(diǎn)播收費(fèi)標(biāo)準(zhǔn)
- 使用教程技巧方法大全 云智能app怎么使用
- 阿里巴巴篩選貨源技巧 阿里巴巴網(wǎng)頁版登陸首頁
- 張宇考研2018百度云
- 英語一考研真題百度云
- 為什么不能娶俄羅斯姑娘 俄羅斯美女如云嗎?
