[英]Javascript and jquery Namespaces
目前,我有一堆HTML + php文件,每个文件中都有一个$(document).ready函数。
我相信要走的路是将尽可能多的JS整理到一个文件中,并且我将需要对函数进行命名空间。
因此,如果我有一个名为product_edit的php文件,那么我将执行以下操作:
<script type="text/javascript">
$(document).ready(function(){
productActions.documentReady();
});
</script>
然后在我的单个site_scripts文件中,可以执行以下操作:
var productActions = {
documentReady: function() {
$('#date').change(function() {
someGlobalFunction();
productActions.getTerms();
});
$('#product_id').change(function() {
productActions.getTerms();
});
},
getTerms: function() {
//do something here
}
};
首先:我会以正确的方式解决这个问题吗? 这种整体方法是否正确……或者是胡说八道?
其次:似乎我的site_scripts文件已被缓存,因此每次对它进行任何更改时,我都必须清除浏览器缓存。 有什么快速的方法解决吗?
无需将其包装在额外的函数中(如评论者所说)
$(document).ready(productActions.documentReady)
有很多不同的方式来处理缓存。 例如, 您可能想在文件保存时添加时间戳 (我们会在构建脚本中自动执行此操作),然后应用远期过期标头,因此仅下载一次。
另外,对于您的名称空间,在所有大写字母中都具有全局名称空间是很常见的做法。 我在i.TV工作,我们做这样的事情:
window.ITV = {pages:{}}
ITV.pages.tvListings = {
init: function() { } // basic init for page
prop1: "bla bla bla"
}
然后,我们可以做一些幻想,并在您的php中执行类似的操作,该操作在您所有页面上都可以完全重用:
var pageName = "<?= $pageName ?>";
if (ITV.pages[pageName]) $(document).ready(ITV.pages[pageName].init);
对于您,第二个问题是用户Web开发人员工具栏,并在开发时禁用缓存。 如果您想在客户端每次打开页面时更新javascript文件,只需在将js文件附加到html时执行以下操作:
<script type="" src="some.js?var=somerandvars" />
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.