当我将所有javascript编译为一个文件时,我如何检测页面

how can I detect page when I compile all javascript to one file

本文关键字:检测 文件 何检测 javascript 编译 一个      更新时间:2023-09-26

我将所有不同页面的javascript编译到一个文件中,所以我必须为我的all.js识别页面。我可以把一个隐藏的元素在我的页面,让javascript检测到这个元素,但我不喜欢这个解决方案,有没有其他的方法来做到这一点?

您可以使用location.href(或location对象中的另一个字段)来访问url。

然而,更好的方法是在body标签上使用data-属性,例如<body data-page="whatever">,然后使用$('body').data('page')来检索值。

如果您的脚本是基于页面的,那么将它们编译成一个脚本是一个坏主意,单独加载文件,它将更轻,肯定会增加一些性能

我不确定,为什么你需要这个,但在一般情况下,它不是一个好的做法来改变动态改变javascript文件的内容,因为你是禁用javascript缓存,什么可以性能问题以后。

无论如何,你可以从另一边解决它,使用all.js来检测页面,你在哪里,然后你可以使用这些信息,动态加载正确的javascript文件,就像下面的例子

document.write('<script src="'+location.pathname+'.js"></script>');

它将加载与您相同的文件,只是使用。js扩展名。比如在index。html页面上它会加载index。html。js文件

我几乎总是使用MVC框架,并倾向于将我的动作和控制器作为类放在body元素

<body class="main_controller index">

可以让你做这样的事情:

$(document).ready(function(){
    //Only for lessons#search
    if (!$(body).hasClass('lessons search')) {
        return;
    }
    function close_style_filter_box() {
        $('#style_filter_box').slideUp();
    }
});

$(document).ready(function(){
    //Only for main_controller#index
    if (!$(body).hasClass('main_controller index')) {
        return;
    }
    function do_something_else_on_this_age() {
       ....
    }
});

另一种方法是使用javascript变量:

var PAGE = 'page1';