如何使用 javascript 和模板构建 DOM?

2024-01-03

我正在构建一个应用程序,其中大部分 HTML 都是使用 javascript 构建的。 DOM 结构是使用从服务器发送的一些 JSON 数据结构构建的,然后客户端代码为该数据构建 UI。

我当前的方法是遍历 JSON 数据结构,并调用 script.aculo.us 的 Builder.node 方法来构建 DOM 结构,然后将其附加到服务器发送的 HTML 中实际存在的某个元素。在此过程中,我将事件侦听器注册到需要它们的各种元素。这提供了很大的灵活性,并且允许非常动态的界面。

然而,我觉得它不太可持续,因为视图逻辑(即 DOM 结构)与遍历数据的代码、事件处理程序以及保存在内存中以维护状态,并且能够将这些更改传回服务器。

是否有任何类似模板的解决方案可以让我将 DOM 结构与驱动应用程序的代码分开?目前,我唯一的库依赖项是prototype.js和script.aculo.us,所以我想避免引入任何大型库,但欢迎任何建议。

Thanks!

编辑:由于某种原因,Javascript支持什么好的模板语言? https://stackoverflow.com/questions/128949/what-good-template-language-is-supported-in-javascript当我输入这个问题时,没有出现在小搜索结果中。但是,它确实显示在此处的“相关”侧栏中。

我将阅读那里的一些建议,如果找到解决方案,我将关闭这个问题。否则,我将澄清这个问题,并说明为什么这些解决方案对我不起作用。


有一些模板解决方案,但它们并没有比您已经做的多多少。 jQuery 已经做了一些沿着这些思路工作 http://ejohn.org/blog/javascript-micro-templating/,和一些 jQueryplugins http://plugins.jquery.com/project/jTemplates已作为解决方案出现。 Prototype.js 和其他人也有解决方案。

一些选项包括:

  • 原型模板 http://www.prototypejs.org/api/template
  • Ajax 页面 http://ajax-pages.sourceforge.net/

一般来说,Ext js http://extjs.com/有一些漂亮的狂野和欺骗东西,包括一些模板 http://extjs.com/deploy/dev/examples/core/templates.html,但你会添加另一个图书馆。现在有很多库被扔来扔去,而且实现一个库通常要简单得多轻巧简单定制解决方案。尝试自己创建一些 DOM 对象。如果您有 JSON 数据,请将其解析到内存中并通过函数运行它。这实际上是一件很轰动的事,很多人都在这样做。

边注:你正在做的事情可能相当可持续的 and 可维护的。请记住,当您发送 HTML 页面时,浏览器会放置一个DOM 结构存入内存与你的 javascript 的方式大致相同。我并不特别推荐这些解决方案。听起来你已经为你的特定需求制作了一个不错的小系统,我通常会说完善您的设计至少与转向其他人的模式一样有价值,而且还有一个额外的好处:创建一些你自己的依赖项.

边注: It's 一般来说不建议生成整个 DOM在客户端,至少对于许多市场来说不是。有时这是一个不错的解决方案,就像您的情况一样,但值得广大观众注意的是,这种开发方式并不总是最好的选择。

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

如何使用 javascript 和模板构建 DOM? 的相关文章

随机推荐

  • zsh compinit:安装 Homebrew 后,Mac 上出现不安全目录错误消息

    在我的 Mac 上安装 Homebrew 和 Homebrew Cask 后 以管理员身份 用户 ID 为 admin 运行 MacOS 10 12 6 我收到错误消息 zsh compinit insecure directories r
  • 发生整数溢出时无符号和有符号整数的行为差异[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 从 iOS 7.1 到 iOS 8 发送数据时 BLE 花费太多时间

    我有一个奇怪的问题 我正在开发一个应用程序 我在其中发送20 20 字节的块 一切正常 当我发送字节数据时从 iOS 8 到 iOS 8设备从一个设备传输到另一个设备大约需要 4 5 秒 但我的问题是当我从iOS 7 1 至 iOS 8或者
  • 状态机;为什么只有最后一个状态有效?

    我有一个有 6 个状态 3 个主要状态 的状态机 只有最后一个状态有效 但前 2 个状态无效 共 3 个 只有最后一个状态有效 我发现了问题 当我移除去抖电路时它可以工作 但我需要去抖电路 我从网上得到了去抖电路 如果有人可以提供帮助 我会
  • 使用 RestSharp 将 JSON 数组反序列化为 C# 结构

    我使用 RestSharp 和动态地将不同的 JSON 结构转换为各种 C 结构IRestResponse
  • 使用 IMultiValueConverter 将多个命令参数传递给 viewModel

    我有以下代码
  • Haskell 列表中的连续数字

    我是 haskell 的新手 我正在尝试一些我之前为 java 完成的编码问题 但是下面的问题让我难住了 基本上 这个想法是编写一个接受整数列表 Int 的函数 确定整数列表中是否包含连续的 1 例如 以下内容的输出将是 输入 func 0
  • Xamarin.forms android权限提示不显示

    我正在使用权限插件 https github com jamesmontemagno PermissionsPlugin作者 詹姆斯 蒙特马尼奥 我基本上复制了该示例 但是在请求它的行之后权限未知 甚至没有对话框显示 var status
  • 通过 javascript 访问车把变量

    我正在为 Express js 框架生成一个把手视图 并且需要从单独的 JavaScript 文件内部访问传递给视图的变量 例如 var foo user name 有人有主意吗 帮手 的价值user name如果您想将其包含在 a 中 则
  • Haskell 你好世界,Eclipse IDE

    我在 eclipseFP 和 Haskell 中使用 hello world 时遇到问题 我有以下代码 module Main where main putStr Hello world 当我用它编译时 ghc exe H1 hs o hw
  • 在非时钟信号上使用上升沿是不好的做法吗?还有其他选择吗?

    我正在研究 VHDL 设计并且它可以工作 但是代码非常丑陋 而且我似乎正在尝试围绕语言的设计来实现我的目标 这一事实让我觉得有些事情是错误的 我对 VHDL 还很陌生 但我已经研究该项目的较小部分近一个月了 所以我有了总体想法 然而 这部分
  • 在 Python 中合并具有不同列的 CSV

    我有数百个大型 CSV 文件 我想将它们合并为一个 但是 并非所有 CSV 文件都包含所有列 因此 我需要根据列名称而不是列位置来合并文件 需要明确的是 在合并的 CSV 中 对于来自不包含该单元格列的行的单元格 值应该为空 我无法使用 p
  • DRF 3 - 使用表创建多对多更新/创建序列化器

    我正在尝试在 DRF 3 中创建一个参考应用程序来演示可以创建 更新模型的嵌套序列化器 当尝试创建嵌套模型时 下面的示例代码会带有 之后的 create 参数必须是映射 而不是列表 的炸弹 我也不清楚如何处理 update 因为在某些情况下
  • 如何使用导航组件管理权限请求代码?

    如何使用导航组件管理权限请求代码 I referred too many website stack links none of it worked still showing deprecated Waring 谷歌参考链接 https
  • 使用 google 字体并仅包含 [A-Z] 和 '&'

    有没有办法使用谷歌字体并只加载它 A Z 和 字符 我想这样做是为了减小大小并缩短加载时间 因为我只会使用基本的拉丁数字和字母 如果必须的话 我可以自己托管字体 并且操作字体包是合法的 但不确定是否需要自托管以及如何操作谷歌的字体包 我已指
  • Maven 中的 Scalatest:JUnit 结果

    我在 Microsoft Visual Studio Team Services 中设置了持续集成服务器 我能够构建我的代码并运行我的测试分级测试 但是 我不知道如何以 JUnit 格式输出结果 我见过很多使用 SBT 的人的结果 但没有人
  • 如何为 Twitter 文章聚合器设计 MongoDB 架构

    我是 MongoDB 的新手 作为练习 我正在构建一个从推文中提取链接的应用程序 这个想法是获取某个主题的推文最多的文章 我很难为这个应用程序设计架构 该应用程序收集推文并保存它们 解析推文中的链接 链接与附加信息 标题 摘录等 一起保存
  • 嵌套命名空间和不明确的符号

    我有一个涉及嵌套命名空间和模板化类的问题 我还能够创建测试用例 它产生与实际代码相同的错误 但更具可读性 使用 VS2012 和 2010 平台工具集编译以下代码会导致错误 namespace A namespace B namespace
  • Ant:重命名文件以包含其 MD5

    对于熟悉 ant 的人来说 这个问题可能非常微不足道 到目前为止我只使用了 ant 的基础知识 我知道如何重命名文件 例如我已经使用
  • 如何使用 javascript 和模板构建 DOM?

    我正在构建一个应用程序 其中大部分 HTML 都是使用 javascript 构建的 DOM 结构是使用从服务器发送的一些 JSON 数据结构构建的 然后客户端代码为该数据构建 UI 我当前的方法是遍历 JSON 数据结构 并调用 scri