假设我有3个node.js项目(1个app后端,1个app-admin后端,1个分析API)。在每个项目中,我都有一个模型架构调用贷款。
{
attributes: {
userId: { type: String, required: true, index: true, ref: 'users', comment: '用户id' },
amount: { type: Number, required: true, min: 0},
totalAmount: { type: Number, required: true, min: 0},
penaltyInterest: { type: Number, min: 0, required: true, default:
0 }
}
methods: {
getFee () {//some calculation ops
}
save() {//some db ops
}
sendTo3rdComponent() {//some network ops
}
}
这个模型有一些方法,它的模式设计,API实现。如何在其他两个项目中重复使用它。
在多个项目中重用设计和API非常重要。
通常我们通过将组件公开为NPM包来重用组件。但是,该组件有自己的数据库操作和网络操作。是否有可能且适当地将其作为NPM包?
另一个选项类似于eggjs
那么,除了复制粘贴,还有什么绝妙的解决方案呢?
我不建议你发布一个推荐答案包,因为作为一个好的NodeJS开发人员,你不应该用对其他人没有帮助的包污染npm。除非您是有权访问专用包选项的付费NPM用户。
您知道package.json
支持Git URL吗,您可以阅读@Git URLs as Dependencies
package.json
// github url
git+ssh://git@github.com:example/example-repo.git#v1.0.0
// bitbucket url
git+ssh://git@bitbucket.org/example/example-repo.git#v1.0.0
我的建议是使用API创建一个单独的包来设置配置,在您这样的场景中,配置将是与数据库连接相关的内容。将其上传到私有Git repo,并在所有应用程序中使用私有git repo url。然后在应用程序初始化阶段配置包并使用其API。
现在,应用程序可以构建在任何可以访问私有repo并且可以重复使用代码的系统上。
您还可以将包放在公共回购上,以防您没有访问私有回购的权限,这仍然比发布NPM包以便在您的应用程序中共享它更好。
上一篇:Spark Have SQL返回空数据帧数据、Spark、Have、SQL
下一篇:被CLR存储过程preferred了在SQL 2005+ TSQL存储过程?存储过程、preferred、CLR、TSQL