Jon*_*ess 16 javascript dependency-injection passive-view
我目前面临一个难题:将两个javascript对象连接在一起的正确方法是什么?
想象一下像文本编辑器这样的应用程序,它有几个不同的文件.我有一些HTML页面代表笔记本的视图.我有一个文件notebook.js,其中包含NotebookController和Notebook View的类定义.
NotebookControler对象负责在笔记本上执行业务逻辑,如"保存笔记本","加载笔记本","新笔记本".NotebookView负责管理用于演示的HTML.它做低级别的东西,如"获取/设置笔记本电脑主体""获取/设置笔记本名称".它还侦听DOM事件(onClick)并触发业务事件(saveNotebook).这是我对被动视图模式的尝试.
我希望我的javascript客户端代码是面向对象的,分离的关注点和单元可测试的.我想用模拟NotebookView测试NotebookController,反之亦然.这意味着我不能只在NotebookController中实例化NotebookView.我也是
在Java中,选择是自然的:使用Spring.但这似乎不是JavaScript-y.什么是正确的做法?
我会尝试尝试一下,但是在没有看到任何实际代码的情况下会有点困难。就我个人而言,我从未见过有人用 JavaScript 或 IoC 对 (M)VC 进行过如此具体的尝试。
首先,你要测试什么?如果您还没有看过,请观看YUI 测试视频,其中包含有关使用 javascript 进行单元测试的一些有用信息。
其次,当你说“连接该聚合的最佳方法”时,我可能只是将其作为带有控制器的设置器来执行
// Production
var cont = new NotebookController();
cont.setView( new NotebookView() );
// Testing the View
var cont = new NotebookController();
cont.setView( new MockNotebookView() );
// Testing the Controller
var cont = new MockNotebookController();
cont.setView( new NotebookView() );
// Testing both
var cont = new MockNotebookController();
cont.setView( new MockNotebookView() );
Run Code Online (Sandbox Code Playgroud)
但这对您如何设计控制器和视图对象做出了一些重大假设。
| 归档时间: |
|
| 查看次数: |
4121 次 |
| 最近记录: |