share_this_document plugin page htmlwebpackplugin doc_page cannot body app javascript webpack amd loader

javascript - plugin - webpack doc_page src app page body body share_this_document



Cargador webpack equivalente a requirejs plugin load con XMLHttpRequest (1)

Require y Webpack son solo patrones fundamentalmente diferentes. Ambos se relacionan con ''módulos'' y ''carga'', pero de lo contrario ...

En general, Webpack es puramente una herramienta de compilación / tiempo de compilación. Entonces, no, sus cargadores no pueden operar en tiempo de ejecución. Sin embargo, Webpack puede crear múltiples paquetes en tiempo de compilación, que puede llamar / descargar por separado en tiempo de ejecución. Dependiendo de cómo quiera llamar a esos paquetes adicionales (desde dentro de un módulo, o desde una ''página'' particular) los conceptos de Webpack en los que está interesado son la división de código y los puntos de entrada múltiples .

Tengo un par de plugins requirejs, que me gustaría reemplazar con un cargador de 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); } }) } });

Los mayores problemas son la falta de promesas para la solicitud asincrónica y la demanda dinámica. ¿Hay alguna forma de evitar esto sin transpilation (con `System.load) o bibliotecas adicionales (bluebird, etc.)?

Editar

Así que he tomado una grieta en esto, y ahora estoy recibiendo un error

Module not found: Error: Can''t resolve ''future/url''

cuando voy a require(''jsonLoader!future/url'' ). ¿El paquete web permite que los cargadores funcionen en tiempo de ejecución? Aquí está el código actualizado.

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)) }) }