3

我的应用程序在加载时对客户端的 DOM 进行了大量重写。它遍历页面扫描特殊标记(想想 Markdown)或其他模式,用有时相当复杂的 DOM 结构(使用 DOM 调用,例如createElement)替换它们以设置文本样式,同时创建图表和图形。

我采用这种架构是为了避免任何构建或预处理步骤。它在桌面浏览器中运行良好,但在移动设备上明显慢(几秒钟,即使经过不懈的优化)。所以我想重新架构系统以预扫描页面并预构建 DOM。我在弄清楚如何做到这一点时有点精神障碍。显然,我不希望用其他服务器端语言重写所有 Javascript。另外,我想像现在一样保留在加载时进行构建的选项,基本的重写逻辑共享相同的代码。

最有可能的选择是将其构建为节点应用程序,尽管我是节点初学者。使用 jsdom 来解析输入和修改 DOM。或者,由于我是 XSLT 的粉丝,并且对 Saxon-CE 很感兴趣,即使这意味着重写所有内容,我也考虑在 XSLT 中实现扫描/重写逻辑,以便从节点调用(用于预构建案例——人们使用节点中的撒克逊人吗?)或浏览器(用于加载时构建案例)。

任何人都可以评论这种方法或抛出替代想法吗?

4

2 回答 2

3

不确定您正在处理大规模 DOM 重写的具体用例,也不确定您的吞吐量要求是什么。也就是说,node/jsdom 路由的另一种方法可能是运行一组无头 Webkit 浏览器,并在该实时渲染上下文中按原样运行您当前的 JavaScript。这将允许您将处理从那些 pokey 移动 CPU 转移到任意可扩展的云资源中(假设这对于您的项目/业务来说可能是负担得起的),并且完全不需要重写或调整您当前的工作代码。

于 2012-10-02T04:12:53.200 回答
0

听起来你想要 Node.js。如果您已经了解 JavaScript,那么学习它真的很容易。

我会推荐一个这样的教程:http ://www.nodebeginner.org/

这将花费您一个小时左右的时间,但在您与作者一起构建一个小而实用的应用程序时,会提供对 Node 的全面概述。

于 2012-10-02T03:16:46.157 回答