2017-01-17 44 views
0

我正在为节点创建一个小型JavaScript库来管理基本Web认证工作流程。当用户配置Express中间件时,他可以用他的首选配置提供或不提供json对象,例如,允许用户通过json对象配置设置

web: { 
login: { 
    enabled: true, 
    customView: myDir/myCustomLogin.html 
}, 
logout: { 
    enabled: true 
}, 
forgotPassword: { 
    enabled: false 
}, 
...someOtherProperties 

如果他没有提供它,库应该使用fallback config json。但是,如果他提供了它,图书馆应该使用后备加上他所覆盖的属性。将用户的配置与应用程序的配置文件合并的最佳方式是什么?我想我可以遍历每个属性,并检查哪些是用户想要覆盖的。有没有更好的方法来做到这一点?也许是一个处理这些用例的库?生产库如何处理这些场景?

编辑: 我解决方案是基于下面的答案,这个有用的博客文章:

https://blog.mariusschulz.com/2015/03/30/combining-settings-objects-with-lodash-assign-or-merge

如果您想了解更多关于lodash提供克隆对象的不同方法检查这个问题:

Lodash - difference between .extend()/.assign() and .merge()

回答

1

您可以使用_.defaultsDeep_.defaultshttps://lodash.com取决于你的需要。 另请注意,这些方法会改变对象。

+0

你绝对指出我在正确的方向我最终使用_.merge – Bartzilla

相关问题