{eval=Array;=+count(Array);}
你的訴求是,如果后端只干了增刪改查,是不是可以干掉。
答案是當然可以,而且這個思路符合邏輯。
但是干掉的方式有很多
1,瀏覽器直接和數據庫打交道。
這個思路早就有之,甚至在富瀏覽器之前。微軟在他的IE瀏覽器中提供了ActiveX的擴展,允許你安裝插件。此時你如果安裝同樣是微軟的Access數據庫插件。就可以直接在瀏覽器操作數據庫了。
2,使用輕量數據庫嵌到前端。
富客戶端概念興起后,在前端存數據也不新鮮了。只是前端不認為這是數據庫,更多認為是緩存。因為最終避免數據丟失,安全,一致性,還是需要后端的。此外,將sqlite類似的數據庫嵌到app是非常常見了,但是app可能不被認為是“前端”。
3,打不過就加入,前端實現輕服務端。
正兒八經說一下這一條。這個無疑是未來去除討厭的服務端的發展方向。借助nodejs,graphQL等框架,面向前端編程已經非常流行了。這里也推薦題主看一下Prisma。堅定自己想法,前端走遍天下是可行的。
技術上可以,但是一般都不會這樣做,原因如下:
因此,基本上數據庫訪問的業務代碼都是放在服務端的,客戶端通過訪問服務端來了解訪問數據庫。
你可以將現在的的“狀態”理解為就是前端直接鏈接了數據庫,并給他起個特殊的名字,比如“萌某數據連接”。“萌某數據連接”,“使用了多種協議”,為了“穿越多種”網關;使用了多種保護策略,用以保護鏈接的有效性;……。
非專業人士,簡單回答一下:
前端連接數據庫,一個是安全問題,第二是并發性能問題,第三是系統的可維護性問題。
當然第三個問題如果真想解決,通過一些設計還是可以解決的,第一第二問題那就關系到互聯網的一些基礎性東西,基礎決定上層建筑,目前的這些設計都是建立在這些基礎上形成的相對最優的方案。
也不是完全不行
我以前做程序的時候也是在前端直接連接數據,那時候我剛入行一年,我們公司的項目屬于內網項目,不需要考慮什么安全問題,當時我負責的一個模塊是基于applet的,使用java程序嵌入網頁。
我在applet里面寫了jdbc連接,然后使用js拼接sql,調用applet操作數據庫,完全不經過后臺,開發起來非常方便,網頁刷新一下就能調試了,不需要重啟后臺。
不過那個項目也就客戶那邊幾個人在用,不存在安全性問題,也沒有并發問題,所以那樣做其實一點問題都沒有。
但是,如果是其他web項目甚至是互聯網項目,這樣弄純粹就是不想混了,在js里面寫sql,連接數據庫,別人稍微會點技術的,直接運行一句delete,或者drop table,這時候你怎么辦,特別是你數據庫數據高達百萬或者十幾億的數據,足夠讓你公司破產了。
其實現在也是有一些基于web端的存儲,比如sqlite,websql,sessionstorage,localStorage,session,cookie,或者基于js自己實現個簡易數據庫,我曾經就嘗試實現過js版數據庫,然后服務器上開著一個瀏覽器,后臺用websocket交互這個瀏覽器上的數據庫。
瀏覽器內部提供的存儲一般是為了提升交互體驗而使用,而不是直接存儲賬號密碼,特別是明文密碼或者其他重要數據,所以,不能為了完全的性能而忽略安全性問題。
但是如果是小型項目又是個內網項目,本來就沒什么錢掙的項目,如果你覺得在前端存數據方便那就在前端存就行了,這種情況當然是怎么開發快怎么來了。
你再仔細想想,如果前端能直接訪問數據庫,前端必然有數據庫連接信息,那么用戶就可以通過其他手段訪問你的數據庫,你還有什么秘密可言?
因為要分工,你不能把一個人把所有事情都干了。每個人做好自己的事,可以提高效率。
模塊化方便,查找問題比較快速。便于更多人協同作業。就象前端還有三種文件一樣,不然,你全弄些二進制數據,一個文件搞定。
作為一個開發者,負責任的告訴你,絕對不可以
第一,安全性沒有保障,暴露數據庫連接賬號和密碼或者授權信息,人人都能鏈接
第二,高并發等復雜的邏輯難實現
第三,js是單線程,還是解釋性語言,性能無法保障
第四,流對于前端是非常困難的,比如內存流處理
第五,前端代碼不能編譯,只能混淆,容易被篡改,暴露源代碼在別人面前是非常危險的
這會想到的就這些,歡迎補充!
0
回答0
回答10
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答