Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Three.js与MVC_Javascript_Design Patterns_Model View Controller_Architecture_Three.js - Fatal编程技术网

Javascript Three.js与MVC

Javascript Three.js与MVC,javascript,design-patterns,model-view-controller,architecture,three.js,Javascript,Design Patterns,Model View Controller,Architecture,Three.js,在three.js中,我创建了一个基本的“英雄创造”程序。类似于长老卷轴通过头部、身体等交换来创建完整的角色。我想让其他用户编辑同一个英雄,从而使它更具交互性。每个用户只需从服务器读取相同的JSON文件 为了更好地构造代码,我想使用MVC模式,但我对如何应用它感到困惑。 我想我所有的事件监听器都是一个控制器,但是视图是否就是我的three.js render(),模型是否就是底层的JSON?特别是将MVC应用到这个图形领域是我的大问题。如果这是一种非常糟糕的形式,您对另一种模式/结构方式有何建议

在three.js中,我创建了一个基本的“英雄创造”程序。类似于长老卷轴通过头部、身体等交换来创建完整的角色。我想让其他用户编辑同一个英雄,从而使它更具交互性。每个用户只需从服务器读取相同的JSON文件

为了更好地构造代码,我想使用MVC模式,但我对如何应用它感到困惑。
我想我所有的事件监听器都是一个控制器,但是视图是否就是我的three.js render(),模型是否就是底层的JSON?特别是将MVC应用到这个图形领域是我的大问题。如果这是一种非常糟糕的形式,您对另一种模式/结构方式有何建议

您可以使用MVC和桥接模式的组合

在这种组合中,您可以抽象视图,并使用桥接模式来允许以几种不同的格式创建视图


以下链接可能有助于你:

容易理解,你可以考虑:

var modelObject = {};
var viewObject = {};
var controllerObject = {};

modelObject.str = "Welcome";

viewObject.showStr = function(modelObject) {
    console.log(modelObject.str);
}

controllerObject.handler = function() {
    viewObject.showStr(modelObject);
}
您现在可以通过
handler
调用函数,而
onclick
或任何事件等

通常,模型是数据/数据源的抽象

视图层应:

  • 包含渲染逻辑
  • 处理用户输入并将其转发到控制器层(使用策略模式)
  • 保持三个.js对象与模型同步
控制器层应:

  • 处理用户输入并更新模型
模型是您的主要实体。它们不应该有任何与three.js相关的功能

我写了一篇博客文章,详细解释了如何将MVC和Three.js结合起来:


你可能会发现它很有用。

你找到适合你的东西了吗?不幸的是,没有。最后我只是将代码组织成模块。当我有空闲时间时,webgl mvc框架可能是一个有趣的项目:)