摘要:更詳細(xì)的內(nèi)容下一章開篇深入聊聊前后分離講述關(guān)于我目前在寫從零構(gòu)建前后分離項目系列,修正和補充以此為準(zhǔn)不斷更新的項目實踐地址彩蛋提前預(yù)覽下一章傳送門
開篇 : 縱觀WEB歷史演變
在校學(xué)習(xí)和幾年工作工作中不知不覺經(jīng)歷了一半的 WEB 歷史演變、對近幾年的發(fā)展比較了解,結(jié)合經(jīng)驗聊聊 WEB 發(fā)展歷史。
演變不易,但也是必然,因為為人始終要進步。
WEB 的發(fā)展史 一、開山鼻祖 - 石器時代 靜態(tài)網(wǎng)站這是 1997 年 Apple 官網(wǎng),那時的網(wǎng)站不如叫網(wǎng)頁,像一張浮夸的彩色報紙,那時是純粹的 HTML 時代,不管你是不是訪問這個網(wǎng)頁,每個頁面都是在服務(wù)器上存在的。
CGI技術(shù)隨后技術(shù)性強一點的網(wǎng)站可能會通過 CGI Perl 運行一小段代碼與數(shù)據(jù)庫或文件系統(tǒng)進行交互。比如:
這是1998 年的 Google ,為了達到搜索條件,不可能用大量的人力去堆砌靜態(tài)頁面,所以使用這種方式“曲線救國”,但是 CGI 伸縮性不是太好:每個請求分配一個新的進程,不太安全(直接使用文件系統(tǒng)或者環(huán)境變量),同時也沒提供一種結(jié)構(gòu)化的方式去構(gòu)造動態(tài)應(yīng)用程序。
靜態(tài)網(wǎng)站是最受搜索引擎歡迎的網(wǎng)站,因為它相對固定,所以網(wǎng)站 SEO 非常好做,我猜測這也是為什么現(xiàn)在的文檔網(wǎng)站大部分都是靜態(tài)網(wǎng)頁的原因之一吧。
很可惜我沒能親眼看一看這樣的時代二、前人種樹 - 文明時代 asp 和 jsp
2005 年左右,先后出現(xiàn)了 微軟的 ASP 和 Java Server Pages [JSP] 等技術(shù),取代了 CGI ,增強了 WEB 與服務(wù)端的交互的安全性、用起來也更加簡單,但隨著各個公司W(wǎng)EB業(yè)務(wù)的復(fù)雜性,缺點也逐漸暴露出來:
1、技術(shù)單一,難以維護
JSP頁面由HTML代碼和嵌入其中的Java代碼所組成,用一個比較常見的 JSP 代碼段舉例:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <%@ page import="com.zifangsky.OnlineFriend.model.article.ShowByPage"%>
JSP = HTML+Java
上面的代碼 HTML 中大量耦合了JAVA代碼,通過JSP編譯之后可以在客戶端充當(dāng)部分服務(wù)端的角色,這讓我們難以搞清服務(wù)端的角色,以及增加調(diào)試的復(fù)雜度。業(yè)務(wù)稍微復(fù)雜一點,試想一下:HTML中摻雜了太多java代碼,不論是開發(fā)還是維護都是一件痛苦的事情。
2、不不夠靈活
JSP與Java Servlet一樣,是在服務(wù)器端執(zhí)行的,通常返回該客戶端的就是一個HTML文本。我們每次的請求:獲取的數(shù)據(jù)、內(nèi)容的加載,都是服務(wù)器為我們返回染完成之后的 DOM,這也就使得我們開發(fā)網(wǎng)站的靈活度大打折扣,在這種情況下,同年:Ajax火了。
為什么說 2005 年 Ajax 火了?因為 Ajax 技術(shù)并不是 2005 年出現(xiàn)的,他的雛形是 1999 年。
1999年,微軟公司發(fā)布IE5,第一次引入新功能:允許javascript腳本向服務(wù)器發(fā)起HTTP請求[這也就是今天萬惡的 ActiveX 原型]。這個功能當(dāng)時并沒有引起注意,直到2004年Gmail發(fā)布和2005年Google Map發(fā)布,才引起廣泛重視
Google做了什么事兒?
在 2005 年,Google 通過其 Google Suggest 使 AJAX 變得流行起來,他大概是這樣的事情:
現(xiàn)在看來很常見的技術(shù)手段,當(dāng)時迅速燃爆了技術(shù)圈,以此來實現(xiàn):異步交互
這樣既能增加用戶的體驗,又能替代掉頁面部分的服務(wù)端代碼,從此, AJAX 成為腳本發(fā)起 HTTP 通信的代名詞,次年 W3C 也在 2006 年發(fā)布了 AJAX 的國際標(biāo)準(zhǔn)
總結(jié):
隨后各種 JSP ASP 的改良模板引擎、全新的交互方式也如雨后春筍一般涌現(xiàn)。并且以 JAVA 作為服務(wù)端也出現(xiàn)了如 Struts 、 Spring、Hibernate 的老一代框架、采用后端 MVC 的方式讓構(gòu)建 WEB 應(yīng)用再一次更加健全, WEB 服務(wù)正在逐漸由石器時代走向文明時代。
三、化繁為簡 - 工業(yè)革命時代時光啊不斷地飛逝,前端后端也出現(xiàn)了幾個潮流。
前端發(fā)展移動端
手機已經(jīng)發(fā)展出了一些苗頭,網(wǎng)頁也區(qū)分了web和移動應(yīng)用兩種模式,但移動端限制于當(dāng)時手機行業(yè)的技術(shù),發(fā)展較慢。
Jquery的出現(xiàn)
出現(xiàn)了非常流行的JavaScript庫:jquery,能夠快速構(gòu)建動態(tài)、美妙的web應(yīng)用,完美的封裝了Ajax,讓開發(fā)者開發(fā)網(wǎng)頁變得優(yōu)雅。
SPA的雛形
隨著文明時代 Ajax 正式提出,加上 CDN 開始大量用于靜態(tài)資源存儲,于是出現(xiàn)了 SPA (Single Page Application 單頁面應(yīng)用),Backbone EmberJS AngularJS 這樣一批前端框架隨之出現(xiàn),但以當(dāng)時的配套技術(shù)來說,SPA 道路并不好走:例如 SEO 問題、SPA 過多的頁面、復(fù)雜場景下 VIEW 的綁定等,都沒有很好的處理。
后端發(fā)展Struts 、 Spring、Hibernate 經(jīng)過幾年的發(fā)展、SSM這個今天被我們說爛了的詞、當(dāng)時幾乎成了當(dāng)時 JAVA 服務(wù)端的 首要選型,我想這也是為什么很多公司、或外包公司依然維護這樣一套架構(gòu)的主要原因。
總結(jié)
這幾年的飛速發(fā)展,為我們節(jié)約了大量的經(jīng)歷、降低了開發(fā)者和開發(fā)過程的門檻,極大提升了開發(fā)效率和迭代速度,我稱之為工業(yè)時代
經(jīng)歷
說出來你可能不信:大三快結(jié)束時實習(xí)求得的第一份工作,一個人斷斷續(xù)續(xù)開發(fā)7、8個月,就是鉆研這些自技術(shù)棧,獨立開發(fā)出一款web應(yīng)用 微寶創(chuàng)業(yè),慚愧的說:
項目架構(gòu)從文明時代 -> 走到最后的工業(yè)時代!不斷的重構(gòu),不斷的上線 ,拼命的學(xué)習(xí),我很感謝當(dāng)時老板對我的信任和同事對我的幫助。四、百家爭鳴 - 技術(shù)大爆炸時代
時光啊他一刻不停,直到今天 -- 技術(shù)只能用爆炸來形容。
前端爆炸工業(yè)時代提出的 SPA 模型隨著 NODE 的興起、服務(wù)端、各種工具、容器的飛速發(fā)展、前端 MVC MVVM 模式逐漸清晰、前端涌現(xiàn)了相當(dāng)一批優(yōu)秀的開源項目:
包管理: npm yarn
打包:grunt gulp
模塊加載:RequireJS SeaJs
框架:VUE Angular React
hybrid :ionic weex react-native electron
預(yù)處理器:less sass
數(shù)據(jù)可視化:echarts hcharts
以及提升用戶體驗的動畫,讓我們更有“面子”
甚至前端也可以使用 Node 來構(gòu)建自己簡單的服務(wù)端、正在逐漸擺脫“客戶端開發(fā)者”的角色
后端爆炸go
更適合面向服務(wù)器編程,以前你如果使用C或者C++做的那些事情,用Go來做很合適,例如、虛擬機處理、文件系統(tǒng)等,強如 docker Kubernetes(k8s)都是 GO 寫的
python
像一門生物語言,目前看來更容易處理算法、人工智能、網(wǎng)絡(luò)爬蟲、運維方向
java
一款20多年的語言,不斷的變強。涌現(xiàn)了很多高質(zhì)量的庫,幾個有代表性的:
netty rebbitmq:輕松實現(xiàn)消息隊列
elasticSearch: 輕松實現(xiàn)搜索引擎
spring-boot: 面向配置,更加輕松的構(gòu)建web服務(wù)端
spring-cloud、dubbo: 輕松構(gòu)建微服務(wù)
以及即將迎來的 強悍的JAVA11
還有 持續(xù)集成 云服務(wù) devops 等運維相關(guān)
總結(jié)
go 和 python 的出現(xiàn)讓我們服務(wù)端開發(fā)者能做更多的事情,比如自動化運維、寫中間件。逐漸偏向全棧方向發(fā)展。而 JAVA 20多年來的生態(tài)圈子發(fā)展,能幫助我們寫出更健壯的服務(wù)。以及狠狠向我們砸來的:人工智能、devops、云服務(wù)等技術(shù),令我們眼花繚亂,開源成為了一種潮流,技術(shù)分享成了每個人都想做的事情,我稱之為:技術(shù)爆炸的時代
經(jīng)歷
我近兩年很煩惱:如何才能讓前后端更加優(yōu)雅的通信?
曾經(jīng)使用多種后端模板引擎直到完全摒棄,后到 node 做代理、渲染 + grunt 進行數(shù)處理,之后逐漸使用
vue + webpack ------> Rest API
這樣如果不得不用 NODE 也只會成為 Rest 中的一員而不用經(jīng)過 NODE 做繁瑣的通信了。這種前后分離的方式達到了滿意的效果,前端不必再管后端的事情,后端?寫好自己的服務(wù)就好了。
更詳細(xì)的內(nèi)容下一章 《開篇:深入聊聊前后分離》 講述
關(guān)于我目前在寫《從零構(gòu)建前后分離項目》系列,修正和補充以此為準(zhǔn)
不斷更新的 項目實踐地址
彩蛋:提前預(yù)覽下一章傳送門
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/97384.html
摘要:更詳細(xì)的內(nèi)容下一章開篇深入聊聊前后分離講述關(guān)于我目前在寫從零構(gòu)建前后分離項目系列,修正和補充以此為準(zhǔn)不斷更新的項目實踐地址彩蛋提前預(yù)覽下一章傳送門 開篇 : 縱觀WEB歷史演變 在校學(xué)習(xí)和幾年工作工作中不知不覺經(jīng)歷了一半的 WEB 歷史演變、對近幾年的發(fā)展比較了解,結(jié)合經(jīng)驗聊聊 WEB 發(fā)展歷史。 演變不易,但也是必然,因為為人始終要進步。 WEB 的發(fā)展史 一、開山鼻祖 - 石器時代...
摘要:什么是前后分離前后端分離并不是什么新鮮事,到處都是前后端分離的實踐。然而一些歷史項目在從一體化設(shè)計轉(zhuǎn)向前后端分離的架構(gòu)時,不可避免的會遇到各種各樣的問題。搞了一個前后分離,需要分離部署。 探究 :深入聊聊前后分離架構(gòu) 前后分離,一直是一個相當(dāng)泛泛的問題,前后分離到底好不好?沒有絕對的對,沒有絕對的錯,業(yè)界就這個問題已經(jīng)激烈的探討幾年了.出現(xiàn)討論的點在于:分離當(dāng)然是好的,但是以什么樣的服...
摘要:什么是前后分離前后端分離并不是什么新鮮事,到處都是前后端分離的實踐。然而一些歷史項目在從一體化設(shè)計轉(zhuǎn)向前后端分離的架構(gòu)時,不可避免的會遇到各種各樣的問題。搞了一個前后分離,需要分離部署。 探究 :深入聊聊前后分離架構(gòu) 前后分離,一直是一個相當(dāng)泛泛的問題,前后分離到底好不好?沒有絕對的對,沒有絕對的錯,業(yè)界就這個問題已經(jīng)激烈的探討幾年了.出現(xiàn)討論的點在于:分離當(dāng)然是好的,但是以什么樣的服...
摘要:什么是前后分離前后端分離并不是什么新鮮事,到處都是前后端分離的實踐。然而一些歷史項目在從一體化設(shè)計轉(zhuǎn)向前后端分離的架構(gòu)時,不可避免的會遇到各種各樣的問題。搞了一個前后分離,需要分離部署。 探究 :深入聊聊前后分離架構(gòu) 前后分離,一直是一個相當(dāng)泛泛的問題,前后分離到底好不好?沒有絕對的對,沒有絕對的錯,業(yè)界就這個問題已經(jīng)激烈的探討幾年了.出現(xiàn)討論的點在于:分離當(dāng)然是好的,但是以什么樣的服...
摘要:前端基礎(chǔ)架構(gòu)和硬核介紹技術(shù)棧的選擇首先我們構(gòu)建前端架構(gòu)需要對前端生態(tài)圈有一切了解,并且最好帶有一定的技術(shù)前瞻性,好的技術(shù)架構(gòu)可能日后會方便的擴展,減少重構(gòu)的次數(shù),即使重構(gòu)也不需要大動干戈,我通常選型技術(shù)棧會參考以下三點一提出自身業(yè)務(wù)的需求是 # 前端基礎(chǔ)架構(gòu)和硬核介紹 showImg(https://segmentfault.com/img/remote/146000001626972...
閱讀 1563·2021-11-23 09:51
閱讀 1100·2021-10-12 10:12
閱讀 2819·2021-09-22 16:06
閱讀 3643·2019-08-30 15:56
閱讀 3470·2019-08-30 15:53
閱讀 3116·2019-08-29 16:29
閱讀 2367·2019-08-29 15:27
閱讀 2026·2019-08-26 10:49