塞壬唱片Nodejs-API
这是一个模仿 NeteaseCloudMusicApi 制作的项目
可以用于当作自己 web 作业的后台,也可以用于构建自己的播放器
项目地址:https://github.com/QingXia-Ela/MonsterSirenApi
未来会把这个集成到新播放器的后台,敬请期待
下面简单说一下项目搭建思路
项目起步与搭建思路
目录结构
项目的目录采用了 monorepo 的方式去弄,虽然本质上是为了方便多个包在同一个 repo 进行维护,不过本项目就还没有完全按照这种格式去处理目录,比如 utils 仍然是在 packages 目录下的,还有 declare 也是
后面如果有机会项目会进行重构处理,至少不会让目录那么难看
服务器实例
服务器实例使用的是经典的 express,上手比较容易
接口模块化
架构参考了网易云 api 的模式,具体来说是采用了设计模式中的模板方法模式,在服务器中定义一个算法的骨架,然后给子模块接口传入必要参数,并让子模块去自行设计算法处理参数,然后通过服务器给的请求方法发起请求
不过当初模仿这种架构的时候设计的不是很好,导致后期想要扩展时非常痛苦,不得不在子模块内写了一堆很蠢的代码进行参数解构去维持运行
以后一定要找机会重构
ts 编译后的 js
ts 编译后的 js 在 ESM 模式下是不会携带 js 扩展名的,这就导致编译的 js 是无法直接启动的,因为会因为路径和扩展名问题报错找不到模块
目前项目内所有的引入都是采用相对目录模式引入,其次是写了一个处理脚本,在编译后遍历所有的 js 文件,对 import 与 export 部分进行处理与添加 js 扩展名
原脚本:https://github.com/liulinboyi/HTMLParser/blob/main/script/addSuffixJs.js
自己根据需求改造了一下:https://github.com/QingXia-Ela/MonsterSirenApi/blob/main/addSuffixJs.js
不过仍然有点小 bug,以后看看有没有机会继续改吧
npm 发包
这一步还是很简单的,参考的这篇文章就没问题:https://blog.csdn.net/qq_36380426/article/details/128310001
npm 登录自己的账户:
npm login
登录完后用 npm publish
就可以登录成功了
在最后的白名单与黑名单中,个人更推荐在 package.json
去写白名单目录和文件,这样子管理更方便