溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

web后端開發(fā)中怎么從零做一個(gè)移動(dòng)應(yīng)用

發(fā)布時(shí)間:2022-01-17 14:22:09 來源:億速云 閱讀:93 作者:iii 欄目:大數(shù)據(jù)

今天小編給大家分享一下web后端開發(fā)中怎么從零做一個(gè)移動(dòng)應(yīng)用的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

后端開發(fā)的疑惑

后端開發(fā)最常面對(duì)的一個(gè)問題:性能、高并發(fā)等等。但是這不在本文的討論范圍,我們只講基本的怎么把代碼寫好,如何把業(yè)務(wù)模塊劃分好。

性能、高并發(fā)的解決方案, 大部分是在代碼之外的擴(kuò)展。

那么站在純粹的 寫代碼 角度,如何寫好后端的代碼呢?我以前的疑惑常常有:Controller 層到底放哪些代碼?Model 又可以做哪些事情?自己的一些擴(kuò)展、工具類,該如何組織?

發(fā)現(xiàn)現(xiàn)在能夠想起的疑惑變少了,如果你有什么疑惑,歡迎留言我們一起學(xué)習(xí)討論

雖然代碼主要是實(shí)現(xiàn)業(yè)務(wù)邏輯,但是選擇一款好的框架,非常有助于提升團(tuán)隊(duì)作業(yè)能力,讓代碼層面的性能無憂。

框架的選擇

說實(shí)話,自感 php7 出來后,代碼層面的性能,已經(jīng)到了一個(gè)非常高的層度?;旧显诎偃f級(jí)別左右的系統(tǒng),在語言層面沒有什么顧慮了。

框架方面,自己用過的php框架包括(時(shí)間先后):ThinkPHP Laravel 非著名自造框架 Yii Phalcon

本文所有代碼結(jié)構(gòu)設(shè)計(jì)與組織設(shè)計(jì)基于 Phalcon ,其它除了 自造框架 都是非常優(yōu)秀的框架,不過框架層面的性能,就自身而言,是逐步升高。但是通過一些整合,也可以逐步提升其自身性能,如:Laravel YiiSwoole結(jié)合,也可達(dá)到 Phalcon 的程度。

php的版本是:7.1(如果你是一個(gè)新項(xiàng)目,一定要用php7)

后端要做些什么

當(dāng)然肯定需要先把db設(shè)計(jì)好,不過這不在我們討論范圍,假設(shè)已經(jīng)完成了這一步。

我們的代碼需要提供以下幾部分能力:命令行腳本、api版本、后臺(tái)管理這三部分。當(dāng)然這三部分也可以拆分成三個(gè)項(xiàng)目,不過小公司、小項(xiàng)目沒有必要(放在一個(gè)項(xiàng)目,加強(qiáng)了代碼的復(fù)用性)

這三個(gè)是大的模塊,然后再一個(gè)個(gè)接下來分析。

命令行腳本

先說 命令行腳本 它是比較獨(dú)立的部分,不需要用戶調(diào)用,主要用來完成一些定時(shí)任務(wù)等?,F(xiàn)代一點(diǎn)的框架,都提供這個(gè)模塊。
Phalcon提供了一個(gè) CLI 模塊,可以方便的完成這部分能力。他的代碼寫起來還是 mvc 的結(jié)構(gòu),只不過訪問是通過命令行來進(jìn)行。

比如一個(gè)最簡單的 cli

class MainTask extends Task
{    
   public function mainAction()    {
       return fwrite(\STDOUT, 'hello task!')    } }

api模塊

我在最早接觸api概念的時(shí)候,很懵逼,覺得很高大上。現(xiàn)在我對(duì)它的理解就是:前后端純數(shù)據(jù)通信的一種方式。以前做web開發(fā),我們不提供api,直接后段把數(shù)據(jù)渲染在頁面上,用戶直接在渲染的界面上操作,然后通過按鈕或者什么觸發(fā)一個(gè)請(qǐng)求到后端。

而到了api時(shí)代,在web方面有了前后端分離概念;移動(dòng)app后端更是無力渲染(天然前后端分離)。所以要后臺(tái)需要把數(shù)據(jù)發(fā)給前端,前端根據(jù)數(shù)據(jù)的描述把數(shù)據(jù)用用戶看得懂的方式展現(xiàn)出來。比如一個(gè)商品的api可能結(jié)構(gòu)如下:

{
    code: 1,
    msg: 'query ok',
    data: {
        name: '最涼快的空調(diào)',
        price: '9999.00',
        img: 'xxx.webp',
        stock: '10'
    }
}

這種方式讓前后端的開發(fā)彼此獨(dú)立,大家專注做自己的事情。但是這也帶來另外一個(gè)問題:前端有了所謂的版本,后端必須兼顧所有使用的版本。如果我們永遠(yuǎn)只使用一個(gè)api地址。那么代碼可能會(huì)相當(dāng)難看。

比如現(xiàn)在有了一個(gè)新的需求,以前 空調(diào) 只有一張圖片?,F(xiàn)在空調(diào)展示的時(shí)候有多張圖片。那么有兩種辦法,一種是增加字段,一種是將原字段 img 變?yōu)橐粋€(gè)數(shù)組。

如果是增加字段不會(huì)帶來兼容性的問題。但是如果是粗暴的將img類型變更為數(shù)組,之前的版本將無法解析這個(gè)類型,因此要想變?yōu)閿?shù)組,只能是api的整體升級(jí)(一般不會(huì)因?yàn)檫@個(gè)問題就進(jìn)行升級(jí))。

那么api做版本有哪些辦法呢?我采用了Phalcon的模塊來做api的版本控制。以前還嘗試過控制器版本。比如:
ApiV1Controller 表示這是v1版本。ApiV2Controller表示是v2版本。Phalcon的模塊為版本提供了非常大的便利,直接新開一個(gè)模塊,取名 v1,如果之后要升級(jí),新開一個(gè)模塊叫做 v2。對(duì)于不需要修改的功能,可以簡單的讓v2控制器繼承v1中的控制器。

api的版本方面,我們就可以簡單通過url的方式完成,比如:

  • https://api.xxx.com/v1/user/123

  • https://api.xxx.com/v2/user/123
    版本信息就非常的一目了然。

后臺(tái)管理

絕大部分系統(tǒng),都需要一個(gè)cms來上傳、修改相關(guān)資料。以加速俠為例:需要上傳游戲,需要編輯一些游戲合輯等。你可以單獨(dú)成一個(gè)項(xiàng)目,也可以還是用模塊來進(jìn)行開發(fā)(我推薦,極大程度的提供了代碼復(fù)用)。

我最不能接受的一句話是:后臺(tái)順便弄一下,反正給公司內(nèi)部用的。

做為一個(gè)有追求的程序員,我們必須要有底線,我們的目標(biāo)是:讓大家工作起來更便捷,更輕松,最后讓大家沒有工作(哈哈哈)。所以后臺(tái)我也建議采用前后端分離,通過Vue來進(jìn)行開發(fā)。

當(dāng)前的后臺(tái)使用了 Vue + Element UI + Vuex + Vue-Roter來進(jìn)行開發(fā)。參考了,網(wǎng)絡(luò)上的: 手摸手,帶你用vue擼后臺(tái),寫的真不錯(cuò),為我學(xué)習(xí)省了很多彎路,特別是前端在權(quán)限控制上這一部分,他的方式讓我眼前一亮。我的后臺(tái)現(xiàn)在才剛剛搭建完基本的部分(路由規(guī)劃、一些自己擴(kuò)展的vue插件)

web后端開發(fā)中怎么從零做一個(gè)移動(dòng)應(yīng)用

前后端分離后,后段其實(shí)也可以歸結(jié)到api的開發(fā)部分。并且這樣帶來的一個(gè)好處是:如果以后后段要做移動(dòng)版的一些功能,api都是現(xiàn)成的。

以上就是“web后端開發(fā)中怎么從零做一個(gè)移動(dòng)應(yīng)用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI