Misalkan saya memiliki kelas seperti ini (ditulis dalam naskah) dan saya bundel dengan webpack bundle.js
.
export class EntryPoint {
static run() {
...
}
}
Dalam index.html saya, saya akan menyertakan bundel, tetapi kemudian saya juga ingin memanggil metode statis itu.
<script src="build/bundle.js"></script>
<script>
window.onload = function() {
EntryPoint.run();
}
</script>
Namun, hal EntryPoint
ini tidak terdefinisi dalam kasus ini. Bagaimana saya memanggil javascript yang dibundel dari skrip lain?
Ditambahkan : file konfigurasi Webpack .
javascript
html
typescript
webpack
Gagak
sumber
sumber
var EntryPoint = require('EntryPoint')
hilang dalamonload
metode Anda .require
mungkin diperlukan tetapi sama dengan impor di bawah ini, katanyarequire is not defined
. Apa yang saya coba lakukan adalah menggunakan konten yang dibundel dari javascript biasa, bukankah saya perlu kerangka kerja lagi untuk digunakanrequire
? Tetapi saya berusaha menghindarinya. Semoga itu masuk akal.Jawaban:
Tampaknya Anda ingin mengekspos bundel webpack sebagai pustaka . Anda dapat mengonfigurasi webpack untuk mengekspos pustaka Anda dalam konteks global di dalam variabel Anda sendiri, seperti
EntryPoint
.Saya tidak tahu TypeScript jadi contohnya menggunakan JavaScript biasa. Tetapi yang penting di sini adalah file konfigurasi webpack, dan khususnya
output
bagian:webpack.config.js
index.js
Maka Anda akan dapat mengakses metode perpustakaan Anda seperti yang Anda harapkan:
Periksa intinya dengan kode aktual.
sumber
library: ["GlobalAccess", "[name]"],
. Itu kemudian membuat var menjadi objek dengan anggota untuk setiap entri: GlobalAccess.EntryPointFoo, GlobalAccess.EntryPointBar, dll.nam run build
tetapi tidak bekerja di dev env menggunakanwebpack-dev-server
. EntryPoint saya yang diekspor adalah objek kosong. Ada ide?export function run() {}
darimodule.exports = ...
Saya berhasil menjalankan ini tanpa
webpack.config.js
modifikasi lebih lanjut , hanya dengan menggunakanimport
pernyataan yang saya panggil dari file utama / index.js saya:Untuk referensi, ini
weback.config.js
file saya .Awalnya saya mencoba menyelesaikan menggunakan yang sama
require
, namun ia ditugaskan pembungkus modulwindow.EntryPoint
sebagai lawan dari kelas yang sebenarnya.sumber
Uncaught SyntaxError: Unexpected token import
. Atau apakah Andaindex.js
juga dibundel (saya memang melihatnya sebagai titik masuk, tetapi tidak yakin)?Dalam keadaan saya, saya bisa memanggil fungsi dari dalam JavaScript yang dibundel dari skrip lain dengan menulis fungsi ke jendela saat membuatnya.
Saya tidak dapat menggunakan Babel jadi ini bekerja untuk saya.
sumber
Saya memiliki tantangan serupa, saya ingin membuat bundel untuk beberapa halaman dalam perjalanan dan ingin setiap halaman memiliki titik masuknya sendiri ke dalam kode, dan tanpa bundel terpisah untuk setiap halaman.
Inilah pendekatan saya, yang sangat mirip dengan Kurt Williams tetapi dari sudut yang sedikit berbeda, juga tanpa mengubah konfigurasi webpack:
JourneyMaster.js
Lalu contoh bagaimana saya memanggil metode ini di akhir
html
halaman:sumber
WEBPACK.CONFIG.JS
1.MENGGUNAKAN UMD
index.html
main.js
2. MENGGUNAKAN VAR
index.html
main.js
3.Menggunakan AMD sebagai pustaka yang kami gunakan seperti (untuk mereka yang ingin membuat lib)
sumber
App.ts:
mypage.html:
sumber