Fecshop 全称为 Fancy ECommerce Shop,是基于 PHP Yii2 框架开发的一款优秀的开源电商系统,遵循 BSD-3-Clause 协议,Fecshop 支持多语言,多货币,架构上支持 PC,手机 Web,手机 APP,和 ERP 对接等入口,您可以免费快速的定制和部署属于您的电商系统。
Fecshop 基于 Yii2 的高效框架,在此基础上进一步封装,加入了 service 层和 block 层,数据库采用了 NoSQL 和 MySQL 结合的方式,关系型表放到 MySQL 中,譬如优惠券、购物车、订单等,非关系型数据表(非关系型代表不会出现多表强事务类型操作) 放到 MongoDB 中,缓存用 Redis,搜索目前用的是 MongoDB 的 FullTextSearch 功能,支持一些主流语言的分词与搜索,不过目前中文搜索不支持分词,后期会扩展 ElasticSearch 来进行搜索(ElasticSearch 有中文插件,安装后支持中文分词)。
总之,Fecshop 目前的定位是为了让程序员们有一个方便学习,扩展,开发的电商框架系统。
在线演示:https://fecshop.appfront.fancyecommerce.com/
Fecshop 作为一款可以持续性发展的商城系统,在框架层面有以下特性:
由于商城系统的复杂性,原始的框架 MVC 结构,显得有点力不从心,Fecshop 框架加入了 Block 层,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 扩展可以快速的实现增删改查类型的表单列表,方便用户快速的做增删改查。
鉴于以上特点,您可以下载安装 Fecshop,然后更改 Fecshop 的模板和功能,扩展自己想要的功能,或者安装第三方开发好了的扩展或者模板,来快速的组建起来您的网站。