带有 URL 通配符的 Javascript?

标签 javascript import wildcard

我知道,可以像这样从 javascript 中“导入”脚本文件:

var imported = document.createElement('script');
imported.src = '/path/to/imported/script.js';
document.head.appendChild(imported);

为此,必须事先知道文件名(此处:script.js)及其位置。

我有许多可选模块可以存在或不存在于我的主项目中。每个模块都是它自己的 javascript 文件。我想检测 scripts/ 目录中存在哪一个并以上述方式运行它们,即我事先不知道文件名。我知道 javascript 是客户端,无法访问服务器端目录,但也许有一个使用请求对象或类似内容的解决方法。我没有可用的服务器端脚本语言。这可能吗?

为了说明,我有一个文件 /scripts/main.js,它始终存在并包含在 HTML 文件 index.html 中。然后在 /scripts/ 中还有许多其他 *.js 文件,即模块。我希望它们自动包含在 main.js 中。说明:

<!-- In index.html -->
<html><head>
<title>Include Scripts</title>
<script type="text/javascript" src="scripts/main.js">
</head><body>
  <!-- ...more stuff... -->
</body></html>

虽然 main.js 可能看起来像这样:

// In main.js
scripts = findScripts( 'scripts/*.js' ); // How do I do this?
for( i=0; i<scripts.length; i++ ) {
    if( scripts[i].match(/main.js$/ ) continue;
    var imported = document.createElement('script');
    imported.src = scripts[i];
    document.head.appendChild(imported);
}

然后脚本目录中的模块应该自己运行。

最佳答案

对此不会有纯粹的前端解决方案,因为 HTML 页面无法查看服务器并查看那里有哪些文件。您有几个选择:

  1. 如果您知道可能存在的所有 可能 JS 文件,您可以尝试将它们全部包含在内,有些会成功,有些会失败 (404)。我不会真的建议这是一个可行的选择,但从技术上讲……它可以工作。
  2. 创建一个小型网络服务/API 端点,用于查看该文件夹中的 JS 文件列表并将它们返回到您的页面,现在您有一个可以加载的列表。
  3. (我会研究什么)使用某种构建系统,或者至少是串联。如果你的系统只需要获取文件夹中的所有 JS 文件并将它们全部组合到 modules.js 中,那么你只需要为每个页面加载 modules.js .

关于带有 URL 通配符的 Javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39301129/

相关文章:

javascript - 从express js中的先前路由处理程序获取参数

javascript - 如何从 JavaScript 中的字符串中去除 HTML 标签?

javascript - 使用 for 循环对数组进行排序失败

node.js - nodejs 8导入模块-需要还是导入?

csv - 如何将包含 boolean 值的 CSV 导入 Neo4j

sql - 如何快速将Microsoft SQL Server 2008中的表结构导出到Visio以制作ERD?

java - 方法调用和通配符

mysql - 我正在尝试使用通配符在 MySQL 中进行搜索和替换

支持通配符的 Java robots.txt 解析器

javascript - 将查询字符串从变量 append 到每个 URL