我想为我的web应用程序使用内容站点保护。如果你还没有听说过它,简而言之:它将允许我禁用我的web应用程序中的任何嵌入式javascript,这有助于防止XSS。
结果是,我所有的javascript代码都必须在外部文件中。
大多数javascript‘库/框架’代码已经是,但通常我的页面至少会包含几行JS代码,实例化与特定页面相关的组件。
例如,我有一个假设的注册页面。在注册页面的底部,我有以下代码:
var registrationForm = new MyApp.registrationValidator($('.regform'));
registrationForm.init();
此假设代码获得对注册表单的引用,并可以注册所有验证代码。
现在,我必须将此代码移动到外部文件中。我可以:
选项A:为每个页面创建一个小的.js文件,它只执行特定于该页面的代码。
选项B:在javascript文件中执行我的所有“实例化代码”。我只会检测页面上是否有“.regForm”css类,并且只有当对象出现在页面上时才实例化它们。
选项C:给我的<body>
标记一个id或类,并根据一个大开关执行正确的代码。
总之,选项B是最好的,如果不是因为我觉得有大量的初始化代码是个坏主意的话。
我主要想知道的是,你对这种情况有经验吗?你是如何解决的?
发布于 2012-02-07 00:29:00
选项D(A和B的变体):查看部署系统,它将编译(并缩小)多个javascript源文件为一个,只考虑到该页面所需的文件。
对于PHP而言,亚瑟蒂就是这样一个系统。
发布于 2012-02-06 04:41:07
如果您愿意使用像jQuery这样的框架(动态加载和执行外部javascript),则可以将A和B的优点结合起来。每个页面都将加载相同的.js,这将决定(通过存在或不存在dom元素)动态加载哪些其他.js文件。
https://stackoverflow.com/questions/9160223
复制