Supposons que j'ai une classe comme celle-ci (écrite en manuscrit) et que je la intègre avec webpack dans bundle.js
.
export class EntryPoint {
static run() {
...
}
}
Dans mon index.html, j'inclurai le bundle, mais j'aimerais également appeler cette méthode statique.
<script src="build/bundle.js"></script>
<script>
window.onload = function() {
EntryPoint.run();
}
</script>
Cependant, le EntryPoint
n'est pas défini dans ce cas. Comment puis-je appeler le javascript fourni à partir d'un autre script?
Ajouté : fichier de configuration Webpack .
javascript
html
typescript
webpack
Corbeau
la source
la source
var EntryPoint = require('EntryPoint')
manque quelque chose du genre dans votreonload
méthode.require
peut être nécessaire mais comme pour l'importation ci-dessous, dit-ilrequire is not defined
. Ce que j'essaie de faire, c'est d'utiliser du contenu groupé à partir de javascript simple, est-ce que je n'aurais pas besoin à nouveau d'un cadre pour l'utiliserrequire
? Mais j'essaye d'éviter ça. J'espère que cela a du sens.Réponses:
Il semble que vous souhaitiez exposer le bundle webpack en tant que bibliothèque . Vous pouvez configurer webpack pour exposer votre bibliothèque dans le contexte global dans une variable de votre choix, comme
EntryPoint
.Je ne connais pas TypeScript, donc l'exemple utilise plutôt du JavaScript brut. Mais la pièce importante ici est le fichier de configuration du webpack, et plus précisément la
output
section:webpack.config.js
index.js
Ensuite, vous pourrez accéder aux méthodes de votre bibliothèque comme vous le souhaitez:
Vérifiez l' essentiel avec le code réel.
la source
library: ["GlobalAccess", "[name]"],
. Cela fait ensuite de la var un objet avec des membres pour chaque point d'entrée: GlobalAccess.EntryPointFoo, GlobalAccess.EntryPointBar, etc.nam run build
mais ne fonctionne pas dans dev env en utilisantwebpack-dev-server
. Mon EntryPoint exporté est un objet vide. Des idées?export function run() {}
demodule.exports = ...
J'ai réussi à faire fonctionner cela sans aucune autre
webpack.config.js
modification, en utilisant simplement l'import
instruction que j'ai appelée à partir de mon fichier main / index.js:Pour référence, voici mon
weback.config.js
dossier.Au départ, j'ai essayé d'accomplir la même chose en utilisant
require
, mais il a attribué le wrapper de modulewindow.EntryPoint
par opposition à la classe réelle.la source
Uncaught SyntaxError: Unexpected token import
. Ou est-ce que votre estindex.js
également fourni (je le vois comme un point d'entrée, mais pas sûr)?Dans ma situation, j'ai pu appeler une fonction à partir du JavaScript fourni à partir d'un autre script en écrivant la fonction dans la fenêtre lors de sa création.
Je n'ai pas pu utiliser Babel donc cela a fonctionné pour moi.
la source
J'ai eu un défi similaire, je voulais créer un bundle pour plusieurs pages dans un voyage et je voulais que chaque page ait son propre point d'entrée dans le code, et sans bundle séparé pour chaque page.
Voici mon approche, qui est très similaire à Kurt Williams mais sous un angle légèrement différent, également sans changer la configuration du webpack:
JourneyMaster.js
Ensuite, un exemple de la façon dont j'appelle ces méthodes à la fin de la
html
page:la source
WEBPACK.CONFIG.JS
1.UTILISER UMD
index.html
main.js
2. UTILISATION DE VAR
index.html
main.js
3.UTILISER AMD comme bibliothèque que nous utilisons comme (pour ceux qui veulent faire lib)
la source
App.ts:
mypage.html:
la source