3

我有一个完全开发的 jquery 组件,比如jquery full calendar

我的组件似乎在浏览器中运行缓慢(不是那个日历)。所以我想到了使用nodeJs在服务器中运行它。

我想在服务器中进行所有 dom 操作,只需将 html 页面发送到浏览器。如果我从头开始,似乎一切皆有可能,但我不想这样做。这是我打算做的

  • 如果用户输入 url,那么它必须访问服务器。
  • 然后在服务器中所有的 Js 和 css 都必须被编译
  • 然后它必须将 html 文件返回给浏览器
  • 当用户再次执行某些操作时,它必须访问服务器并进行所有更改,然后它必须发送到服务器

谁能告诉我如何做到这一点或任何其他最佳替代方式来实现我想要的?一个简单的演示应用程序会更好。提前致谢。

4

2 回答 2

1

我认为您关于 DOM 工作方式的问题可能有些混淆。

虽然可以使用jsDom 之类的库在 node.js 服务器上呈现具有 DOM 的应用程序,但当将相同的页面提供给客户端时,它具有完全不同的 DOM 实例,并且没有任何方法可以两人之间的交流。因此,您的应用程序对服务器上的 DOM 所做的任何更改都不能轻易地传播到客户端上的 DOM。

如果您的组件似乎在浏览器中运行缓慢,那么与尝试将 DOM 操作卸载到服务器相比,您更有可能通过处理组件以使其更有效率获得良好的结果。

如果您查看这两种不同的场景并将它们分解为浏览器实际执行的操作,您就会明白为什么这是一个坏主意。

场景(一)——在服务端渲染 Dom 变化

  1. 第 1 步 - 客户端从服务器加载初始 html 页面(慢)
  2. 第 2 步 - 用户与客户端页面交互(快速)
  3. 第 3 步 - 客户端将用户交互发送回服务器(vslow)
  4. 第 4 步 - 服务器加载一个 Dom(慢)
  5. 第 5 步 - 服务器运行 Dom 更改(快速)
  6. 第 6 步 - 服务器将重新渲染的 HTML 发送回客户端(慢)
  7. 第 7 步 - 客户端从服务器呈现新的 HTML(慢)

场景(2)——在客户端渲染 Dom 变化

  1. 第 1 步 - 客户端从服务器加载初始 html 页面(慢)
  2. 第 2 步 - 用户与客户端页面交互(快速)
  3. 第 3 步 - 客户端运行 Dom 更改(快速)
  4. 第 4 步 - 客户端呈现更改的 DOM(慢)

与尝试将 DOM 渲染卸载到服务器相比,仅在组件上工作以使其更快会好得多。这是一篇关于如何加速 jquery 代码的好博文

如果您真的想继续您在问题中建议的工作流程,我建议您查看jsDom库,但我真的不推荐它。

于 2013-03-04T17:03:34.883 回答
1

有一个 jquery 节点包。因此,您可以安装该软件包并使用 jquery,否则您会这样做

为 node.js 安装 jquery

npm install jquery

然后将此行添加到您的脚本中

var $ = require('jquery');

如果您在 Windows 上,则在安装 jquery 时可能会遇到 contextify 问题。如果您确实搜索错误消息(本质上您需要为您的环境设置 make)

于 2013-02-25T12:27:47.433 回答