fecmall
程序员文章站
2022-07-08 16:02:03
...
- 基于yii2框架开发的电商系统,扩展性强,安全性高,框架层面应对高并发部署, 适合用户搭建属于自己的小型,中型电商系统。
- 开源电商系统,遵循BSD-3-Clause开源协议。
- Controller层只负责调度, Model只负责数据库映射,中间的处理逻辑由block来完成,View层 负责显示,这样各司其职, 以免造成controller文件过于庞大。
- 加入独立功能块,有点类似Yii2的Widget,目的是为了让一些侧栏公用块 可以通过配置的方式 添加,同时,还可以具有设置缓存的功能,譬如侧栏的产品浏览记录, newsletter等独立显示块可能在很多 页面用到,通过独立功能块可以配置方便的载入。
- 在Model层的上层加入服务层Services,这样,Controller,Block,View 层,在原则上 不能直接调用model,必须通过Services层以及子Services层,然后Services访问各个 model,组织数据,事务处理等操作,将数据结果返回给上层,这种设计可以方便以后业务 发展后,进而根据业务特点进行重构,或者以后如果出现新技术,新方式, 都重构成自己想要的样子,譬如, 将某个底层由mysql换成mongodb,或者为了应付高并发读写并且多事务性的功能部分, 进行分库分表的设计方式。
- Fecshop多模板系统,Fecshop设置了多个模板路径,各个模板路径下的文件被加载 的优先级不同,其中,Fecshop的模板路径下的文件最全面,但是优先级最低, ,第三方模板路径优先级其次,用户本地模板路径优先级最高, 用户可以通过 复制相应路径下的view或者js,css文件到本地模板路径,存在于高优先级 模板路径的文件会被优先加载,这样用户可以通过多模板系统的原理进行模板的 制作,同时,不影响Fecshop模板的升级,如果Fecshop view文件升级后被修改, 那么用户可以比对本地模板文件与升级模板文件的代码的不同, 复制更改的代码到本地模板路径 即可。第三方的模板路径的优先级介于本地模板路径和Fecshop 模板路径之间。
- 重写机制,Fecshop的功能基本都可以被用户重写,包括servies层,Modules, Controller,Block,Views,View Layout, 以及Js Css Img等,都可以被用户重写,其中 Js,Css,Img,Views,View Layout 是通过多模板 路径优先级来实现的,其他的是通过配置文件的覆盖更改来实现重写,这样,用户 就可以很方便重构Fecshop或者第三方的功能和模板。
- 升级最小化干扰,Fecshop的核心文件是放到vendor/fancyecommerce/fecshop 路径下面,和第三方扩展,用户二次开发路径完全隔离开, Fecshop可以通过composer进行核心功能的升级,用户只需要通过composer升级 即可。
- 快速高效,Fecshop Servises遵循Yii2的懒加载方式,只初始化使用到的组件服务, 缓存方面有整页缓存,block部分缓存,动态数据ajax加载等方式,让您的网站快速响应。
- Fecshop 多入口模式,分为 appadmin(后台), appfront(PC前端),apphtml5(手机web), appserver(手机app服务),appapi(erp,或者其他接口对接), 不同的业务,不同的设备,进入不同的入口,各个入口共用服务层services, 但是modules部分独立,这样相互干扰最小,可以相互独立开发。
- 后台封装化,fec_admin扩展可以快速的实现增删改查类型的表单列表, 方便用户快速的做增删改查。
- 如果是您公司内部的项目,或者你的朋友等一些项目, 您基于fecmall做相应的商城,是免费授权的, 如果您是建站公司,将fecmall进行二次开发,然后包装成了新的建站产品,然后重新 命名(譬如命名:xxxShop),进行商业宣传完全自研等等一些伪造话语, 对于这种不良商家的这种行为是不允许的,基于fecmall的新产品,必须以fecmall开头命名
- 通过composer安装。
composer create-project fancyecommerce/fecshop-app-advanced fecmall 2.3.0
- 准备域名。
Pc端 > appfront.fecshoptest.com > $root/appfront/web/
后台 > appadmin.fecshoptest.com > $root/appadmin/web/
图片 > img.fecshoptest.com > $root/appimage/common/
H5端 > apphtml5.fecshoptest.com > $root/apphtml5/web/
移动Api端 > appserver.fecshoptest.com > $root/appserver/web/
第三方数据对接Api端 > appapi.fecshoptest.com > $root/appapi/web/
- init命令初始化
在fecshop根目录执行init命令,进行初始化
window:运行init.bat
linux:运行 ./init
此命令会进行一些文件复制,一些设置文件权限等,增强安全性。
- 创建Mysql数据库fecmall
- 界面安装
- 总览
Fecmall在MVC三层架构上,加入了block层和services层,方便扩展和后期重构底层
入口文件:终端用户能直接访问的 PHP 脚本, 负责启动一个请求处理周期,譬如:@app/web/index.php
系统初始化bootstrap:指的是系统的初始化过程中执行的部分,譬如store语言,货币等, 都是在初始化过程中执行。
模块:yii2框架中的模块部分
controller:控制器,一个controller里面有多个action方法,每个action请求,一般对应 一个block,用来处理该action下面的逻辑
block: 逻辑处理层,负责处request发送的数据,调用相应的services方法,然后 进行处理返回最终数据,一般一个controller中的一个action,对应一个block文件
services:服务层,该层为fecmall的核心部分,很多的逻辑都是在此处实现, 对于某个功能,譬如购物车部分,您可以实现多个services,然后通过配置的方式进行切换, 譬如官方实现的redis cart,可以替代mysql cart,因此该层的加入,让您可以方便的重构底层, 根据业务的需求,开发不同的services,甚至使用远程的api封装成services, 让底层的重构更加容易,同时该结构扩展性强,应用市场可以开发不同的services应用插件, 让用户可以方便的安装应用直接切换其他的services
另外该层为共用层,pc,wap,vue,微信小程序,都公用services层
fecmall大多数的逻辑实现以及业务处理,都是在services层进行的。
models:数据库层
view:视图渲染层view
-
FecShop核心包文件结构
打开vendor/fancyecommerce/fecshop ,这里就是fecshop的核心代码包。
@fecshop/app里面 是各个入口系统的文件代码,包含 @fecshop/app/appadmin,@fecshop/app/appfront等。 -
Yii2是多文件配置结构,将多个配置文件分散到各个路径下, 在初始化的时候最终合成一个配置数组,这种方式比较灵活,后面的数组和覆盖前面的数组 配置,这种方式非常适合重写某些组件,服务等.
下一篇:
foreach
推荐阅读