您是否将您的javascript本地化到页面,或拥有主"application.js"或类似的?
如果是后者,那么确保你的.js没有在错误的页面上执行的最佳做法是什么?
编辑:通过javascript我的意思是你作为开发人员编写的自定义javascript,而不是js库.我无法想象有人会将jQuery源复制/粘贴到他们的页面中,但你永远不会知道.
将所有j放在一个文件中可以帮助提高性能(只有一个请求而不是几个请求).如果您使用的是像Akamai这样的内容分发网络,它可以提高您的缓存命中率.此外,始终在页面的最底部(正文标签上方)抛出内联js,因为它是同步执行的,可能会使页面延迟渲染.
是的,如果您正在使用的js文件之一也在谷歌托管,请确保使用该文件.
这是我的"指南".请注意,这些都不是正式的,它们似乎是正确的做法.
所有共享的JS代码都存在于SITE/javascripts
目录中,但它以"层"的形式加载
对于站点范围内的东西(如jquery或我的站点范围的application.js),站点范围的布局(这将是ASP.net中的母版页)包括该文件.该script
标签位于页面的顶部.
还有"区域范围"的东西(例如:js代码,只在网站的管理部分需要).这些区域要么具有公共布局(可以包含脚本标记),要么呈现公共部分,而部分可以包含脚本标记)
对于不太共享的东西(比如我的库只需要在几个地方需要),我会script
在这些HTML页面中单独放置一个标签.脚本标记位于页面顶部.
对于仅与单页相关的内容,我只需编写内联javascript.我尽量让它尽可能接近它的"目标".例如,如果我有一个onclick js按钮,script
标签将在按钮下方.
对于没有目标的内联JS(例如:onload
事件),它位于页面底部.
那么,如何进入本地化的库或站点范围的库?
第一次需要时,将其写入内联
下次需要时,将内联代码拉到本地化库
如果您从(大约)3个或更多位置引用本地化库中的某些代码,请将代码拉到区域范围的库中
如果需要来自多个地区,请将其提升到站点范围的库.
关于诸如此类系统的常见抱怨是,您最终会收到10或20个小型JS文件,其中2或3个大型JS文件从网络角度来看会表现得更好.但是,rails和ASP.NET都具有处理将多个JS文件组合和缓存到一个或多个"超级"js文件中以用于生产情况的功能.
我建议使用这样的功能,而不是牺牲实际源代码的质量/可读性.