1

这似乎是一个常见的问题,我想知道在服务器上创建 JavaScript 以稍后加载客户端时,常见的陷阱、最佳实践、最佳方法、安全问题等是什么。

FWIW,我在 Ruby 中执行此操作,并且我也在使用 JQuery。它基本上是一个表单生成器。这就是我正在做的事情:

我有一个管理表单生成器,它可以动态创建静态表单输入(例如选择、单选、复选框以及一些更复杂的输入)。我需要创建相应的 javascript 事件处理程序(使用 jquery)。我基本上有 html builder lambdas 和 event handler lambdas,它们映射到每个预定义的输入类型:即 select 有类似的东西,{'select'=>[select_builder_lamb, select_js_handler_lamb]}所以我可以查找 html 类型,然后生成所需的代码,允许管理员“根据自己的喜好”创建表单. 这很好用。

现在我必须弄清楚是否要序列化它,然后在请求注册页面时重新加载它,将 javascript 写入“不显眼”的文件,或者将原始 html 和 javascript 存储在数据库中等。生成没有问题本身 - 所以如果高级别是:1)制作 html 和 javascript 2)保留供以后使用 3)用于 http 请求 - 我的问题是步骤 2 和 3。

如果您有做这种事情的经验并且可以提供一些警告和智慧,将不胜感激!

4

1 回答 1

2

脑海中浮现的几件事:

代码分离

尽管 HTML 页面中嵌入的 JavaScript 很普遍,但许多人认为代码分离的做法很好。在这方面,我指的是把 JavaScript 放在一个单独的文件中。这是被称为Unobtrusive JavaScript的更广泛概念的一部分

作为 Web 开发人员,我们需要了解许多不同的技术,例如:

  • 服务器脚本(PHP、ASP、Ruby 等)
  • JavaScript(和框架)
  • XML
  • HTML
  • XSLT、XPATH
  • CSS
  • SQL

对包含所有这些的代码文件进行成像!会很混乱!

从服务器输出 JavaScript 会阻止将 JavaScript 分离到单独的文件中。如果我们将它们分开,那么我们的代码将变得更加模块化、可重用、可读和可测试,这使我...

单元测试

您可能没有亲自使用单元测试框架,但是 JavaScript 的模块化对于创建独立的可测试(和可重用可测试)模块至关重要。

在服务器上输出的脚本不是模块化的,但更重要的是不是静态的,因此很难适应任何单元测试框架。

标签汤

尽管可以对此进行编码,但客户端和服务器脚本的混合往往会产生标签汤,使其难以阅读和维护。

调试

我不确定您使用的是什么 IDE,但我的允许我逐步浏览我编写的 JavaScript。从服务器输出它意味着我不能这样做。

于 2009-09-11T06:05:35.687 回答