在特定页面上执行特定JS脚本的最佳实践

Best practices for executing specific JS scripts on on specific pages

本文关键字:最佳 脚本 执行 JS      更新时间:2023-09-26

标题说明了一切。我正在做的项目不是一个单页应用程序,也不是任何意味着任何复杂的数据流或AJAX请求的工作,但我想保持我的代码干净,避免错误,以及不必要的函数调用,不会在应用程序的页面上使用,所以我需要考虑它的架构。

假设我们声明一个应用程序的命名空间:

var MYAPP = MYAPP || {}

然后我将初始化一个模块,其中包含在该页面上使用的脚本:

var currentSection = w.location.pathname;
switch (currentSection) {
  case "/":
    return MYAPP._home = new _Home();
  case "contacts":
    return MYAPP._contacts = new _Contacts();
  default:
    return console.log('Unknown template');
}

在上面的例子中,我使用URL的一部分来定义将要使用的模块,但我发现它不是真的可靠,因为如果我们改变URL,那么我们也需要相应地改变一些代码,否则它将无法工作。另一种处理方法是在。php文件中定义模板,它可以是这样的:

<script>
  var MYAPP = MYAPP || {};
  MYAPP.template = 'contacts';
</script>

稍微改变一下我在上一个例子中使用的代码:

switch (MYAPP.template) {
  case "/":
    return MYAPP._home = new _Home();
  case "contacts":
    return MYAPP._contacts = new _Contacts();
  default:
    return console.log('Unknown template');
}

这个问题有更好的解决办法吗?如果这些信息重要,我们在后端开发中使用Apache2 + PHP

哪个模块将被使用

当你使用<script src=...定义一个js文件时,整个文件以及文件中的所有函数和类都会被加载。我不知道你是如何完成只加载一个模块或类使用你的代码-我只看到你定义了哪些对象被创建。

这是我指定包含哪些js文件/类的方式。我使用了一个三部分的过程来包含php, css和基于定义的js

index.php中,我有

define("module1", true);
define("module2", true);
require("includes.php");

我的includes.php文件是在相同的目录index.php(也在php路径)。里面有:

<?php
require_once('paths.php');
if (defined("module1")){    
    require_once('module1.php');
?>
    <script src="<?php echo APP_PATH ?>/js/module1.min.js"></script>
<?php
} else if (defined("module2")) {    
    require_once('module2.php');
?>
    <script src="<?php echo APP_PATH ?>/js/module2.min.js"></script>
<?php
}
?>

paths.php中,位于根目录下和php路径中,我有

<script>
    var APP_PATH = "www.mysite.com";
</script>

这样,我的应用程序的路径信息可以在一个文件中维护。我还定义了我的php路径在这个文件和前缀我的php文件,但这超出了你的要求。