我最近使用React-Redux-Express-Mongoose堆栈构建了一些isomporphic/univeral项目.
在我的猫鼬模型中包含了很多业务逻辑.作为一个非常基本的例子(借口我的ES6):
import mongoose, {Schema} from 'mongoose';
const UserSchema = new Schema({
name: String,
password: String,
role: String
});
UserSchema.methods.canDoSomeBusinessLogic = function(){
return this.name === 'Jeff';
};
UserSchema.methods.isAdmin = function(){
return this.role === 'admin';
};
Run Code Online (Sandbox Code Playgroud)
这在服务器上都很棒,但是当这些模型在浏览器中作为普通JSON对象进行水合时,我必须在一些React组件或Redux reducer中重新实现相同的业务逻辑,这对我来说感觉不是很干净.我想知道如何最好地解决这个问题.
阅读Mongoose,浏览器支持似乎有限,主要用于文档验证.我想我的主要选择是:
将所有业务逻辑移动到一些"普通"JS类中,并在整个地方实例化这些逻辑.例如:
# JS Class definition - classes/user.js
export default class User {
constructor(data = {}){
Object.assign(this,data);
}
canDoSomeBusinessLogic(){
return this.name === 'Jeff';
};
isAdmin(){
return this.role === 'admin';
}
}
# Server - api/controllers/user.js
import UserClass from
User.findById(1,function(err,user){
let user = new …Run Code Online (Sandbox Code Playgroud)我正在和自己讨论如何思考和使用Docker容器.
从文献和示例看来,容器应该真正提供服务或堆栈的一部分.例如,容器可能运行MySQL,Apache或redis等等.我能理解为什么这很干净,而且很有意义.
在我们的场景中,我们希望在同一台服务器上托管多个完全独立的Web应用程序(电子商务商店,wordpress站点,静态网站,node.js应用程序),我们希望使用Docker.因此,对于我来说,每个容器完全是自容器更有意义,整个堆栈本身就是例如我的每个可能运行的wordpress容器中的每一个都有自己的LAMP安装.
将one-container-one-service模型应用于此场景似乎非常复杂 - 每个应用程序都依赖于系统中的其他容器,而这些容器又将依赖于其他容器.如果您需要特定服务的多个版本,该怎么办?
虽然这似乎是要走的路,但它似乎也可能非常低效?我不是LXCs如何工作的专家,但即使一切都集装箱化,真的有所有的Apache2工人和mysqlds系统上运行,与所有的相关的开销 - 在那里将是性能问题?
有人有想法吗?