先来之前的前端页面渲染(Vue+Vux+Vuex+Vue-Router)。第一次做gif经验不多,太大了。加载缓慢项目地址:http://m.jiasux.com,可以在手机上打开查看效果。好了,废话不多说了,说说后台和后台写什么,写什么对我来说是比较好的总结,也是对大家比较好的帮助?准备写的时候,我想了很久。之前准备了一个手把手,口对口的教程。想想也没什么意思。如果是循序渐进的教程,最好看视频。总结一下后端结构(注意结构不是架构)设计、代码组织、模块划分,我觉得可能对大家更有帮助。后端开发的疑惑后端开发最常面临的问题之一:性能、高并发等。但这超出了本文的范围。我们只讲代码怎么写,业务模块怎么划分。高性能、高并发的解决方案大多是代码外的扩展。那么从纯写代码的角度,如何写好后端代码呢?我之前的疑惑经常是:Controller层到底放了哪些代码?模型能做什么?如何组织一些自己的扩展和工具?我发现现在能想到的疑惑少了。如有疑问,欢迎留言,让我们一起学习讨论。虽然代码主要是实现业务逻辑,但是选择一个好的框架对于提高团队的工作能力非常有帮助,让代码层面的性能无忧。框架的选择说实话,php7发布之后,在代码层面的表现已经达到了一个很高的水平。基本上,对于百万级别的系统,语言级别是不用担心的。框架方面,我用过的PHP框架有(按时间顺序排列):ThinkPHPLaravel非著名的自制框架YiiPhalcon本文所有代码结构设计和组织设计均基于Phalcon。除了自制框架之外,都是非常好的框架,但是在框架层面性能方面,就其本身而言,是增量的。但是通过一些整合,自身的性能也可以逐步提升。比如LaravelYii和Swoole的结合也可以达到Phalcon的水平。php的版本是:7.1(如果你是新项目,必须使用php7)。当然,如果要在后台做一些事情,首先要设计好db,但这不在我们的讨论范围内,假设这一步已经完成。我们的代码需要提供以下能力:命令行脚本、api版本、后台管理。当然这三部分也可以拆分成三个项目,但是小公司小项目就没必要了(放在一个项目中加强了代码的复用性)。这三个都是大模块,接下来一一分析。先说命令行脚本。命令行脚本是一个相对独立的部分,不需要用户调用。主要用来完成一些定时任务。所有现代框架都提供此模块。Phalcon提供了一个CLI模块,可以轻松完成这部分能力。他的代码依然是mvc的结构写的,但是访问是通过命令行进行的。比如最简单的cliclassMainTaskextendsTask{publicfunctionmainAction(){returnfwrite(\STDOUT,'hellotask!')}}apimodule刚开始接触api这个概念的时候,很迷茫,觉得非常高。现在我对它的理解是:一种前后端之间纯数据通信的方式。以前做web开发的时候,我们不提供API,直接在后端渲染页面上的数据。用户直接在渲染出来的界面上操作,然后通过按钮什么的触发请求到后端。api时代,web有前后端分离的概念;移动应用的后端更无力渲染(自然的前后端分离)。因此,后台需要将数据发送给前端,前端根据数据的描述,以用户可以理解的方式展示数据。比如一个产品的API结构可能是这样的:{code:1,msg:'queryok',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的controller继承v1中的controller。关于api的版本,我们可以简单的使用url来完成,例如:https://api.xxx.com/v1/user/123https://api.xxx.com/v2/user/123版本信息一目了然。大多数后台管理系统都需要一个cms来上传和修改相关信息。以加速器为例:需要上传游戏,需要编辑一些游戏编译等,可以单独组成一个项目,也可以使用模块开发(个人推荐,很大程度上提供了代码复用)。我最不能接受的一句话是:顺便弄个后台吧,反正是公司内部用的。作为一个有抱负的程序员,我们必须要有一个底线。我们的目标是让大家的工作更加方便和轻松,最终让大家不用上班(哈哈哈)。所以在后台,我也推荐前后端分离,通过Vue开发。目前后台使用Vue+ElementUI+Vuex+Vue-Roter进行开发。参考一下,网上有:摸摸你的手,我教你怎么用vue玩后台。写的真好,让我在学习中少了很多弯路,尤其是前端关于权限控制的部分。他的方式让我眼前一亮。我的后台刚搭建完基础部分(路由规划,一些自己扩展的vue插件)。前后端分离后,后面的部分其实可以归结为api的开发部分。而这样做带来的好处之一就是:如果后期要做手机版的一些功能,API都是现成的。未完成的代码写得越久,语言层面的东西就越多。只要多做,很快就会达到一个层次。但是业务代码写的再多,也不会让你在技术领域更进一步。所以,如果你有幸进入大公司,有机会接触到大型项目(百万级、千万级用户),你一定要仔细观察,这么多人在为这个项目开发,它还能正常工作吗?他如何解耦业务逻辑和系统架构?如果你在小公司,那就尽量自己搭建一些系统,让大家在这个基础上发展业务,不用关心一些底层的东西,一个新手也能快速上手手写业务。后端部分以后可能会有两到四篇文章。主要包括后端项目结构的划分(我已经尝试在3、4个项目中使用这个结构,目前都运行良好),后端登录控件(会开源一个Phalconoauth2代码),以及后端API自动化测试。相关代码我会陆续放到github上。所有代码都称为x-。x从小学开始,数学就给我留下了深刻的印象。x-api是php的后端工程x-control是vue写的后端管理系统x-client是vue系统的客户端接口个人博客:https://helei112g.github.io/
