Apakah ada sesuatu dalam JavaScript yang mirip dengan @import
di CSS yang memungkinkan Anda untuk memasukkan file JavaScript ke dalam file JavaScript lain?
javascript
file
import
include
Alec Smart
sumber
sumber
script
tag yang dipesan ?Jawaban:
Versi lama JavaScript tidak mengimpor, memasukkan, atau mengharuskan, begitu banyak pendekatan berbeda untuk masalah ini telah dikembangkan.
Tetapi sejak 2015 (ES6), JavaScript telah memiliki standar modul ES6 untuk mengimpor modul di Node.js, yang juga didukung oleh sebagian besar peramban modern .
Untuk kompatibilitas dengan browser yang lebih lama, alat build seperti Webpack dan Rollup dan / atau alat transpilasi seperti Babel dapat digunakan.
Modul ES6
Modul ECMAScript (ES6) telah didukung di Node.js sejak v8.5, dengan
--experimental-modules
flag, dan setidaknya Node.js v13.8.0 tanpa flag. Untuk mengaktifkan "ESM" (vs. sistem modul CommonJS-gaya sebelumnya Node.js ini [ "CJS"]) Anda baik menggunakan"type": "module"
dipackage.json
atau memberikan file ekstensi.mjs
. (Demikian pula, modul yang ditulis dengan modul CJS Node.js sebelumnya dapat dinamai.cjs
jika default Anda adalah ESM.)Menggunakan
package.json
:Lalu
module.js
:Lalu
main.js
:Dengan menggunakan
.mjs
, Anda harusmodule.mjs
:Lalu
main.mjs
:Modul ECMAScript di browser
Browser telah mendapat dukungan untuk memuat modul ECMAScript secara langsung (tidak diperlukan alat seperti Webpack) sejak Safari 10.1, Chrome 61, Firefox 60, dan Edge 16. Periksa dukungan saat ini di caniuse . Tidak perlu menggunakan
.mjs
ekstensi Node.js ; browser sepenuhnya mengabaikan ekstensi file pada modul / skrip.Baca lebih lanjut di https://jakearchibald.com/2017/es-modules-in-browsers/
Impor dinamis di browser
Impor dinamis membiarkan skrip memuat skrip lain sesuai kebutuhan:
Baca lebih lanjut di https://developers.google.com/web/updates/2017/11/dynamic-import
Node.js membutuhkan
Gaya modul CJS yang lebih lama, masih banyak digunakan di Node.js, adalah
module.exports
/require
sistem.Ada cara lain untuk JavaScript untuk memasukkan konten JavaScript eksternal di browser yang tidak memerlukan preprocessing.
Memuat AJAX
Anda dapat memuat skrip tambahan dengan panggilan AJAX dan kemudian gunakan
eval
untuk menjalankannya. Ini adalah cara yang paling mudah, tetapi terbatas pada domain Anda karena model keamanan JavaScript sandbox. Menggunakaneval
juga membuka pintu bagi bug, peretasan, dan masalah keamanan.Ambil Memuat
Seperti Impor dinamis, Anda dapat memuat satu atau banyak skrip dengan
fetch
panggilan menggunakan janji untuk mengontrol urutan eksekusi untuk dependensi skrip menggunakan pustaka Inject Ambil :jQuery Sedang Memuat
The jQuery perpustakaan menyediakan memuat fungsi dalam satu baris :
Memuat Script Dinamis
Anda dapat menambahkan tag skrip dengan URL skrip ke dalam HTML. Untuk menghindari overhead jQuery, ini adalah solusi ideal.
Skrip bahkan dapat berada di server yang berbeda. Selanjutnya, browser mengevaluasi kode. The
<script>
tag dapat disuntikkan ke dalam salah satu halaman web<head>
, atau dimasukkan sebelum penutupan</body>
tag.Berikut adalah contoh bagaimana ini bisa bekerja:
Fungsi ini akan menambahkan
<script>
tag baru ke akhir bagian kepala halaman, di manasrc
atribut diatur ke URL yang diberikan ke fungsi sebagai parameter pertama.Kedua solusi ini dibahas dan diilustrasikan dalam JavaScript Madness: Dynamic Script Loading .
Mendeteksi ketika skrip telah dieksekusi
Sekarang, ada masalah besar yang harus Anda ketahui. Melakukan hal itu menyiratkan bahwa Anda memuat kode dari jarak jauh . Browser web modern akan memuat file dan terus mengeksekusi skrip Anda saat ini karena mereka memuat semuanya secara tidak sinkron untuk meningkatkan kinerja. (Ini berlaku untuk metode jQuery dan metode pemuatan skrip dinamis manual.)
Ini berarti bahwa jika Anda menggunakan trik ini secara langsung, Anda tidak akan dapat menggunakan kode yang baru dimuat di baris berikutnya setelah Anda memintanya untuk dimuat , karena masih akan memuat.
Misalnya:
my_lovely_script.js
berisiMySuperObject
:Kemudian Anda memuat kembali halaman yang sedang dipukul F5. Dan itu berhasil! Membingungkan ...
Jadi apa yang harus dilakukan?
Nah, Anda dapat menggunakan retasan yang disarankan penulis di tautan yang saya berikan kepada Anda. Singkatnya, untuk orang-orang yang terburu-buru, ia menggunakan acara untuk menjalankan fungsi panggilan balik ketika skrip dimuat. Jadi Anda bisa meletakkan semua kode menggunakan pustaka jarak jauh di fungsi panggilan balik. Sebagai contoh:
Kemudian Anda menulis kode yang ingin Anda gunakan SETELAH skrip dimuat dalam fungsi lambda :
Kemudian Anda jalankan semua itu:
Perhatikan bahwa skrip dapat dijalankan setelah DOM dimuat, atau sebelumnya, tergantung pada browser dan apakah Anda menyertakan baris
script.async = false;
. Ada artikel hebat tentang pemuatan Javascript secara umum yang membahas hal ini.Source Code Merge / Preprocessing
Seperti yang disebutkan di bagian atas jawaban ini, banyak pengembang menggunakan alat build / transpilation (s) seperti Parcel, Webpack, atau Babel dalam proyek mereka, memungkinkan mereka untuk menggunakan sintaks JavaScript yang akan datang, memberikan kompatibilitas ke belakang untuk browser lama, menggabungkan file, memperkecil, melakukan pemecahan kode dll.
sumber
onreadystatechange
acara danreadyState
properti). Juga, pemuatan skrip dinamis tidak mendapat manfaat dari pemindai preload dari broswer. Rekomendasikan artikel HTML5Rocks ini: html5rocks.com/en/tutorials/speed/script-loadingJika ada yang mencari sesuatu yang lebih maju, cobalah RequireJS . Anda akan mendapatkan manfaat tambahan seperti manajemen dependensi, konkurensi yang lebih baik, dan menghindari duplikasi (yaitu, mengambil skrip lebih dari sekali).
Anda dapat menulis file JavaScript di "modul" dan kemudian merujuknya sebagai dependensi di skrip lain. Atau Anda dapat menggunakan RequireJS sebagai solusi "go get this script" sederhana.
Contoh:
Tentukan dependensi sebagai modul:
some-dependency.js
implementasi.js adalah file JavaScript "utama" Anda yang bergantung pada some-dependency.js
Kutipan dari GitHub README:
sumber
Sebenarnya ada cara untuk memuat file JavaScript tidak asinkron, sehingga Anda dapat menggunakan fungsi yang disertakan dalam file yang baru Anda muat setelah memuatnya, dan saya pikir itu berfungsi di semua browser.
Anda perlu menggunakan
jQuery.append()
pada<head>
elemen halaman Anda, yaitu:Namun, metode ini juga memiliki masalah: jika terjadi kesalahan pada file JavaScript yang diimpor, Firebug (dan juga Firefox Error Console dan Tools Developer Chrome ) akan melaporkan tempatnya secara tidak benar, yang merupakan masalah besar jika Anda menggunakan Firebug untuk melacak Kesalahan JavaScript turun banyak (saya lakukan). Firebug tidak tahu tentang file yang baru dimuat karena suatu alasan, jadi jika terjadi kesalahan pada file itu, ia melaporkan bahwa itu terjadi pada file HTML utama Anda , dan Anda akan kesulitan menemukan alasan sebenarnya untuk kesalahan tersebut.
Tetapi jika itu bukan masalah bagi Anda, maka metode ini akan berhasil.
Saya sebenarnya telah menulis plugin jQuery yang disebut $ .import_js () yang menggunakan metode ini:
Jadi yang perlu Anda lakukan untuk mengimpor JavaScript adalah:
Saya juga membuat tes sederhana untuk ini di Contoh .
Ini termasuk
main.js
file dalam HTML utama dan kemudian skripmain.js
digunakan$.import_js()
untuk mengimpor file tambahan yang disebutincluded.js
, yang mendefinisikan fungsi ini:Dan tepat setelah termasuk
included.js
,hello()
fungsinya dipanggil, dan Anda mendapatkan peringatan.(Jawaban ini sebagai respons terhadap komentar e-satis ').
sumber
jQuery.getScript
, dengan begitu Anda tidak perlu khawatir menulis plugin ...script
elemenhead
akan menyebabkannya berjalan secara tidak sinkron, kecuali jikaasync
diatur secara khususfalse
."
, kode akan rusakCara lain, yang menurut saya jauh lebih bersih, adalah dengan membuat permintaan Ajax sinkron daripada menggunakan
<script>
tag. Yang juga bagaimana Node.js menangani termasuk.Berikut ini contoh menggunakan jQuery:
Anda kemudian dapat menggunakannya dalam kode Anda karena biasanya Anda akan menggunakan sertakan:
Dan dapat memanggil fungsi dari skrip yang diperlukan di baris berikutnya:
sumber
async: false
sudah usang. Bukan itu! Seperti kutipan Anda nyatakan, hanya hal-hal terkait jqXHR yang.Ada kabar baik untuk Anda. Segera Anda akan dapat memuat kode JavaScript dengan mudah. Ini akan menjadi cara standar untuk mengimpor modul kode JavaScript dan akan menjadi bagian dari inti JavaScript itu sendiri.
Anda hanya perlu menulis
import cond from 'cond.js';
untuk memuat nama makrocond
dari filecond.js
.Jadi Anda tidak harus bergantung pada kerangka JavaScript apa pun juga tidak harus secara eksplisit membuat panggilan Ajax .
Mengacu pada:
Resolusi modul statis
Modul pemuat
sumber
Dimungkinkan untuk secara dinamis menghasilkan tag JavaScript dan menambahkannya ke dokumen HTML dari dalam kode JavaScript lainnya. Ini akan memuat file JavaScript yang ditargetkan.
sumber
js.onload = callback;
Pernyataan
import
ada dalam ECMAScript 6.Sintaksis
sumber
Mungkin Anda dapat menggunakan fungsi ini yang saya temukan di halaman ini. Bagaimana cara saya memasukkan file JavaScript ke file JavaScript? :
sumber
script.onload = callback;
var
, variabel akan bersifat global?head
.Ini adalah versi sinkron tanpa jQuery :
Perhatikan bahwa untuk mendapatkan lintas-domain yang berfungsi ini, server perlu mengatur
allow-origin
tajuk sebagai jawabannya.sumber
http://web.archive.org/web/20140905044059/http://www.howtocreate.co.uk/operaStuff/userjs/aagmfunctions.js
)<script>
tag yang dimasukkan , bukan melaluiXMLHttpRequest
.const XMLHttpRequest = Components.Constructor("@mozilla.org/xmlextras/xmlhttprequest;1");
Saya baru saja menulis kode JavaScript ini (menggunakan Prototipe untuk manipulasi DOM ):
Pemakaian:
Intisari: http://gist.github.com/284442 .
sumber
Berikut adalah versi umum tentang cara Facebook melakukannya untuk tombol Suka di mana-mana:
Jika itu berfungsi untuk Facebook, itu akan bekerja untuk Anda.
Alasan mengapa kami mencari
script
elemen pertama bukanhead
ataubody
karena beberapa browser tidak membuat satu jika hilang, tetapi kami dijamin memilikiscript
elemen - yang ini. Baca lebih lanjut di http://www.jspatterns.com/the-ridiculous-case-of-adding-a-script-element/ .sumber
Jika Anda ingin menggunakan JavaScript murni, Anda dapat menggunakannya
document.write
.Jika Anda menggunakan perpustakaan jQuery, Anda dapat menggunakan
$.getScript
metode ini.sumber
Anda juga dapat merakit skrip Anda menggunakan PHP :
File
main.js.php
:sumber
Sebagian besar solusi yang ditampilkan di sini menyiratkan pemuatan dinamis. Saya sedang mencari kompiler yang merakit semua file yang tergantung menjadi file output tunggal. Sama seperti Less / Sass preprocessors berurusan dengan aturan CSS
@import
. Karena saya tidak menemukan sesuatu yang layak seperti ini, saya menulis alat sederhana untuk menyelesaikan masalah ini.Jadi di sini adalah kompiler, https://github.com/dsheiko/jsic , yang menggantikan
$import("file-path")
dengan konten file yang diminta dengan aman. Berikut ini adalah plugin Grunt yang sesuai : https://github.com/dsheiko/grunt-jsic .Pada cabang master jQuery, mereka hanya menggabungkan file sumber atom menjadi satu mulai dengan
intro.js
dan berakhir denganouttro.js
. Itu tidak cocok untuk saya karena tidak memberikan fleksibilitas pada desain kode sumber. Lihat cara kerjanya dengan jsic:src / main.js
src / Form / Input / Tel.js
Sekarang kita dapat menjalankan kompiler:
Dan dapatkan file gabungannya
build / main.js
sumber
Jika niat Anda untuk memuat file JavaScript menggunakan fungsi dari file yang diimpor / disertakan , Anda juga dapat mendefinisikan objek global dan mengatur fungsi sebagai item objek. Contohnya:
global.js
file1.js
file2.js
main.js
Anda hanya perlu berhati-hati saat memasukkan skrip ke dalam file HTML. Urutannya harus seperti di bawah ini:
sumber
Ini harus dilakukan:
sumber
eval
adalah apa yang salah dengan itu. Dari Crockford , "eval
adalah kejahatan.eval
Fungsinya adalah fitur JavaScript yang paling banyak disalahgunakan. Hindari itu.eval
Alias. Jangan gunakanFunction
konstruktor. Jangan berikan string kesetTimeout
atausetInterval
." Jika Anda belum membaca "JavaScript: The Good Parts" -nya, maka keluarlah dan lakukan sekarang. Anda tidak akan menyesalinya.http://web.archive.org/web/20140905044059/http://www.howtocreate.co.uk/operaStuff/userjs/aagmfunctions.js
)Atau alih-alih termasuk pada saat dijalankan, gunakan skrip untuk menyatukan sebelum mengunggah.
Saya menggunakan Sprockets (saya tidak tahu apakah ada yang lain). Anda membuat kode JavaScript dalam file terpisah dan memasukkan komentar yang diproses oleh mesin Sprockets sebagai termasuk. Untuk pengembangan, Anda dapat memasukkan file secara berurutan, kemudian untuk produksi untuk menggabungkannya ...
Lihat juga:
sumber
Saya punya masalah sederhana, tetapi saya bingung dengan jawaban atas pertanyaan ini.
Saya harus menggunakan variabel (myVar1) yang didefinisikan dalam satu file JavaScript (myvariables.js) di file JavaScript lain (main.js).
Untuk ini saya lakukan seperti di bawah ini:
Memuat kode JavaScript dalam file HTML, dalam urutan yang benar, myvariables.js pertama, lalu main.js:
File: myvariables.js
File: main.js
Seperti yang Anda lihat, saya telah menggunakan variabel dalam satu file JavaScript di file JavaScript lain, tapi saya tidak perlu memasukkan satu ke yang lain. Saya hanya perlu memastikan bahwa file JavaScript pertama dimuat sebelum file JavaScript kedua, dan, variabel file JavaScript pertama dapat diakses di file JavaScript kedua, secara otomatis.
Ini menyelamatkan hari saya. Saya harap ini membantu.
sumber
import
. Anda memerlukan file HTML untuk mendapatkan barang dari satu file js ke file lainnya.<script>
tag. Ini dapat membantu organisasi. Jawaban ini bukan pertanyaan yang diajukan, dan tidak ideal dalam konteks ini.Jika Anda menggunakan Pekerja Web dan ingin menyertakan skrip tambahan dalam lingkup pekerja, jawaban lain yang diberikan tentang menambahkan skrip ke
head
tag, dll. Tidak akan berfungsi untuk Anda.Untungnya, Pekerja Web memiliki
importScripts
fungsi mereka sendiri yang merupakan fungsi global dalam lingkup Pekerja Web, asli dari browser itu sendiri karena merupakan bagian dari spesifikasi .Atau, sebagai jawaban tertinggi kedua untuk menyoroti pertanyaan Anda , RequireJS juga dapat menangani termasuk skrip di dalam Pekerja Web (kemungkinan memanggil
importScripts
dirinya sendiri, tetapi dengan beberapa fitur bermanfaat lainnya).sumber
Dalam bahasa modern dengan tanda centang apakah skrip telah dimuat akan menjadi:
Penggunaan (async / menunggu):
atau
Penggunaan (Janji):
sumber
var pi = 3.14
. panggil fungsi loadJS () vialoadJs("pi.js").then(function(){ console.log(pi); });
The
@import
sintaks untuk mencapai CSS-seperti mengimpor JavaScript adalah mungkin menggunakan alat seperti Campuran melalui khusus mereka.mix
jenis file (lihat disini ). Saya membayangkan aplikasi hanya menggunakan salah satu metode yang disebutkan di atas secara internal, meskipun saya tidak tahu.Dari dokumentasi Campuran pada
.mix
file:Berikut ini contoh
.mix
file yang menggabungkan beberapa.js
file menjadi satu:Campuran menghasilkan ini sebagai
scripts-global.js
dan juga sebagai versi yang diperkecil (scripts-global.min.js
).Catatan: Saya sama sekali tidak berafiliasi dengan Mixture, selain menggunakannya sebagai alat pengembangan front-end. Saya menemukan pertanyaan ini setelah melihat
.mix
file JavaScript sedang beraksi (di salah satu boilerplture Campuran) dan sedikit bingung olehnya ("Anda bisa melakukan ini?" Saya berpikir sendiri). Kemudian saya menyadari bahwa itu adalah tipe file khusus aplikasi (agak mengecewakan, disetujui). Meskipun demikian, pikir pengetahuan itu mungkin bermanfaat bagi orang lain.UPDATE : Campuran sekarang gratis (offline).
UPDATE : Campuran sekarang dihentikan. Rilis campuran lama masih tersedia
sumber
sumber
body
belum ada atau tidak dapat dimodifikasi. Juga membantu menjelaskan jawaban.Metode saya yang biasa adalah:
Ini berfungsi dengan baik dan tidak menggunakan halaman-reload untuk saya. Saya sudah mencoba metode AJAX (salah satu jawaban lain) tetapi tampaknya tidak bekerja dengan baik untuk saya.
Berikut adalah penjelasan tentang bagaimana kode bekerja untuk mereka yang penasaran: pada dasarnya, ini membuat tag skrip baru (setelah yang pertama) dari URL. Ini mengaturnya ke mode asinkron sehingga tidak memblokir sisa kode, tetapi memanggil panggilan balik ketika readyState (keadaan konten yang akan dimuat) berubah menjadi 'dimuat'.
sumber
Meskipun jawaban ini bagus, ada "solusi" sederhana yang telah ada sejak pemuatan skrip ada, dan itu akan mencakup 99,999% dari kasus penggunaan kebanyakan orang. Cukup sertakan skrip yang Anda butuhkan sebelum skrip yang membutuhkannya. Untuk sebagian besar proyek, tidak butuh waktu lama untuk menentukan skrip mana yang diperlukan dan dalam urutan apa.
Jika script2 membutuhkan script1, ini benar-benar cara termudah untuk melakukan sesuatu seperti ini. Saya sangat terkejut tidak ada yang mengemukakan ini, karena ini adalah jawaban yang paling jelas dan paling sederhana yang akan diterapkan di hampir setiap kasus.
sumber
Saya menulis modul sederhana yang mengotomatiskan pekerjaan mengimpor / termasuk skrip modul dalam JavaScript. Untuk penjelasan rinci tentang kode, lihat posting blog JavaScript mengharuskan / impor / sertakan modul .
sumber
Script ini akan menambahkan file JavaScript ke atas
<script>
tag lain :sumber
Ada juga Head.js . Sangat mudah untuk berurusan dengan:
Seperti yang Anda lihat, ini lebih mudah daripada Require.js dan senyaman
$.getScript
metode jQuery . Ini juga memiliki beberapa fitur canggih, seperti pemuatan bersyarat, deteksi fitur dan banyak lagi .sumber
Ada banyak jawaban potensial untuk pertanyaan ini. Jawaban saya jelas berdasarkan sejumlah dari mereka. Inilah yang akhirnya saya baca setelah membaca semua jawaban.
Masalah dengan
$.getScript
dan benar-benar solusi lain yang memerlukan panggilan balik saat memuat selesai adalah bahwa jika Anda memiliki banyak file yang menggunakannya dan saling bergantung satu sama lain, Anda tidak lagi memiliki cara untuk mengetahui kapan semua skrip telah dimuat (setelah mereka disarangkan dalam banyak file).Contoh:
file3.js
file2.js:
file1.js:
Anda benar ketika mengatakan bahwa Anda dapat menentukan Ajax untuk berjalan secara sinkron atau menggunakan XMLHttpRequest , tetapi tren saat ini tampaknya untuk menolak permintaan sinkron, sehingga Anda mungkin tidak mendapatkan dukungan browser penuh sekarang atau di masa depan.
Anda dapat mencoba menggunakan
$.when
untuk memeriksa array objek yang ditangguhkan, tetapi sekarang Anda melakukan ini di setiap file dan file2 akan dianggap dimuat segera setelah$.when
dieksekusi bukan ketika callback dieksekusi, jadi file1 masih melanjutkan eksekusi sebelum file3 dimuat . Ini benar-benar masih memiliki masalah yang sama.Saya memutuskan untuk mundur daripada maju. Terima kasih
document.writeln
. Saya tahu itu hal yang tabu, tetapi selama digunakan dengan benar, ini bekerja dengan baik. Anda berakhir dengan kode yang dapat didebug dengan mudah, ditampilkan di DOM dengan benar dan dapat memastikan urutan ketergantungan dimuat dengan benar.Anda tentu saja dapat menggunakan $ ("body"). Append (), tetapi kemudian Anda tidak dapat lagi melakukan debug dengan benar.
CATATAN: Anda harus menggunakan ini hanya saat halaman dimuat, jika tidak, Anda mendapatkan layar kosong. Dengan kata lain, selalu tempatkan ini sebelum / di luar dokumen . Sudah . Saya belum diuji menggunakan ini setelah halaman dimuat dalam acara klik atau semacamnya, tapi saya cukup yakin itu akan gagal.
Saya menyukai gagasan memperluas jQuery, tetapi jelas Anda tidak perlu melakukannya.
Sebelum menelepon
document.writeln
, ini memeriksa untuk memastikan skrip belum memuat dengan mengevaluasi semua elemen skrip.Saya berasumsi bahwa skrip tidak sepenuhnya dieksekusi sampai
document.ready
acaranya telah dieksekusi. (Saya tahu menggunakandocument.ready
tidak diperlukan, tetapi banyak orang menggunakannya, dan menangani ini adalah perlindungan.)Ketika file-file tambahan dimuat,
document.ready
callback akan dieksekusi dalam urutan yang salah. Untuk mengatasi ini ketika skrip benar-benar dimuat, skrip yang mengimpornya diimpor kembali sendiri dan eksekusi dihentikan. Ini menyebabkan file asal sekarang memilikidocument.ready
callback yang dieksekusi setelah skrip apa pun yang diimpornya.Alih-alih pendekatan ini, Anda bisa mencoba memodifikasi jQuery
readyList
, tetapi ini sepertinya solusi yang lebih buruk.Larutan:
Pemakaian:
File3:
File2:
File1:
sumber
Ada beberapa cara untuk mengimplementasikan modul dalam Javascript, Berikut adalah 2 yang paling populer:
Modul ES6
Browser belum mendukung sistem moduling ini sehingga agar Anda dapat menggunakan sintaks ini, Anda harus menggunakan bundler seperti webpack. Lagi pula, menggunakan bundler lebih baik karena ini dapat menggabungkan semua file Anda yang berbeda menjadi satu (atau beberapa pasangan) file. Ini akan melayani file-file dari server ke klien lebih cepat karena setiap permintaan HTTP memiliki beberapa overhead terkait yang menyertainya. Jadi dengan mengurangi permintaan HTTP secara keseluruhan, kami meningkatkan kinerjanya. Berikut adalah contoh modul ES6:
CommonJS (digunakan dalam NodeJS)
Sistem moduling ini digunakan di NodeJS. Anda pada dasarnya menambahkan ekspor Anda ke objek yang disebut
module.exports
. Anda kemudian dapat mengakses objek ini melalui arequire('modulePath')
. Penting di sini adalah untuk menyadari bahwa modul-modul ini sedang di-cache, jadi jika Andarequire()
modul tertentu dua kali akan mengembalikan modul yang sudah dibuat.sumber
Saya sampai pada pertanyaan ini karena saya sedang mencari cara sederhana untuk memelihara koleksi plugin JavaScript yang berguna. Setelah melihat beberapa solusi di sini, saya datang dengan ini:
Siapkan file yang disebut "plugins.js" (atau extensions.js atau apa pun yang Anda inginkan). Simpan file plugin Anda bersama dengan satu file master itu.
plugins.js akan memiliki array bernama
pluginNames[]
yang akan kita iterateeach()
, kemudian tambahkan<script>
tag ke kepala untuk setiap plugin<script src="js/plugins/plugins.js"></script>
TAPI:
Meskipun semua plugin dimasukkan ke tag kepala seperti seharusnya, mereka tidak selalu dijalankan oleh browser saat Anda mengklik halaman atau menyegarkan.
Saya menemukan ini lebih dapat diandalkan untuk hanya menulis tag skrip di PHP. Anda hanya perlu menulisnya sekali dan itu sama artinya dengan memanggil plugin menggunakan JavaScript.
sumber