Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.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 淘汰JS-MVVM模式,我的ui逻辑去哪里了?_Javascript_Mvvm_Knockout.js - Fatal编程技术网

Javascript 淘汰JS-MVVM模式,我的ui逻辑去哪里了?

Javascript 淘汰JS-MVVM模式,我的ui逻辑去哪里了?,javascript,mvvm,knockout.js,Javascript,Mvvm,Knockout.js,这听起来像个愚蠢的问题,但我想我还是会发布 我正在用javascript和html制作一个简单的web应用程序,并决定将JS作为管理UI的主要框架。然而,我有点困惑如何继续 我的第一个页面是一个非常简单的登录页面,它只有一个用户名和密码框,当我想使用UI时,问题就来了。例如,在ui框中添加水印,或者在侦听自定义事件时添加逻辑,我可以将其作为内嵌javascript编写,但我无法真正对其中任何一个进行单元测试 最初我计划使用MVC样式的模式,这样我就可以用模拟视图对控制器进行单元测试,并将任何ui

这听起来像个愚蠢的问题,但我想我还是会发布

我正在用javascript和html制作一个简单的web应用程序,并决定将JS作为管理UI的主要框架。然而,我有点困惑如何继续

我的第一个页面是一个非常简单的登录页面,它只有一个用户名和密码框,当我想使用UI时,问题就来了。例如,在ui框中添加水印,或者在侦听自定义事件时添加逻辑,我可以将其作为内嵌javascript编写,但我无法真正对其中任何一个进行单元测试

最初我计划使用MVC样式的模式,这样我就可以用模拟视图对控制器进行单元测试,并将任何ui逻辑放在其中


那么,有没有一种可以接受的方法可以做到这一点,而不必像页面逻辑那样将其全部放在页面逻辑中?

有两种方法可以使用。有一种方法可以对基于JavaScript的UI逻辑进行单元测试。您提到的另一种方法是使用控制器将逻辑和JavaScript作为“纯”视图模型来包含。我个人认为这两种方法都是可行的。您只想确保基于JavaScript的视图模型不会与视图过于亲密。:)

mvvm的工作方式是视图应该是该视图模型的可视化表示,因此将您的逻辑放在其中。如果您设计正确,使您的功能包含在单独的类中,那么您可以很容易地模拟它们。如果您习惯于MVC,那么只需将viewmodel视为您的控制器即可

不过,我可以看到您的问题的走向,因为对于复杂视图,您可能会在ViewModel类中发生很多事情,但是如果您坚持简单的oo和封装原则,您不会犯太大的错误


总之,把它放在视图模型的逻辑中。

我现在正在使用JsTestDriver来测试我的东西,但是它需要封装在类中,以使测试有价值,从最初看其他人是如何做这类事情的,它只是散布在整个模型中的随机代码。。。我更喜欢你提到的后一种方法,但我希望更多的人在制作他们的网站时会遇到这些问题,在互联网上找不到太多关于它的信息。。。