Baru-baru ini saya membaca pengenalan ES6 Ruan Yifeng. Saya tidak begitu memahami kawasan yang dibulatkan dalam gambar di bawah.
Artikel tersebut menyebut bahawa akhiran .js tidak boleh ditinggalkan.
Tetapi tulisan berikut muncul di bawah:
// lib.js
export let counter = 3;
export function incCounter() {
counter++;
}
// main.js
import { counter, incCounter } from './lib';
console.log(counter); // 3
incCounter();
console.log(counter); // 4
Siniimport { counter, incCounter } from './lib';
不是省略了.js
Ada imbuhan?
Berbanding dengan beberapa kod tindak balas yang ditulis oleh orang lain:
import React from "react";
import { render } from "react-dom";
import { Provider } from "react-redux";
import App from "./containers/App.jsx";
import Store from "./store/Store";
import React from "react";
这里也省略了.js
后缀,但是import App from "./containers/App.jsx";
Tetapi nama akhiran telah ditulis sepenuhnya.
Sila minta beberapa pakar untuk menjawab soalan anda: Dalam keadaan apakah kita harus menulis .js
jenis akhiran ini selepas import..daripada, dan bila kita tidak boleh menulis ? Atau adakah kerana orang lain mengkonfigurasi sesuatu dengan alat jadi tidak perlu menulis nama akhiran.
Terima kasih banyak-banyak! ! !
Sila bezakan antara penghuraian asli pelayar dan prapemprosesan alat pembungkusan dahulu.
Pelayar asli
Pelayar memerlukan akhiran semasa menghuraikan pernyataan import Untuk lebih tepat, penyemak imbas mengecam rentetan selepas import sebagai alamat URL. Ini sama seperti menulis
Alat pembungkusanbackground-image: url(./path/to/a.jpg)
dalam fail CSS anda. Penyemak imbas akan mendapatkan alamat URL sumber bergantung berdasarkan fail semasa dan BaseURL halaman, dan kemudian menghantar permintaan HTTP ke pelayan. Akhiran tidak begitu penting dalam alamat URL permintaan HTTP Penyemak imbas mengenali Jenis Kandungan dalam pengepala respons HTTP selagi pelayan sumber yang mengehos js atau imej anda boleh bertindak balas dengan betul kepada permintaan HTTP penyemak imbas. anda boleh mentakrifkannya secara santai. ia seperti yang dipersetujui), atau bahkan menipu.direktori webpack...
Ringkasan:__webpack_require__
, 浏览器最后加载的是打包后的 bundle 文件,并没有执行 import 语句(大部分浏览器至今尚未实现import)。 这个时候,我们写的 import 后面到底要不要后缀,全凭工具自己定义规则啊,只要工具在编译打包时能找到被依赖模块。比如webpack可以设定先找.ts
如果没有再找.es
再找.js
, 如果是一个文件夹,就看文件夹里有没有index.js
,甚至从node_modules
Pendapat peribadi:
Contohnya: react, react-dom, vue, dsb. semuanya dikeluarkan oleh penyumbang
NPM package
(iaitu, modul dibungkus selepas dipasang menggunakan NPM, ia akan disimpan dalam direktori node_modules modul di atasFail JS bukan modul, (apa yang dikatakan di sini tidak lengkap)
disediakan dalam ES6, (gunakan import dan eksport untuk menentukan modul)
模块化
.js
不能省略,主要是为了可读,以及区分。假设你目录下有个自己写的模块test
,还有一个自己写的js文件test.js
。模块是以文件夹形式存在的,然后你用import './test'
,你无法确定你加载的是模块还是test.js
(Walaupun, dalam ES6, fail JS juga dianggap sebagai modul).Kod ini
import React from "react"
,并不是省略了.js
,而是直接省略了/index.js
。这是一个由npm安装的包,在node_modules
文件夹下面,其实它导入的是node_modulesreactindex.js
,是整个包的入口文件,然后由index.js
再去加载react
需要用到的其他子js
fail yang anda lihatPerhatikan bahawa dalam node.js,
import
语法,所以需要通过require()
引入包,用module.exports
和exports
bahagian ES6 yang boleh diimport daripada pakej terdedah belum disokong lagi.Sila lihat dokumentasi MDN untuk butiran