数据库选用了主流的 NoSQL 数据库 Mongodb 主要用于记录文章与 cookie 信息
4.3 项目结构 . ├── service.json //启动文件,包含路由注册,数据库连接 ├── backend ├── config ├── extensions │ └── src │ └── popup ├── lib ├── models // 数据库模型 ├── nginx // nginx配置 ├── public │ └── icons ├── routes //相当于MVC中的controller ├── spiders // 爬虫相关功能 │ └── import └── src ├── assets │ └── img ├── components │ ├── Authorized │ ├── CopyBlock │ ├── GlobalHeader │ ├── HeaderDropdown │ ├── HeaderSearch │ ├── NoticeIcon │ ├── PageLoading │ ├── SelectLang │ └── SettingDrawer ├── data ├── e2e │ └── __mocks__ ├── layouts ├── locales │ ├── en-US │ ├── pt-BR │ ├── zh-CN │ └── zh-TW ├── models ├── pages │ ├── ArticleEdit │ ├── ArticleList │ ├── Demo │ ├── Environment │ ├── Helper │ ├── Paste │ └── PlatformList ├── services └── utils虽然前后端代码没有分为两个仓库,但是采用的是前后端分离模式,使用 Nginx 作为反向代理。后端部分与传统 MVC 模式相比有些许改变,但主要的 controller、models 和 service 还是存在(只是名字变了)。
下图是 ArtiPub 的架构示意图:
五、最后ArtiPub 本身并不是一个非常复杂的项目,但是其中包含了很多有趣的功能和思路,比如通过 Chrome 插件获取用户在各大平台的 cookie 来解决当用户账号太多,授权麻烦的问题。还有通过 puppeteer 一种自动化工具来实现发布。通过对 ArtiPub 源码的学习能够学到除 Node.js 以外的很多技术,并且这些技术使用场景也是非常丰富的。
希望今天推荐的 ArtiPub 你能喜欢,也希望你能在读完文章后 clone 项目阅读一番,觉得不错的话可以关注 「HelloGitHub」 公众号,收到第一时间的更新。爱你呦~