如何使用JavaScript MVVM/MVC预加载数据
model view controller - How to use JavaScript MVVM/MVC with pre-loaded data
我想加载一个带有现有数据的HTML页面(评论列表或小部件或其他),然后使用Javascript以与页面交互的用户输入的相同格式呈现其他数据。
- 我想使用一个存储在JavaScript对象中的模型,该对象表示页面上的现有数据以及来自用户输入的新数据,然后观察模型以在DOM更改时更新。
- 我想渲染JS模板来快速显示用户输入的数据,而不需要再次访问服务器。
我希望避免编写呈现相同数据的服务器端和JavaScript模板。
要解决构建初始模型的第一个问题,似乎有以下选项,按照偏好顺序:
- 使用JavaScript提取HTML中呈现的数据来构建初始模型,或者
- 直接将JSON渲染到DOM并从中构建JS对象,或者
- 在页面作为ajax调用加载后再次访问服务器以获取JSON格式的数据
避免服务器端和客户端模板显示相同的内容:
- 使用Pure之类的东西从DOM构建模板,或者
- 只使用JS模板,并使用上面的第二个选项之一来初始渲染页面(从渲染到DOM的JSON填充它们或通过ajax调用获得JSON来填充它们)。
- 使用一个在服务器和客户端都工作的模板系统。
我觉得这些解决方案都不是特别优雅,我很好奇我可能没有想到的其他模式,或者是否有一个通用的解决方案。
我的环境是Rails 3,但问题适用于任何server -> HTML/JS设置。我可以看到,使用Node.js这样的东西可能会更容易一些,但我主要感兴趣的是适用于Rails的解决方案。
有很多方法可以做到这一点。我也一直在为同样的问题而挣扎。我认为,一旦你的web应用的复杂性达到一定的阈值,你必须求助于javascript来保持状态正确。Jquery(以及其他dom操作框架)确实很有帮助,但在某种程度上,它可能会变成意大利面条代码。
我刚刚接触了这个名为Knockout的绑定javascript库。它使用起来非常优雅和简单,它尝试遵循MVVM模式,允许您创建一个带有可观察对象的ViewModel,您可以绑定html元素,以便它们的值和属性根据您的ViewModel值更改。
如果你正在创建动态html,你可以总是嵌入javascript ViewModel的初始值与页面的html,这样你就可以避免初始ajax调用。
开箱即用,它与jquery模板兼容,这使得dom操作变得轻而易举。我刚刚开始使用它,到目前为止我很喜欢它。
希望对你有帮助。
相关文章:
- 正在等待呈现图表,直到加载数据为止
- ng绑定和ng href问题.ng href未从控制器加载数据
- 单击按钮时加载数据
- 在reactjs组件中预加载数据
- Highcharts可以从服务器加载数据,但不能更新
- AngularJS promise在加载数据之前得到解决
- 在Knockout JS中搜索从DB加载数据的项目
- 如何在angular js中使用$emit后重新加载数据
- 构建多个图表时,HighCharts加载数据的速度较慢
- 加载初始网站后在后台加载数据
- ExtJS网格未从Ext.data.XmlStore加载数据
- 数据表 AJAX 筛选器重新加载数据
- select2 使用 AJAX 加载数据不能选择任何选项
- 在 Metro 风格应用中启动时加载数据
- 需要帮助使用 AJAX 和其他一些东西加载数据
- Vue 不加载数据
- 向右滚动加载数据
- 为SEO的数据绑定JS预加载数据
- mysql循环-预加载数据
- 无法使用JSON加载数据表