繁体   English   中英

Javascript和jquery命名空间

[英]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);

1-您朝着正确的方向前进...

2-ctrl + F5执行“硬刷新”,再次下载所有资源...

浏览器的“ F5”和“ Ctrl + F5”刷新会产生什么请求?

对于您,第二个问题是用户Web开发人员工具栏,并在开发时禁用缓存。 如果您想在客户端每次打开页面时更新javascript文件,只需在将js文件附加到html时执行以下操作:

<script type="" src="some.js?var=somerandvars" />

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM