如何在 javascript 主文件中导入外部模块 (async.js)
How to import external module (async.js) in javascript main file
所以在工作中我们买了一个主题,我必须自定义并将其用于内部项目。他们使用 pug 从一些模板生成最终文件。在 .pug 模板中,我当然可以插入一些外部 javascript 文件。
来自他们的文件的空 js 示例如下所示:
(function(window, document, $) {
'use strict';
$(window).on('load', function () {
})
})(window, document, jQuery);
(jQuery 和 bootstrap 自动包含在模板中)。
我成功地创建了我的 javascript 文件并使用它们来处理仅使用纯 js 和一些 jQuery 的项目(但是我有点错过 angularjs,但我无法使用.pug 和 angular 在同一时间)。
我不得不向服务器发出多个 GET 请求,并且我需要它们是异步的。在我以前的项目中,我成功地使用了 async 模块,我也想在这里使用它。惊奇,惊奇,我无法导入模块。
我尝试使用像 import * as async from '../libs/async/async.js';
这样的简单行,但如果我想使用简单的 async.series,它会显示:Uncaught TypeError: async.series is not a function
。我尽了一切可能。错误从上面的错误到 "Unrecognized token *"
不等。是的,我将 .js 文件声明为 type="module"
.
我试图自己模拟这个问题,我创建了以下文件结构(它类似于主题中的那个)。
.
├── assets
│ └── js
│ ├── dashboards
│ │ └── dash.js
│ └── libs
│ └── async.js
└── src
└── index.html
在 .html 文件中,我只包含 jQuery 和 dash.js 文件。 dash.js 文件包含以下代码:
'use strict';
import * as async from '../libs/async.js';
$(window).on('load', function () {
function init() {
console.log("Hello there!");
async.series([
function(callback) { console.log(5); callback(); },
function(callback) { console.log(6); callback(); }
]);
}
init();
});
但是...又出错了。
Uncaught ReferenceError: async is not defined
at init (dash.js:8)
究竟如何导入异步模块(或任何其他模块)并正确使用它?
更新:
在 .html 文件中,如果我包含行
<script src="https://cdnjs.cloudflare.com/ajax/libs/async/2.6.1/async.js"></script>
看起来可行,但我真的很想知道没有它是否可以完成。
在 .pug 文件中,更改 .js 文件的顺序有帮助。我把 async.js
script(src=assets_path + '/js/libs/async.min.js', type='text/javascript')
作为自定义 js 文件的第一行,它起作用了。不需要其他进口。
所以在工作中我们买了一个主题,我必须自定义并将其用于内部项目。他们使用 pug 从一些模板生成最终文件。在 .pug 模板中,我当然可以插入一些外部 javascript 文件。
来自他们的文件的空 js 示例如下所示:
(function(window, document, $) {
'use strict';
$(window).on('load', function () {
})
})(window, document, jQuery);
(jQuery 和 bootstrap 自动包含在模板中)。 我成功地创建了我的 javascript 文件并使用它们来处理仅使用纯 js 和一些 jQuery 的项目(但是我有点错过 angularjs,但我无法使用.pug 和 angular 在同一时间)。
我不得不向服务器发出多个 GET 请求,并且我需要它们是异步的。在我以前的项目中,我成功地使用了 async 模块,我也想在这里使用它。惊奇,惊奇,我无法导入模块。
我尝试使用像 import * as async from '../libs/async/async.js';
这样的简单行,但如果我想使用简单的 async.series,它会显示:Uncaught TypeError: async.series is not a function
。我尽了一切可能。错误从上面的错误到 "Unrecognized token *"
不等。是的,我将 .js 文件声明为 type="module"
.
我试图自己模拟这个问题,我创建了以下文件结构(它类似于主题中的那个)。
.
├── assets
│ └── js
│ ├── dashboards
│ │ └── dash.js
│ └── libs
│ └── async.js
└── src
└── index.html
在 .html 文件中,我只包含 jQuery 和 dash.js 文件。 dash.js 文件包含以下代码:
'use strict';
import * as async from '../libs/async.js';
$(window).on('load', function () {
function init() {
console.log("Hello there!");
async.series([
function(callback) { console.log(5); callback(); },
function(callback) { console.log(6); callback(); }
]);
}
init();
});
但是...又出错了。
Uncaught ReferenceError: async is not defined
at init (dash.js:8)
究竟如何导入异步模块(或任何其他模块)并正确使用它?
更新: 在 .html 文件中,如果我包含行
<script src="https://cdnjs.cloudflare.com/ajax/libs/async/2.6.1/async.js"></script>
看起来可行,但我真的很想知道没有它是否可以完成。
在 .pug 文件中,更改 .js 文件的顺序有帮助。我把 async.js
script(src=assets_path + '/js/libs/async.min.js', type='text/javascript')
作为自定义 js 文件的第一行,它起作用了。不需要其他进口。