我想为我的web应用程序使用内容网站保护。如果您还没有听说过它,简而言之:它将允许我禁用任何嵌入式JavaScript到我的Web应用程序中,从而帮助阻止XSS。Javascript和CSP - 最佳实践
结果是,我所有的javascript代码都必须在外部文件中。
大多数JavaScript'库/框架'代码已经存在,但通常我的页面至少包含几行JS代码,实例化与特定页面相关的组件。
例如,我有一个假设的注册页面。在注册页面的底部,我有以下代码:
var registrationForm = new MyApp.registrationValidator($('.regform'));
registrationForm.init();
这个假设代码获取登记表格的引用,可以注册所有的验证代码。
现在我必须将此代码移动到外部文件。我可以:
选项A:为每个页面创建一个小的.js文件,该文件只执行该页面特定的代码。
- 优点 - 简单较快
- 缺点 - 每一页这一个额外的js文件,我更喜欢能够为我所有的JavaScript减少到一个单一的文件,以减少请求。
选项B:在JavaScript文件中执行我所有的'实例化代码'。我只会检测页面上是否有'.regForm'css类,并且只有在页面上出现对象时才会实例化对象。
- 优点 - 用于实例化的单个位置。如果页面上的组件具有正确的css类,它将奇迹般地开始工作。
- 缺点 - 如果我的应用程序增长很多,将会有很多初始化代码可能不需要用于特定页面。
选项C:给我<body>
标签的ID或类,并执行基于一个大的交换机上的正确的代码。
- 优点:仍然可以压缩为一个.js文件,而且我不需要每页.js文件。
- 缺点:我想我觉得这有点难看。
总之,选项B是最好的,如果它不是因为我觉得有一大堆初始化代码是个坏主意。
我主要想知道的是,你有这种情况的经历,你是如何解决它的?
谢谢!这是一个很好的建议,也是一个很好的解决问题的项目。尽管我觉得我最终能够给用户一个大的js包,而不是为大多数页面提供新的下载。 – Evert 2012-02-07 11:04:21