Model View ViewModel / Knockout 解决什么问题? [关闭]

2023-12-02

我在阅读某人的代码时遇到了 Knockout 和 MVVM。我对这两个主题都做了一些阅读,但我仍然对它们真正解决的问题感到困惑,很可能是因为我还没有构建足够大的应用程序来解决这个框架/架构解决的问题。

我花了一些时间来理解这个示例代码——http://knockoutjs.com/img/homepage-example.png——来自淘汰赛主页。我希望有人可以向我解释,如果不使用 Knockout,相同的代码会是什么样子,以及这会如何出现问题。

(SO可能不是解决这个问题的正确平台,所以请告诉我是否有其他更合适的交易所)。

Thanks!


从 10,000 英尺起

Knockout 提供了数据之间的双向绑定view用 HTML 编写,以及相应的属性和函数视图模型用 JavaScript 编写。

假设您有一个名为的 HTML 视图联系人.html和一个名为的 JavaScript 视图模型联系人.js。这两个人在一起将构成一个module,而淘汰赛将是将它们粘合在一起的粘合剂。

MVVM 代表模型视图视图模型。我在上面谈到了后两个。这model只是您世界中某个特定角落的 JavaScript 表示,例如,在本例中,Contact.

因此,将上述内容结合起来,我们可能会(就目录结构而言):

  • 模型\contact.js
  • 视图\contact.html
  • viewmodels\contact.js

您可以在视图模型中实例化模型,然后使用 Knockout 将视图绑定到视图模型。

MVVM 只是提供了一种分离关注点和最大化重用的好方法。作为重用的示例,您可以根据上下文将联系人视图绑定到许多不同的联系人视图模型。上下文可以是客户端设备的大小、用户的授权配置文件、应用程序的“社区”与“高级”版本等等。

通过改进来修改 MVVM 的任何组件都可以相对隔离地完成,而不会对整个应用程序产生不利影响。因此分离关注点的价值。

那有意义吗?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Model View ViewModel / Knockout 解决什么问题? [关闭] 的相关文章

随机推荐

  • 如何在 R 中将数组转换为 data.table 并返回?

    这是最直接的方法吗将数组转换为 data table require data table require ggplot2 this returns a data table with both array s dimensions and
  • iPhone 用户联系信息

    如果您查看 设置 邮件 联系人 日历 下 有一个用于指定您的个人信息的设置 我的信息 设置 它基本上可以让您从联系人列表中选择一个条目作为您的个人资料 有谁知道如何以编程方式访问这些信息 不 遗憾的是 您无法直接访问 我的信息 联系信息 您
  • 撤消 git 命令 - git checkout --

    有没有办法撤消以下 git 命令 git checkout 我试图删除添加到存储库目录但未暂存或提交的文件 该命令似乎没有这样做 而是更改了其他一些文件 Update 未跟踪的归档文件和未暂存的文件之间存在差异 在这种情况下 我想找到一种方
  • Heroku 语言区域设置不起作用

    我在 heroku 上的语言区域设置似乎不起作用 On my local mashine 1 maj Heroku 01 May 00 00 My view Locale en hello Hello world views paginat
  • 使用 PDFBox 将 UTF-8 编码字符串写入 PDF [重复]

    这个问题在这里已经有答案了 我在使用 PDFBox 将 unicode 字符写入 PDF 时遇到问题 下面是一些生成垃圾字符而不是输出 的示例代码 我可以添加什么来获得对 UTF 8 字符串的支持 PDDocument document n
  • 当产品价格为零时隐藏“添加到购物车”按钮

    我有一个基于活动的 WordPress 网站 我在该网站上使用 WooCommerce 出售门票 有没有办法隐藏零成本产品的 添加到购物车 按钮 Thanks 您在主题中编写此代码function php function remove a
  • 您可以在 makefile 中执行 $(wildcard %/**/*.c) 吗?

    作为后续这个问题 还有一个情况我在几个小时的修修补补中还没有弄清楚 这是 makefile 当前的样子 output shell find lib type f name build js or name build css myth no
  • Bare-Except 不受欢迎的任何原因

    在某种程度上 我想知道为什么在 Python 中使用裸异常会如此令人不悦 如果我有一个完整的程序正在运行并且我做了类似的事情 我就会明白 import sys from application import program try prog
  • 如何在 CSS3 中为元素设置摆动动画?

    自从我看到国库网站还有树上摆动的标志效果 我一直在尝试重现 box width 50px height 50px background blue box shadow 0 0 5px blue margin 100px float left
  • 无法在 AVAudioplayer 中实施前向操作

    我正在使用 AVAudioplayer 播放一些音频文件 我有一些控件 例如前进和后退 倒带工作正常 但前进则不然 void rewind AVAudioPlayer player rewTimer userInfo player curr
  • 使用 python sdk 在 azure 中的 Linux 虚拟机中运行命令

    我发现azure python sdk提供了以下在linux虚拟机中运行命令的方法 from azure mgmt compute import compute management client from azure common cre
  • Android:使用默认音乐播放器播放歌曲文件

    有没有办法使用默认媒体播放器播放媒体 我可以使用以下代码来做到这一点 Intent intent new Intent Intent ACTION VIEW MimeTypeMap mime MimeTypeMap getSingleton
  • char 和 unsigned char 有什么区别?

    已编辑将 C C 更改为 C 请帮我找到一个明确的澄清char and unsigned char特别是当我们在嵌入式设备和普通PC之间传输数据时 缓冲区和普通PC之间的区别 unsigned char和朴素的char 您问的是两种不同的语
  • linux下Java RandomAccessFile.java无法正常工作

    我试图在java中实现简单的tail f linux命令 这是我的代码 try position within the file File file new File home curuk monitored log txt RandomA
  • 如何使用 django-simple-history 存储 ManyToManyField 的历史记录。

    如何使用 django simple history 存储 ManyToManyField 的历史记录 我使用带有属性 m2m filds 的 HistoricalRecords 但它抛出错误 意外的关键字参数 m2m fields 我是
  • 增强 ggvis 轴

    我正在寻找增强图表的最佳方法 library dplyr library ggvis df lt data frame Year c 1954 2013 Count rep as integer c 1 3 4 2 15 df gt ggv
  • 使用 AppleScript 将 .rtf 文本复制到电子邮件正文中

    我有一个 AppleScript 应用程序 它可以创建一封电子邮件 在 Mail app 中 其中包含我通过对话框选择的选项中的附件 文本模板存储在 rtf格式 以便非程序员可以根据自己的意愿更改文本模板 我可以从以下地址创建电子邮件 tx
  • C++ 中并行向量的 find_first

    我有一个相当大的向量 一些向量成员并行地匹配某个条件 我想找到与条件匹配的第一个元素 我的问题与这个问题非常相似 tbb 并行查找第一个元素 但我没有tbb 检查条件非常繁琐 所以我无法依次对所有条件进行检查 这就是为什么我想并行运行它 我
  • php - 如何合并每个数组具有不同元素数的二维数组

    我有 2 组二维数组 我想合并成 1 个二维数组 但每个数组中的元素数量不相同 并且前 2 个元素相同 我不想重复它 这是它 第一个二维数组 Array 0 gt Array 0 gt 25 2 2013 1 gt 8 45 a m 2 g
  • Model View ViewModel / Knockout 解决什么问题? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我在阅读某人的代码时遇到了 Knockout 和 MVVM 我对这两个主题都做了一些阅读 但我仍然对它们真正解决的问题感到困惑 很可能是因为我还没有构建足够大的应用程序来解决这个