我对全局依赖的Bundle/Gem方法感到困惑.我认为全球依赖已成为过去.我向您介绍两种处理依赖关系的方法,NPM vs Bundle/Gem.
让我展示一下NPM的力量.假设您有一个具有以下文件夹结构的应用:
/app
/admin
package.json
/front-end
package.json
Run Code Online (Sandbox Code Playgroud)
您可以在我的应用程序中看到我有两个其他迷你应用程序.每个都有自己的package.json
.
说两者都有q
要求,但版本不同.npm install
在这两个文件夹中运行将为node_modules
每个迷你应用程序安装适当的版本.一切都很好地隔离,并且运作良好.
捆绑方式略有不同.您Gemfile
用来指定依赖项.运行后bundle install
,宝石将被放入系统范围的位置.这意味着,如果我的应用程序需要在其迷你应用程序中使用不同版本的gem,那么它将无法工作.
解决对我来说没有意义的事情:
我知道有一个bundle install --deployment
,但它仅用于生产中的部署.我的代码应该如何在开发中工作?
此外,我知道您可以选择在代码中要求特定版本的gem,但这样可以方便地Gemfile
使用特定版本.因为你已经拥有,所以在生产环境中也没有任何意义bundle install
--deployment
.
我百分百肯定我在这里遗漏了一些非常微不足道的东西.请指出我正确的方向.
我发现很难决定某些东西应该是域名还是应用程序的一部分.
通过这个答案阅读有助于很多概念,如授权,但我仍然发现自己正在努力与其他事情.
为了说明我的困惑,请考虑发表评论的案例.以下是在发布评论之前需要执行的操作.我在括号中指出我认为这个功能应该去哪里.
我无法确定检查垃圾评论是否是域关注或应用程序,同样适用于限制.从我的观点来看,这些问题对我来说都很重要,必须存在.但同样适用于授权,我们知道它不应该在域中.
如果我在域服务和应用程序服务之间拆分这些问题,那么我觉得我的域名没有完全执行,实际上依赖于应用程序进行事先检查.在这种情况下,重点是什么,为什么我不应该在应用程序中全部完成以减少混淆?
我目前的设置是这样的:
Controller ->
App.CommentingService.Comment() ->
Domain.CommentingService.Comment()
如果有人可以通过所有必需的步骤来创建注释并将其分配到正确的层,从而给出一些推理,那将会很有帮助.
假设我的书籍集中有以下数据:
[
{
name: "Animal Farm",
readers: [
{
name: "Johny"
},
{
name: "Lisa"
}
],
likes: [
{
name: "Johny"
}
]
},
{
name: "1984",
readers: [
{
name: "Fred"
},
{
name: "Johny"
},
{
name: "Johny",
type: "bot"
}
],
likes: [
{
name: "Fred"
}
]
}
]
Run Code Online (Sandbox Code Playgroud)
如何检索所有与"Johny"匹配的读者和喜欢,最终结果如下:
[
{
name: "Animal Farm",
readers: [
{
name: "Johny"
}
],
likes: [
{
name: "Johny"
}
]
},
{
name: "1984",
readers: [ …
Run Code Online (Sandbox Code Playgroud) 假设您正在为论坛建模,并且您正在尽力使用DDD和CQRS(只是单独的阅读模型部分).你有:
Category {
int id;
string name;
}
Post {
int id;
int categoryId;
string content;
}
Run Code Online (Sandbox Code Playgroud)
每次创建新帖子时PostCreated
都会引发域事件.
现在,我们的观点想要预测每个类别的帖子数量.我的域名不关心计数.我想我有两个选择:
PostCreated
在读取模型侧监听,并使用类似的方法递增计数CategoryQueryHandler.incrimentCount(categoryId)
.PostCreated
在域边监听并使用类似的东西增加计数CategoryRepo.incrimentCount(categoryId)
.同样的问题适用于所有其他计数,例如用户的帖子数量,帖子中的评论数量等.如果我不在除了我的观点之外的任何地方使用这些计数,我应该让我的查询处理程序负责持久化吗?
最后,如果我的某个域服务想要计算类别中的帖子数量,我是否必须将count属性实现到类别域模型上,或者该服务只需使用读取模型查询来获取该计数或者存储库查询如CategoryRepo.getPostCount(categoryId)
.
如何使用摊牌来进行 GitHub 风格的换行处理?
我尝试过一个扩展,它可以执行以下操作:
return text.replace(/[ ]*\n/g, "<br />\n")
Run Code Online (Sandbox Code Playgroud)
它在某些情况下有效,但会破坏列表等。
cqrs ×2
bundle ×1
domain-model ×1
gem ×1
markdown ×1
mongodb ×1
npm ×1
preg-match ×1
regex ×1
repository ×1
rubygems ×1
showdown ×1