gpt4 book ai didi

javascript - Webpack 加载器等效于 requirejs 插件加载 XMLHttpRequest

转载 作者:数据小太阳 更新时间:2023-10-29 04:47:30 27 4
gpt4 key购买 nike

我有一对 requirejs 插件,我想用 webpack 加载器替换它们。

define('firstLoader', {
load: function (name, parentRequire, onload, config) {
var xhr = new XMLHttpRequest();

xhr.addEventListener('load', function () {onload(this.responseText);});
xhr.addEventListener('error', onload.error);
xhr.addEventListener('abort', onload.error);

var url = '...' + name;
xhr.open('GET', url);
xhr.send()
}
})

define('jsonLoader', {
load: function (name, parentRequire, onload, config) {
//This is the nasty part.
req(['firstLoader!' + name], function (text) {
try {
onload(JSON.parse(text));
}
catch (err) {
onload.error(err);
}
})
}
});

最大的问题是缺乏对异步请求和动态需求的 promise 。有没有无需转译(使用 `System.load)或其他库(bluebird 等)就可以解决这个问题的方法?

编辑

所以我对此进行了破解,现在我遇到了一个错误

找不到模块:错误:无法解析“future/url”

当我转到 require('jsonLoader!future/url') 时。 webpack 是否允许 loader 在运行时运行?这是更新后的代码。

firstPlugin.js

module.exports = function loadAsync (content, callback) {
var host = document.location.host
var url = host + '...' + name
xhr.addEventListener("load", function () {callback(null, this.responseText)})
xhr.open("GET", url)
xhr.send()
}
}

jsonPlugin.js

module.exports = function (content, callback) {
require('firstPlugin!' + content, function (result) {
callback(null, JSON.parse(result))
})
}

最佳答案

Require 和 Webpack 只是根本不同的模式。它们都与“模块”和“加载”有关,但除此之外……

一般来说,Webpack 纯粹是一个编译/构建时工具。所以,不,它的加载器不能在运行时运行。但是,Webpack 可以在构建时创建多个包,您可以在运行时单独调用/下载它们。根据您希望如何调用这些附加包(从模块内部或特定“页面”),您感兴趣的 Webpack 概念是 Code SplittingEntry Points .

关于javascript - Webpack 加载器等效于 requirejs 插件加载 XMLHttpRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35997920/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com