【问题标题】:How to divide javascript logic for different pages right way?如何正确划分不同页面的javascript逻辑?
【发布时间】:2018-05-08 14:46:42
【问题描述】:

例如,我有一个网站,其中一些页面如下所示:

  • login.html
  • 用户信息.html
  • products.html
  • product.html

这些页面有不同的脚本。所以我有:

  • login.js
  • 用户信息.js
  • products.js
  • product.js

我可以将这些文件合并为一个或使用 ES6 模块导入并获得“scripts.min.js”。

但是,如果我在 login.js 中有类似的东西:

document.ready(function() {
   alert('Hello, this is logic for login.js');
})

然后我会收到所有页面的此消息。

我正在寻找在页面之间划分逻辑的正确方法。不幸的是,我发现的所有关于 JavaScript 架构的信息都是关于 SPA 的。

在普通网站中组织JS结构以使其可维护和可扩展的正确方法是什么?

【问题讨论】:

  • 呃...只是不要连接这些文件?
  • 除了手动检查外,没有其他方法可以防止这种情况发生,可能基于页面的 URL,或者通过分离 AMD 模块中的逻辑等。
  • 31piy,模块是否有助于仅为目标页面执行脚本?

标签: javascript ecmascript-6 architecture web frontend


【解决方案1】:

更新:如果您希望某些代码仅在特定页面上执行,您可以执行以下操作(onload):

var _tgt = window.location.href; //where are we

var _is_login = _tgt.search("login");

if (_is_login !== -1) {
  console.log("Do something in login");
}

您可以使用节点模块来修剪您的代码:

  • 移除 cmets 并压缩:uglify-js npm 模块。
  • 要组合各种 js 文件,您可以执行以下操作:
    1. 使用(例如)npm 模块 fs-readdir-recursive 和 fs 读入文件
    2. 使用例如正则表达式删除不需要的内容
    3. 创建一个新文件(合并)

【讨论】:

  • 还有更漂亮的方法吗?
猜你喜欢
  • 2011-07-04
  • 2012-09-19
  • 1970-01-01
  • 1970-01-01
  • 2011-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多