1

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

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

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

  1. 为每个 HTML 文件创建一个单独的 JS 文件
  2. 将所有JS代码放入函数中,分别调用各个函数

我倾向于将我所有的代码放在函数中。但是,当我这样做时:

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

那似乎没有用。我把它放在负责 HTML 的位置之前。我最初在 Haml 中这样写:

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

我怎样才能让这个 HTML 函数调用工作?

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

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

4

3 回答 3

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:
}

这个功能可以帮助更多的人,使用起来更灵活。

于 2013-09-06T13:41:38.630 回答
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;
    }
}
于 2013-09-06T13:23:54.230 回答
0

我会将您的 JS 代码放入几个不同的文件中,每个文件一个。这可以帮助您的网站运行得更快(诚然不是很多),因为浏览器不会运行大量代码来查找所需的功能。此外,(这只是个人意见),只有一长串简短函数的 JS 文件非常难看,而且效率似乎较低。

是的,包括一个带有共享代码的额外文件。尽量确保文件中没有任何不必要的重复!祝你好运!:)

于 2013-09-06T13:18:25.497 回答