谈谈最近试用的几个Headless无头开源电子商务平台
最近有个电子商务网站开发,需求是 多仓库
+多语言
+多店铺
+多货币
+多税率
+API
,没想到一通折腾下来看似简单的需求,在实际深度体验之后只有使用了php开发的prestashop能满足。
我已经把技术栈从php转到nodejs有一段时间了,最新购入的两台VPS也都是nodejs的架构,所以尽量选择nodejs的项目,可事实上事与愿违。
这次我依次重点试了medusajs, vendure, sylius, prestashop这几个开源项目。
先说说两个nodejs开发的项目
Medusajs
16.3k
个star,RestAPI接口。目前最火,也是我使用强度最高的,前面我还为此写了一篇安装部署教程,但是遗憾的是目前多语言都未实现,果断放弃。
Vendure
4.1
k个star,GraphQL API接口。典型客户有IBM,vendure支持了多语言和多店铺,但是没有多仓库,小有遗憾。
这两个开源电商平台都非常优秀,但是差别也很大:vendure环境需求低,安装配置也简单,支持的数据库也非常多(MySQL,PostgreSQL,SQLite),使用REST API,而medusajs则要复杂得多,需要redis来处理事件队列。这两者都是纯headless架构,前台需要独立安装,因此需要掌握一门前端技术,如Next.js,GatsbyJS等,新手不建议使用。
另外功能我相信后面官方也会逐渐完善。
Sylius
7.1k
个Star,sylius给我的第一反应就是慢,当然我本地测试没有特别优化,它使用了symfony企业级的php框架,毋庸置疑它在工程方面做的非常好,扩展开发起来也非常灵活。
在我的测试过程中发现sylius很多功能需要插件来实现,其中多仓库需要购买付费插件来实现,而另一边多店铺
的需求它通过Channels
实现,可以为每个店铺配置语言货币等,但是测试下来发现前台它通过?_channel_code=
这样的参数来标识,这一点我觉得非常不利于SEO。
sylius采用Rest API,访问地址为:http://YourURL/api/v2
PrestaShop
目前在github收获了6.9k个star,同样基于symfony框架开发,PrestaShop目前是体验最好的,当然,不足的地方也很多,但是都是微小的工作就能修复,如我在过程中遇到多店铺的标题默认存在的SEO问题。
说回多店铺功能,prestashop默认是关闭的,需要在Configure
->General
->Enable Multistore
中开启。
开启后系统会在Advanced Parameters
中生成出新的菜单Multistore
,可对多店铺进行配置。
PrestaSHOP的多店铺设置对SEO非常友好,可以绑定自己的域名或用Rewrite的方式设置虚拟目录,而在前台所有URL都可以独立设置标题,模板,内容等等。
最后说说prestashop的Api,系统默认提供了webservices
,可通过Advanced Parameters
-> Webservice
来生成key和开启服务,访问地址为店铺地址后面加上Api
即可,认证用户米和密码均为生成出的key
。
同样prestashop还提供了第三方插件来实现Rest API,从这里下载安装即可,访问地址为 店铺URL+/rest/
总结
nodejs由于特殊的架构体系,在运行速度上有着很大的优势,但是就目前发现nodejs在开源项目成熟度还不如php,而且node项目基本都是往headless这个方向做,也就意味着你需要熟练掌握一门如Vue,NextJS,AngularJS等等之类的主流前端框架,还得掌握熟悉项目本身,了解Api的使用,Api还有GraphQL和RestAPI之分,就medusajs这个项目来说,学习成本非常之高,而PHP的项目都集成了后台和前台,同时又扩展了Api服务,也不失一种灵活的选择。
以上项目都在开箱即用的情况下所做不严谨测试,人生苦短,不重复造论,效率优先,项目先跑起来再说。