Supongamos que tengo una clase como esta (escrita en mecanografiado) y la empaqueto con el paquete web bundle.js
.
export class EntryPoint {
static run() {
...
}
}
En mi index.html incluiré el paquete, pero también me gustaría llamar a ese método estático.
<script src="build/bundle.js"></script>
<script>
window.onload = function() {
EntryPoint.run();
}
</script>
Sin embargo, el EntryPoint
no está definido en este caso. ¿Cómo llamaría al javascript incluido desde otro script entonces?
Agregado : archivo de configuración de Webpack .
javascript
html
typescript
webpack
Cuervo
fuente
fuente
var EntryPoint = require('EntryPoint')
falta algo en la línea de suonload
método.require
podría ser necesario pero igual que con la importación a continuación, dicerequire is not defined
. Lo que estoy tratando de hacer es usar contenido empaquetado de JavaScript simple, ¿no necesitaría algún marco nuevamente para usarrequire
? Pero estoy tratando de evitar eso. Espero que tenga sentido.Respuestas:
Parece que desea exponer el paquete webpack como una biblioteca . Puede configurar webpack para exponer su biblioteca en el contexto global dentro de una variable propia, como
EntryPoint
.No conozco TypeScript, por lo que el ejemplo utiliza JavaScript simple. Pero la pieza importante aquí es el archivo de configuración del paquete web, y específicamente la
output
sección:webpack.config.js
index.js
Entonces podrá acceder a los métodos de su biblioteca como espera:
Verifique la esencia con el código real.
fuente
library: ["GlobalAccess", "[name]"],
. Eso hace que var sea un objeto con miembros para cada punto de entrada: GlobalAccess.EntryPointFoo, GlobalAccess.EntryPointBar, etc.nam run build
pero no funciona en dev env usandowebpack-dev-server
. Mi EntryPoint exportado es un objeto vacío. ¿Algunas ideas?export function run() {}
demodule.exports = ...
Logré que esto funcionara sin más
webpack.config.js
modificaciones, simplemente usando laimport
declaración que llamé desde mi archivo main / index.js:Como referencia, aquí está mi
weback.config.js
archivo.Inicialmente intenté lograr lo mismo usando
require
, sin embargo, asignó el contenedor del módulowindow.EntryPoint
a la clase real.fuente
Uncaught SyntaxError: Unexpected token import
. ¿Oindex.js
también está incluido (lo veo como punto de entrada, pero no estoy seguro)?En mi caso, pude llamar a una función desde el JavaScript incluido desde otro script al escribir la función en la ventana al crearla.
No podía usar Babel, así que esto funcionó para mí.
fuente
Tuve un desafío similar, quería crear un paquete para varias páginas dentro de un viaje y quería que cada página tuviera su propio punto de entrada en el código, y sin un paquete separado para cada página.
Aquí está mi enfoque, que es muy similar a Kurt Williams pero desde un ángulo ligeramente diferente, también sin cambiar la configuración del paquete web:
JourneyMaster.js
Luego, un ejemplo de cómo llamo a estos métodos al final de la
html
página:fuente
WEBPACK.CONFIG.JS
1.USO UMD
index.html
main.js
2.USAR VAR
index.html
main.js
3.USO DE AMD como biblioteca que usamos como (para aquellos que quieren hacer lib)
fuente
App.ts:
mypage.html:
fuente