不使用任何后端代碼可以開發應用程序嗎?
在一個一切都在加速的世界里,你需要快速迭代以避免被拋棄。
技術有很多,但你不可能掌握每一項。你可能會問自己:“我怎么能在不了解后端代碼的情況下構建應用程序呢?”
- 你需要快速、安全地進行迭代
- 不太了解后端代碼、主機或DevOps
- 專注于已經很復雜的前端開發工作
那么,在沒有任何后端代碼的情況下,你能開發出一個可以工作的應用程序嗎?
小芯告訴你:可以的。
下面我們就來一一介紹:
后端作為服務(BaaS)進行救援作為服務的后端是一個遠程工具箱,不需要一行代碼,它就可以幫助你快速構建通用的應用程序功能,比如自動驗證、數據庫持久性、搜索和統計信息。
有很多工具提供了這樣的工具。
- Firebase可能是最知名的,它是由谷歌和谷歌云平臺支持的。它非常高效和酷,是作為一個云黑盒工具托管的。如果你需要本地工具,你可以使用自己的主機查看一些解決方案,比如
- Kuzzle,一個基于NodeJS、彈性搜索和Redis的特別強大的物聯網和高性能/流量應用服務(BaaS)。
- FeatherJS,一個有各種連接器的NodeJS服務器,可用于MySQL, Postgres或MongoDB。
- Strapi,一個幫助你快速建立CMS的NodeJS服務器。
當使用Baas時,你需要稍微改變主意。
來源:Pexels
與調用將根據自定義邏輯更改數據的自己的端點不同,與根據自定義邏輯調用端點來更改數據不同,你通常會直接使用前端的格式化數據查詢與數據庫交互的服務端點,因為這些數據必須出現在數據庫中。
因此,前端代碼被認為是安全的,惟一要做的就是在后端應用一些驗證策略來保證某些場景中的數據完整性。
請記住,當談到“backendless”時,實際上它有一個正在運行的后端,只是你不需要為此編寫任何(或只編寫很少)代碼。幾乎一切都已為你準備好了。
把后端作為服務的一個小例子
假設你需要創建一個博客帖子,如果沒有BaaS,你可能會調用一個名為post/blog/create的端點,并且可能會傳遞這樣的對象
- {
- "title": "My newpost",
- "content":"<h1>Some HTML…"
- }
然后在后端,你將添加一個postID、一個帶有創建日期的服務器時間戳,可能還添加了一個字段,作者使用的是使用會話令牌找到的當前用戶。
使用BaaS,你可以像使用SDK這樣直接在集合上進行調用(我將在下面向你展示一個FirebaseFirestore示例,在其他工具中類似)。
- constarticleReference = db.collection("blog_posts").add({
- "title": "My newpost",
- "content":"<h1>Some HTML…",
- "owner":"<user_unique_id>"
- "creation_date": 1578855978
- })
- .then(success => console.log(success))
- .catch(error => console.warn(error));
并且在后端添加一些限制策略,例如通過驗證作者。
- match/blog_posts/{postId} {
- allow read if true,
- allow create, update: ifrequest.auth.uid == resource.data.owner;
- }
這樣,可以更快地編寫代碼,而且為安全策略定義自動化測試套件也比后端代碼更容易。默認情況下,所有東西都是禁用的,可以一點一點地啟用它們。
這也可以定義一些后端函數來“掛鉤”某些事件,如文檔創建、編輯或刪除。這樣就可以定義一些副作用或額外驗證。
使用后端作為服務能創建什么?
這就是問題所在……你可以構建的東西是沒有限制的,如果遇到了限制,可以用其他工具甚至自定義后端來擴展這些工具。
大多數情況下,在基于云的解決方案上有合理的免費層,所以開始構建時沒有問題,當應用成功時你就要開始支付少量費用了。
那很昂貴嗎?
來源:Pexels
記住,任何幫助你更快、更安全的事情通常都有不利的一面。在使用內部包時,成本是關于開發人員支持和協助許可的。
但是當使用云BaaS時,當它們擴展到一個非常大的數據集時,通常就很昂貴了,你還需要設計應用程序來大規模地使用它們,但是工程師最大的問題是花時間優化一些根本不應該存在的東西。
使用BaaS進行快速迭代,如果你的產品獲得了一些成功,請考慮稍后對其進行優化的方法,有可能的話切換到另一種技術。
BaaS很酷的一點是,你可以很容易地遷移到其他工具。
現在輪到你了,快來試試吧。