有个旧项目使用ci3写的,当时并没有考虑兼容、扩展等问题,技术上选择也有问题,主要采用PHP直接开发未进行前后端分离,前端使用jQuery,当时还尝试了pajax的写法,不过很明显这种写法已过时了,另一方面更当时自己刚刚涉入前端不久有关,技术能力不足。
基于历史原因,导致新需求或者需求变更时,维护特别麻烦,借助于本次的系统升级,为项目做更长远的规划,这次重新为该项目选择框架:mysql+CI4+React,前后端分离。
- Mysql
数据库mysql就不废话了。
- CI4
CI全称Codeigniter,CI4是它发行于2020年2月的一个最新版。相较于CI3,CI4升级优化了很多功能,许多功能借鉴了Larval的实现,对开发人员来讲更友好,尤其是OOP的开发方式。CI3的许多问题就不说,如果当时自己能习惯写文章,CI3的文章应该可以写不少。
这里简单对比一下CI4、Larval、YII这三个主流的PHP框架,这次升级一开始并不是选择CI4,而是YII,其次是Larval,最后CI4。
另外再选择框架过程使用了compose这个php包管理器,发现其真的是很难用,无法自动解决包依赖问题,安装过程中有些依赖需要人为解决,太不友好了。
YII:https://www.yiichina.com/doc/guide/2.0/intro-yii
Larval:https://www.golaravel.com/
关于YII、Larval的详细内容:安装、使用、api等可在上面官网中找到解答,我这里没必要去说。
个人对三个框架的看法是YII和CI4更偏向于新手,入手快门槛不高,其中YII可以驾驭大型项目,小项目建议使用CI4;而Larval门槛高一些,偏向大项目。
框架本身没有好坏,用过这三个框架后,觉得他们都大同小异,源码可读性上CI4>YII>Larval,大项目的选择上YII=Larval>CI4,在团队项目开发过程中CI4表现很吃力,而YII=Larval会更友好,当然CI4的很多改进已经极大优化了这部分问题。
更多框架之间的选择、优缺点、未来等什么的,上百度、谷歌搜索一下你会得到更详细的答案。
这里最终选择CI4一是因为这是个小项目,二是目前只有自己一人开发和维护,三是compose太搞心态了,虽然三个项目用compose安装成功,但是其过程很心塞,这点上CI4下载即用显然比较友好。
- React
自己是做前端的,目前React是我主要在用的前端框架。其他前端框架如vue也有用,前端框架的选择和对比不罗嗦了,再罗嗦又是几百个字,算了算了。
- 前后端分离
前后端分离是大势,不分离的项目维护成本比较高,特别是针对前端多端的开发,分离后后端统一接口,开发量减少不是一点点,因此条件允许情况下建议前后端分离开发。
CI4框架自身含有前端部门,分离后项目在部署上需要做出变化,这个在后面的文章中再详细说一下我的实现方式。
- 环境
开发环境:phpstorm/webstorm+php7.2.9+apache2.4+nginx
CI4的php要求最低是7.2,而php7.2+要求apache必须是2.4,2.2是无法使用的,nginx是用于开发环境的前后端接口转发。
这里有一点需要注意就是PHP的TS和NTS,因为选择apache需要选择TS,否则NTS安装包中会找不到apache需要的apache2.4.dll;如果选择IIS作为本地服务器,就需要选择NTS版本。详细参考这个网站:https://windows.php.net/download/
生产环境:阿里云虚拟主机+php7.2
生产环境需要将后端代码+前端包都放到虚拟主机的站点目录下,通过.htaccess方式进行重定向,详细在后续文章中进行说明。
好了,开篇写的差不多了,后面开始写CI4相关系列文章。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。