Rumah > hujung hadapan web > Soal Jawab bahagian hadapan > Adakah nilai keluaran oleh modul es6 disalin?

Adakah nilai keluaran oleh modul es6 disalin?

青灯夜游
Lepaskan: 2022-10-18 15:29:56
asal
1188 orang telah melayarinya

Tidak, modul ES6 mengeluarkan rujukan kepada nilai, manakala modul CommonJS mengeluarkan salinan nilai. Dalam modul ES6, apabila enjin JS menganalisis skrip secara statik dan menemui import arahan pemuatan modul, ia akan menjana rujukan baca sahaja apabila skrip benar-benar dilaksanakan, ia akan pergi ke modul yang dimuatkan berdasarkan baca sahaja ini rujukan. Modul ES6 ialah rujukan dinamik Modul ES6 tidak menyimpan hasil yang sedang dijalankan, tetapi secara dinamik memperoleh nilai daripada modul yang dimuatkan, dan pembolehubah sentiasa terikat pada modul di mana ia berada.

Adakah nilai keluaran oleh modul es6 disalin?

Persekitaran pengendalian tutorial ini: sistem Windows 7, ECMAScript versi 6 , komputer Dell G3.

Pemuatan penyemak imbas

Secara lalai, penyemak imbas memuatkan skrip JavaScript secara serentak, iaitu apabila enjin pemaparan bertemu Ia akan berhenti apabila ia mencapai teg <script>, tunggu sehingga skrip dilaksanakan, dan kemudian teruskan untuk memaparkan ke bawah.

Jika ia adalah skrip luaran, masa muat turun skrip juga mesti ditambah.

Jika skrip bersaiz besar, ia akan mengambil masa yang lama untuk memuat turun dan melaksanakan, sekali gus menyebabkan penyemak imbas tersumbat, dan pengguna akan merasakan penyemak imbas "terperangkap" tanpa sebarang respons. Ini jelas merupakan pengalaman yang sangat buruk, jadi penyemak imbas membenarkan skrip dimuatkan secara tak segerak Berikut ialah dua sintaks untuk pemuatan tak segerak. Teg

<script src="path/to/myModule.js" defer></script>
<script src="path/to/myModule.js" async></script>
Salin selepas log masuk

<script> menghidupkan atribut tangguh atau tak segerak dan skrip akan dimuatkan secara tidak segerak. Apabila enjin rendering menemui baris arahan ini, ia akan mula memuat turun skrip luaran, tetapi tidak akan menunggu untuk dimuat turun dan dilaksanakan, tetapi akan terus melaksanakan arahan berikut .

  • deferIa tidak akan dilaksanakan sehingga keseluruhan halaman dipaparkan secara normal dalam ingatan (struktur DOM dijana sepenuhnya dan skrip lain dilaksanakan
  • asyncSekali dimuat turun Apabila skrip selesai, enjin rendering akan mengganggu rendering dan meneruskan rendering selepas melaksanakan skrip ini.

Dalam satu ayat, defer bermaksud "laksanakan selepas rendering", async bermaksud "laksanakan selepas memuat turun" . Selain itu, jika terdapat berbilang skrip penangguhan, ia akan dimuatkan mengikut susunan yang dipaparkan pada halaman, tetapi berbilang skrip async tidak dapat menjamin urutan pemuatan.

Pelayar memuatkan modul ES6 dan juga menggunakan tag <script>, tetapi atribut type="module" mesti ditambah. Untuk type="module" dengan <script>, penyemak imbas akan memuatkan secara tak segerak dan tidak akan menyekat penyemak imbas, iaitu, tunggu sehingga keseluruhan halaman dipaparkan, dan kemudian laksanakan skrip modul , yang bersamaan dengan Selepas membuka

<script type="module" src="./foo.js"></script>
Salin selepas log masuk

, jika halaman web mempunyai berbilang

Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan