前端的未來: 後端會越來越同質化, 只是一個資料庫, 大部分功能都挪到前端嗎?

我是一個後端工程師,主要做 compiler 和符號計算的,兩三年前開始關注前端 被吸引的主要是 JavaScript 越來越快了,還有deliver產品太方便了,只要一個鏈接就好了

比如: OCaml to Javascript transplier playground

這個鏈接裡面嵌入了整個ocaml的編譯器(最後編譯成js), 用戶可以敲 OCaml 代碼 然後實時編譯 並執行 (server-less), 而且非常非常快, 幾乎沒有任何延時, 這在5年前不可想像。

JS 只會越來越快 (例如最近對SIMD的支持)我個人感覺未來(不太遙遠) 大部分客戶端程序都會web 化,大部分人不需要再裝軟體了,有沒有朋友有類似的感覺


這是後端技術越來越成熟的表現,越成熟的技術,就有利於復用,復用的最終就是同質化,所有的東西都有現成的,最後用不著寫什麼代碼了。

目前後端技術在雲出現後的確開始快速的收斂,因為大部分解決方案被雲計算直接提供了。

所有領域的未來都會是復用程度越來越高,同質化越來越明顯,成熟、收斂和過時,我們去研究新的領域。


可以理解題主作為編譯器研發提出這個問題。

然而無論在前端還是後端我們還是要寫編譯器,不是么。那就沒問題了唄。

實在不行我們可以去參與JavaScript引擎的研發 ^_^

另外Web化還是得與強大的伺服器端技術結合。有些single-shot/single-page app是可以做到不與伺服器交互,就像題主的OCaml-to-JS編譯器的playground。但是還有更多的應用是要充分結合前端與伺服器端的,例如說如果題主把那個playground改進為一個能持久化、能協同編輯、帶有目錄結構的workspace的准IDE,它背後多半就得帶上伺服器端去實現存儲與同步。只要有人需要寫高性能的伺服器端程序,我們做編譯器的人就還有許多用武之地 &>_&<


部分贊同

1、後端邏輯本身更容易抽象,個性化程度相比UI更低,更容易復用。

2、終端能力越來越強,瀏覽器和客戶端可以承載的任務越來越多。


Backend as a Service 在所難免


對,很多東西會丟給前端!除了許可權,數據驗證,和安全防護,以及文件的上傳導出導入。這才是後端的重中之重。

而體驗相關的自然都留給前端。

另外我們的後端代碼已經完成了根據資料庫設計自動建表,並且自動生成每個對象的get,gets,search,add,save,del五個基本介面供給前端,資料庫一旦設計好,基本就剩下微調了。然後前端就可以盡情的和客戶撕需求了。


題主 OCaml Core 為了推廣 OCamlScript ,竟然也淪落到水這種問題來了……

這分明是來打廣告的!

回答問題:上 Firebase 跟 Postgrest 啊。

PS:編譯器後端的就不要冒充伺服器後端了。


理論上說是不太可能的

1. 跟安全性,許可權和校驗相關的代碼不能放到前端。

2. 需要強制所有用戶都嚴格一致的邏輯不能放在前端。

3. 現在的富前端應用如果跟當年的富客戶端應用類比,就相當於每次都把整個富客戶端都重新下載安裝並執行來避免版本不一致的問題。這種玩法玩得轉的前提就是前端規模不能太大。換句話說,相對於整個業務系統的規模,前端如果真的"富"了,當年富客戶端的弊端就都回來了,效果會不如進行適當拆分,只把展現和人機交互邏輯留在前端。


這算應用門檻降低了


後端會趨近資料庫,但大並發容災分散式緩存事務資料庫本身的設計也是十分複雜的。


純前端應用應該不會成為主流,畢竟有很多條件限制。但成為選擇之一是已經實現了的。

我曾經給丈母娘做了一個小廠使用的管理軟體,後台就只有一個couchDB資料庫,前端backbone;所有資源都用couchDB自帶的rest服務獲取,複雜點的查詢做map/reduce實現,統一是rest介面。邏輯都放在前端。實現起來非常快。當然這是給自己家用的,不用考慮安全問題。

這樣做最大的好處就是,安裝環境極其簡單,不需要應用伺服器,不需要任何服務框架,安裝apache和couchDB就可以,兩者在win下都有自動安裝包,不用一行命令,前端純複製過去。於是岳母在我電話指導下自己安裝了環境部署了項目,運行。一切都很順利。世界上有任何一個後端服務能做到這樣嗎?如果有,可能只有在win環境中的.net了吧。(node.js已經很簡單了,但還是要從命令行運行,要執行npm)


不過有一個問題 web化還需要 webkit桌面化的推進


未來?正在發生啊

除了頂級web

其它99%場景

js搞定業務邏輯就夠了


後端意味著服務的規則和約束,意味著基本的發展路徑和商業模式,仔細體會下這句話的含義。

十年前就有人說後端代替前端,現在又說前端代替後端,這些人怎麼總喜歡看到點變化就走極端呢?事實上是前端後端都在發展,網路越來越強大,但大家對cpu和顯卡硬碟的性能要求也在提高,看問題要看整體,以上。


不太可能,也不理解樓主同質化的意思

即使是後端技術,現在是五花八門,同一個問題有幾百種解決分案, 用那種方案不單是按問題本身決定,而是涉及多種因素,如成本,技術掌握,infarstricture等等… 所以根本不可能同質化

其次的是後端最大的特點就是有絕對單一的控制及管理,如果把所有運算放到前端,你就會發現溝通的拓撲模型及困難會以幾何級數上升,而且如果想監察所有有事件及作出統計分析,你還是得建一個後台把資料回報過去。

分享也是重要的一環,如果你有服務需要分享前端是極其困難。

當然後台還有一個最大的優點,就是具有更大的安全性,起碼你可以控制及暴露一些想公開的部份, 前端可以說是透明的。


首先,我不希望看到這樣的未來。比如,前段時間不有很多人在抱怨么,現在聽音樂要裝兩款垃圾軟體了。原因嘛很簡單,差不多從十年前開始Internet的發展就已經停滯了,Web取代了原先Internet的位置。你看,現在新出來的Web網站,域名很多都不是www開頭的。假如還是Internet時代,IETF RFC里肯定會有個音樂商店的標準協議,我們使用隨便什麼音樂商店客戶端,只要把音樂商店的網址加進去就可以正常使用了。

回到正題,我認為近期的趨勢是Web開發會變成分成三個部分,樣式,業務邏輯,服務。服務,無非就是像資料庫這種從後端剝離出去的和具體業務不直接相關的。樣式主要就是從前端把CSS什麼的剝離出去。而業務邏輯是把前後端剩下的部分合併在一起。畢竟業務邏輯有一部分在前端有一部分在後端,粗暴的把兩者分開,開發起來很彆扭。

我相信在今年晚些時候,會出現全新理念的Web開發框架,不提前後端分離,而是大力倡導前後端融合。前後端代碼全都寫在一起,部署時自動給你生成JavaScript和服務端代碼。假如我沒猜錯的話,這個框架會用PHP語言開發,不信你看JSX不就是個對PHP的拙劣模仿。


樓主,你應該理解錯了,後端越來越成熟,大部分東西都是後端做的,前端只是負責展示!!!雲主機,雲資料庫,大數據計算什麼的,都是在後端做的,前端只是為客戶提供展示層,真正的業務是在後端做的,這是後端強大的表現,前端,想好如何高效以及生動的吧需要的東西和參數提取出來,良好的展示出來


後端只有存儲? 我等的生活怎可能如此美好!

剝開任何一個系統,業務邏輯(滿足功能需求)都是最基本的。哪些可以放前台,哪些可以放後台?

基本的功能需求滿足了,非功能需求呢?

一些常見非功需求的例子, 支持100w並發請求;當天交易必須晚23點前處理完畢;災備要求支持熱切換。


資料庫在這裡,那個前端麻煩把功能做好


是的,前端是最吊的 其他都是渣渣。


對題主的主要觀點表示認同。能丟給瀏覽器做的事盡量別交給伺服器。

但隨著越多的功能在web中實現,前端也就越來越重。deliver的優勢也就越來越小(相對客戶端而言)。所以目前還是需要在功能和規模上找到一個平衡點。只是隨著時間的推移這個點會不斷向功能這邊推移。例如現在想在瀏覽器中跑大型遊戲雖然可行,但資源載入過程可能會讓玩家感到抓狂。而隨著帶寬的提升,這個問題也會慢慢得到解決。另外由於安全性的問題,部分功能很難直接在web中實現。即使能實現也很難完全滿足體驗上的需求。這部分缺陷往往還是要靠原生代碼來補足。所以我認為在大部分人不用安裝軟體之前,必然要先經歷一個原生代碼與web共生的混合客戶端大行其道階段。而現在應該正處於這個階段的初期。


推薦閱讀:

CSS 中,為什麼絕對定位(absolute)的父級元素必須是相對定位(relative)?
UI/UX與前端的分界,客戶(PM)與程序員的關係?
CSS 2.1 中為何規定行內塊元素的「overflow」為非「visible」時其基線是底部外邊界?
關於阿里巴巴的矢量圖標與傳統的雪碧圖有什麼優勢?

TAG:前端開發 | JavaScript | BaaS |