每个HTML文件的JavaScript文件?

时间:2013-09-06 13:15:07

标签: javascript jquery html haml

我有一个javascript文件,可以处理几个HTML文件的脚本。

我开始遇到问题,因为所有内容都已写出来,并且函数中没有调用任何内容(因此所有AJAX调用都会在所有页面调用,即使每个调用只应在一个页面调用)。

改善/解决此问题的最佳方法是什么?以下是我想到的两种方式:

  1. 为每个HTML文件创建单独的JS文件
  2. 将所有JS代码放在函数中并分别调用每个函数
  3. 我倾向于将所有代码放入函数中。但是,当我这样做时:

    <script src="the_source">
      call_function
    </script>
    

    这似乎不起作用。我把它放在负责任的HTML之前。我最初在Haml写的如下:

    %script{:src => "src"}
      call_function
    

    如何让这个HTML函数调用工作?

    或者将它们分开,即每个HTML文件都有一个不同的JS文件被认为是更好的解决方案?问题是它们之间有很多共享代码。为了解决这个问题,我可以使用对象中的共享代码创建一个不同的文件,可以根据需要从其他JS文件中调用。

    这个问题的清洁方法/解决方案是什么?

3 个答案:

答案 0 :(得分:1)

调用函数使用:

call_function();

编辑:

<script src="the_source"></script>
<script >
  call_function();
</script>

其中“the_source”是您的js文件的路径

结束编辑

要分离每个页面中的逻辑,我只想创建一些设置对象,并为你想要分开的案例添加标志:

//this code should be on every page you need your javascript file
<script src="the_source"></script>
<script>
  var settings = {
        mode:'doSomething1'
  }
  call_function(settings);
</script>
你的js文件中的

根据settings.mode值做事:

function call_function(settings)
{
    switch(settings.mode){
        case: 'doSomething1':
            //code for case1
            break;
        case: 'doSomething2':
            //code for case2
            break;
        default: 
            //code for default case
            break;
    }
}

答案 1 :(得分:1)

这取决于您的托管计划:

如果它是专用或半专用服务器,我宁愿拥有共享的JavaScript文件(用于提高性能)。

如果它是任何其他类型,则单独的文件更快,因为它在不同的JS文件中分配请求的负载。

如果您不想创建分离的文件,因为它会很混乱,我建议您执行以下操作:

<script src="somewhere">
var page = "<?PHP echo basename($_SERVER['PHP_SELF']); ?>";
Run_Function();
</script>

在某个地方:

function Run_function(){
switch(page){
case "1.php":
//Do Something
break;
case "2.php":
//Do Something else
break;
default:
alert("Unregistered webpage");
break;
}

祝你好运:D

编辑:

尝试此功能以从URL获取文件名:

function FileName(){
var url = window.location.pathname;
var filename = url.substring(url.lastIndexOf('/')+1);
return filename:
}

更新:

请检查以上改进的功能:

function FileName(){
var url = window.location.pathname;
var filename = url.substring(url.lastIndexOf('/')+1);
if(filename == "" || filename == "Undefined"){
filename = "index.ruby";//or any other extension
}else{
var filename = filename.replace(/%C3%84/g, "Ä");
var filename = filename2.replace(/%C3%96/g, "Ö");
var filename = filename2.replace(/%C3%9C/g, "Ü");
var filename = filename2.replace(/%C3%A4/g, "ä");
var filename = filename2.replace(/%C3%B6/g, "ö");
var filename = filename2.replace(/%C3%BC/g, "ü");    
}
return filename:
}

此功能可以帮助更多人,并且使用起来更灵活。

答案 2 :(得分:0)

我会将您的JS代码放入几个不同的文件中,每个页面一个。 这可以帮助您的网站更快地运行(诚然不是很多),因为浏览器没有运行大量的代码来查找所需的功能。 此外,(这只是一个个人意见),一个只有很多短函数列表的JS文件非常难看,效率也不高。

是的,包含一个包含共享代码的额外文件。尽量确保文件中不必要的重复! 祝好运! :)