后端开发者从零作一个移动应用(后端篇)

先来上一张前端页面的效果图(Vue + Vux + Vuex + Vue-Router)。
imagephp

第一次作gif 没什么经验,太大了。加载慢 前端

项目地址: http://m.jiasux.com ,你们能够自行手机打开查看效果。vue


好了,废话少说,来聊聊后端git

后端写些什么,什么东西写出来对我是更好的总结,也是对你们更好的帮助?在准备写的时候,我思考了好久。程序员

以前准备了 手摸手,嘴对嘴 教程。想想这样子没什么意思,若是是一步步作的教程还不如看视频去,就想也许经过总结后端结构(注意是结构不是架构)设计、代码组织、模块划分对你们更有帮助。github

后端开发的疑惑

后端开发最常面对的一个问题:性能、高并发等等。可是这不在本文的讨论范围,咱们只讲基本的怎么把代码写好,如何把业务模块划分好。web

性能、高并发的解决方案, 大部分是在代码以外的扩展。json

那么站在纯粹的 写代码 角度,如何写好后端的代码呢?我之前的疑惑经常有:Controller 层到底放哪些代码?Model 又能够作哪些事情?本身的一些扩展、工具类,该如何组织?segmentfault

发现如今可以想起的疑惑变少了,若是你有什么疑惑,欢迎留言咱们一块儿学习讨论后端

虽然代码主要是实现业务逻辑,可是选择一款好的框架,很是有助于提高团队做业能力,让代码层面的性能无忧。

框架的选择

说实话,自感 php7 出来后,代码层面的性能,已经到了一个很是高的层度。基本上在百万级别左右的系统,在语言层面没有什么顾虑了。

框架方面,本身用过的php框架包括(时间前后):ThinkPHP Laravel 非著名自造框架 Yii Phalcon

本文全部代码结构设计与组织设计基于 Phalcon ,其它除了 自造框架 都是很是优秀的框架,不过框架层面的性能,就自身而言,是逐步升高。可是经过一些整合,也能够逐步提高其自身性能,如:Laravel YiiSwoole结合,也可达到 Phalcon 的程度。

php的版本是:7.1(若是你是一个新项目,必定要用php7)

后端要作些什么

固然确定须要先把db设计好,不过这不在咱们讨论范围,假设已经完成了这一步。

咱们的代码须要提供如下几部分能力:命令行脚本、api版本、后台管理这三部分。固然这三部分也能够拆分红三个项目,不太小公司、小项目没有必要(放在一个项目,增强了代码的复用性)

这三个是大的模块,而后再一个个接下来分析。

命令行脚本

先说 命令行脚本 它是比较独立的部分,不须要用户调用,主要用来完成一些定时任务等。现代一点的框架,都提供这个模块。
Phalcon提供了一个 CLI 模块,能够方便的完成这部分能力。他的代码写起来仍是 mvc 的结构,只不过访问是经过命令行来进行。

好比一个最简单的 cli

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

api模块

我在最先接触api概念的时候,很懵逼,以为很高大上。如今我对它的理解就是:先后端纯数据通讯的一种方式。之前作web开发,咱们不提供api,直接后段把数据渲染在页面上,用户直接在渲染的界面上操做,而后经过按钮或者什么触发一个请求到后端。

而到了api时代,在web方面有了先后端分离概念;移动app后端更是无力渲染(自然先后端分离)。因此要后台须要把数据发给前端,前端根据数据的描述把数据用用户看得懂的方式展示出来。好比一个商品的api可能结构以下:

{
    code: 1,
    msg: 'query ok',
    data: {
        name: '最凉快的空调',
        price: '9999.00',
        img: 'xxx.webp',
        stock: '10'
    }
}

这种方式让先后端的开发彼此独立,你们专一作本身的事情。可是这也带来另一个问题:前端有了所谓的版本,后端必须兼顾全部使用的版本。若是咱们永远只使用一个api地址。那么代码可能会至关难看。

好比如今有了一个新的需求,之前 空调 只有一张图片。如今空调展现的时候有多张图片。那么有两种办法,一种是增长字段,一种是将原字段 img 变为一个数组。

若是是增长字段不会带来兼容性的问题。可是若是是粗暴的将img类型变动为数组,以前的版本将没法解析这个类型,所以要想变为数组,只能是api的总体升级(通常不会由于这个问题就进行升级)。

那么api作版本有哪些办法呢?我采用了Phalcon的模块来作api的版本控制。之前还尝试过控制器版本。好比:
ApiV1Controller 表示这是v1版本。ApiV2Controller表示是v2版本。Phalcon的模块为版本提供了很是大的便利,直接新开一个模块,取名 v1,若是以后要升级,新开一个模块叫作 v2。对于不须要修改的功能,能够简单的让v2控制器继承v1中的控制器。

api的版本方面,咱们就能够简单经过url的方式完成,好比:

后台管理

绝大部分系统,都须要一个cms来上传、修改相关资料。以加速侠为例:须要上传游戏,须要编辑一些游戏合辑等。你能够单独成一个项目,也能够仍是用模块来进行开发(我推荐,极大程度的提供了代码复用)。

我最不能接受的一句话是:后台顺便弄一下,反正给公司内部用的。

作为一个有追求的程序员,咱们必需要有底线,咱们的目标是:让你们工做起来更便捷,更轻松,最后让你们没有工做(哈哈哈)。因此后台我也建议采用先后端分离,经过Vue来进行开发。

当前的后台使用了 Vue + Element UI + Vuex + Vue-Roter来进行开发。参考了,网络上的: 手摸手,带你用vue撸后台,写的真不错,为我学习省了不少弯路,特别是前端在权限控制上这一部分,他的方式让我眼前一亮。个人后台如今才刚刚搭建完基本的部分(路由规划、一些本身扩展的vue插件)
image

先后端分离后,后段其实也能够归结到api的开发部分。而且这样带来的一个好处是:若是之后后段要作移动版的一些功能,api都是现成的。

未完待续

写代码越久,愈加现语言层面的东西,只要多动手,很快就能达到一个水平。可是业务代码写的再多,也不能让你再技术领域走的更远。所以若是你有幸在大公司,有机会接触大型项目(百万、千万用户级)的,必定好好观察为了这个项目这么多人开发,还可以很好的运做?他是如何解耦业务逻辑与系统架构?若是是在小的公司,那么就尽量本身尝试去作一些系统的搭建,让你们在这个基础上进行业务开发,而不须要关心一些底层的东西,一个新手也能很快上手写业务。

后面可能还会有两篇到四篇讲后端部分。主要包括,后端项目结构的划分(这个结构我已经尝试过在三、4个项目中使用,目前都运行的很好),后端登录控制(会开源一个Phalcon的oauth2的代码),后段api的自动化测试。

相关代码我将会陆续放在github上面。全部的代码就叫 x- 吧。x 从小学数学给我留下了深入印象。

  • x-api 是php的后端项目

  • x-control 是vue写的后端管理系统

  • x-client 是vue系的客户端界面


我的博客:https://helei112g.github.io/

相关文章
相关标签/搜索