Rumah hujung hadapan web tutorial js 详解export default与require和exports,export区别与联系

详解export default与require和exports,export区别与联系

Jun 22, 2017 am 11:53 AM
default export

还在为module.exports、exports、export和export default,import和require区别与联系发愁吗,这一篇基本就够了!

一、首先搞清楚一个基本问题:

module.exportsexports是属于CommonJS模块规范!(不清楚commonjs?大神请这边逛一逛commonjs规范)

exportexport default是属于ES6语法(不清楚ES6?大神请这边逛一逛ES6模块)

同样importrequire分别属于ES6和CommonJS!

二、知道属于哪一块的语法了还有一个明确点:

module.exportsexports、exportexport default都是导出模块;

importrequire则是导入模块。

所以现在就不要弄混了,module.exports导出对应require导入,export导出对应import导入。

喂!等等,怎么才说到module.exports导出对应require导入,export导出对应import导入,那还有exports和export default呢!?那我们继续。

三、module.exportsexports的区别与联系

讲到这里就不得不稍微提一下模块化:

Node应用由模块组成,采用CommonJS模块规范。

根据这个规范,每个文件就是一个模块,有自己的作用域。在一个文件里面定义的变量、函数、类,都是私有的,对其他文件不可见。

CommonJS规范规定,每个模块内部,module变量代表当前模块。这个变量是一个对象,它的exports属性(即module.exports)是对外的接口。加载某个模块,其实是加载该模块的module.exports属性。

var x = 5;var addX = function (value) {  return value + x;};module.exports.x = x;module.exports.addX = addX;
Salin selepas log masuk

上面代码通过module.exports输出变量x和函数addX

require方法用于加载模块。

var example = require('./example.js');console.log(example.x); // 5console.log(example.addX(1)); // 6
Salin selepas log masuk

看了刚刚这段commonjs规范上面的介绍可以知道以下区别与联系:

其实exports变量是指向module.exports,加载模块实际是加载该模块的module.exports。这等同在每个模块头部,有一行这样的命令。

var exports = module.exports;
Salin selepas log masuk

于是我们可以直接在 exports 对象上添加方法,表示对外输出的接口,如同在module.exports上添加一样。注意,不能直接将exports变量指向一个值,因为这样等于切断了exports与module.exports的联系。

三、exportexport default的区别与联系

模块功能主要由:exportimport构成export导出模块的对外接口,import命令导入其他模块暴露的接口。

export其实和export default就是写法上面有点差别,一个是导出一个个单独接口,一个是默认导出一个整体接口。使用import命令的时候,用户需要知道所要加载的变量名或函数名,否则无法加载。这里就有一个简单写法不用去知道有哪些具体的暴露接口名,就用export default命令,为模块指定默认输出。

export可以这样写

<code class=" javascript"><span class="token comment">// testA.js<span class="token keyword">var f <span class="token operator">= <span class="token string">&#39;Miel&#39;<span class="token punctuation">;<span class="token keyword">var name <span class="token operator">= <span class="token string">&#39;Jack&#39;<span class="token punctuation">;<span class="token keyword">var data<span class="token operator">= <span class="token number">1988<span class="token punctuation">;

export <span class="token punctuation">{f<span class="token punctuation">, name<span class="token punctuation">, data<span class="token punctuation">}<span class="token punctuation">;<br/></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code>
Salin selepas log masuk

使用export命令定义了模块的对外接口以后,其他 JS 文件就可以通过import命令加载这个模块。

<code class=" javascript"><span class="token comment">// main.js
import <span class="token punctuation">{</span></span></code><code class=" javascript"><span class="token comment"><span class="token keyword"><span class="token operator"><span class="token string"><span class="token punctuation"><span class="token keyword"><span class="token operator"><span class="token string"><span class="token punctuation"><span class="token keyword"><span class="token operator"><span class="token number"><span class="token punctuation"><span class="token punctuation">f<span class="token punctuation">, name<span class="token punctuation">, data</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code><code class=" javascript"><span class="token comment"><span class="token punctuation"><span class="token punctuation"><span class="token punctuation"><span class="token punctuation">} from <span class="token string">&#39;./testA&#39;<span class="token punctuation">;<br/></span></span></span></span></span></span></span></code>
Salin selepas log masuk

export default可以这样写

<code class=" javascript"><span class="token comment">// export-default.js
export default <span class="token keyword">function <span class="token punctuation">(<span class="token punctuation">) <span class="token punctuation">{
  console<span class="token punctuation">.<span class="token function">log<span class="token punctuation">(<span class="token string">&#39;foo&#39;<span class="token punctuation">)<span class="token punctuation">;<span class="token punctuation">}<br/></span></span></span></span></span></span></span></span></span></span></span></span></code>
Salin selepas log masuk
// 或者写成function foo() {
  console.log(&#39;foo&#39;);}
export default foo;
Salin selepas log masuk
<code class=" javascript"><span class="token comment">// import-default.js
import customName from <span class="token string">&#39;./export-default&#39;<span class="token punctuation">;<span class="token function">customName<span class="token punctuation">(<span class="token punctuation">)<span class="token punctuation">;<span class="token comment"> // &#39;foo&#39;<br/><br/></span></span></span></span></span></span></span></span></code>
Salin selepas log masuk

下面比较一下export default和export 输出。

可以看到第一组是使用,语句不需要使用大括号;第二组使用,对应的语句需要使用大括号,一个模块只能有一个默认输出,所以只能使用一次。

<strong>四、import和require</strong><strong>的区别与联系</strong>

看了上面其实已经清楚了,import和require是分别属于ES6和CommonJS的两种导入模块的语法而已。

Atas ialah kandungan terperinci 详解export default与require和exports,export区别与联系. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

'Modul yang diminta tidak menyediakan eksport bernama' Ralat muncul dalam Vue Cli - bagaimana untuk menyelesaikannya? 'Modul yang diminta tidak menyediakan eksport bernama' Ralat muncul dalam Vue Cli - bagaimana untuk menyelesaikannya? Aug 20, 2023 pm 07:25 PM

'Therequestedmoduledoesnotprovideanexportnamed'Ralat muncul dalam VueCli – bagaimana untuk menyelesaikannya? Semasa pembangunan projek Vue, kami mungkin menghadapi mesej ralat 'Therequestedmoduledoesnotprovideanexportnamed'. Mesej ralat ini biasanya muncul apabila memperkenalkan komponen pihak ketiga

Bagaimana untuk mengkonfigurasi gerbang lalai Bagaimana untuk mengkonfigurasi gerbang lalai Dec 07, 2023 am 11:34 AM

Langkah-langkah untuk mengkonfigurasi gateway lalai: 1. Tentukan alamat IP penghala 2. Buka antara muka konfigurasi rangkaian komputer 3. Konfigurasi sambungan rangkaian 5. Masukkan alamat IP dan subnet mask; . Konfigurasi gerbang lalai ;7. Pengenalan terperinci: 1. Tentukan alamat IP penghala Alamat gerbang lalai biasanya alamat IP penghala Anda boleh mencari alamat IP penghala di belakang penghala atau dalam manual pengguna .

Konfigurasi get laluan lalai Konfigurasi get laluan lalai Dec 07, 2023 pm 03:02 PM

Langkah-langkah untuk mengkonfigurasi gateway lalai: 1. Buka panel kawalan 2. Pilih Rangkaian dan Internet 3. Konfigurasikan sambungan rangkaian; peranti. Pengenalan terperinci: 1. Buka Panel Kawalan, dalam sistem Windows, klik menu Mula, pilih "Panel Kawalan" 2. Pilih Rangkaian dan Internet, dalam Panel Kawalan, pilih "Rangkaian dan Internet" 3. Konfigurasikan sambungan rangkaian, dan lain-lain.

Perbezaan antara eksport dan eksport lalai Perbezaan antara eksport dan eksport lalai Oct 12, 2023 am 10:24 AM

Perbezaan antara eksport dan eksport lalai ialah kata kunci eksport digunakan untuk mengeksport satu atau lebih pembolehubah, fungsi atau kelas, manakala kata kunci lalai eksport digunakan untuk mengeksport pembolehubah, fungsi atau kelas lalai. Dalam modul lain, anda boleh menggunakan kata kunci import untuk mengimport pembolehubah, fungsi atau kelas yang dieksport ini.

Bagaimana untuk mengkonfigurasi gerbang lalai Bagaimana untuk mengkonfigurasi gerbang lalai Dec 07, 2023 pm 02:56 PM

Langkah-langkah untuk mengkonfigurasi gerbang lalai: 1. Memahami persekitaran rangkaian 2. Dapatkan alamat IP penghala 3. Log masuk ke antara muka pengurusan penghala 4. Cari dan konfigurasikan tetapan port WAN; Simpan tetapan dan keluar 7. Periksa sama ada sambungan rangkaian adalah normal. Mengkonfigurasi get laluan lalai ialah langkah penting dalam persediaan rangkaian Ia menentukan penghala yang digunakan oleh hos untuk mengakses Internet.

Analisis mendalam tentang penggunaan lalai PHP: mendedahkan rahsianya untuk anda Analisis mendalam tentang penggunaan lalai PHP: mendedahkan rahsianya untuk anda Mar 23, 2024 am 08:06 AM

PHP ialah bahasa skrip yang digunakan secara meluas dalam bidang pembangunan web Pembangun telah mendapat banyak manfaat daripada fleksibiliti dan fungsi yang berkuasa. Dalam PHP, menetapkan nilai lalai adalah operasi biasa, dan kata kunci lalai memainkan peranan penting. Artikel ini akan menganalisis secara mendalam penggunaan lalai dalam PHP, mendedahkan rahsianya untuk anda dan menggabungkannya dengan contoh kod khusus untuk membantu pembaca memahami dengan lebih baik. 1. Nilai parameter lalai Dalam PHP, kita boleh menetapkan nilai lalai untuk parameter fungsi untuk mengelakkan

Adakah kata kunci Java mengandungi 'lalai'? Adakah kata kunci Java mengandungi 'lalai'? Apr 23, 2023 pm 01:13 PM

Adakah lalai kata kunci java? Jawapan: lalai ialah kata kunci dalam java8, juga dipanggil "virtualextensionmethods". Terjemahan Cina dipanggil "kaedah sambungan maya", yang mengandungi beberapa kaedah penggunaan lalai dalam antara muka. Apabila antara muka dilanjutkan, ia tidak akan bercanggah dengan kod kelas pelaksanaan yang berkaitan dengan antara muka. Pengenalan kepada lalai dan java: 1. Antara muka sebelumnya ialah pedang bermata dua, yang boleh diorientasikan kepada abstraksi tetapi tidak berorientasikan kepada pengaturcaraan tertentu. 2. Kelemahan ini ialah apabila anda perlu mengubah suai antara muka, anda mesti terlebih dahulu mengubah suai semua kelas yang melaksanakan antara muka. 3. Apabila anda tidak boleh menambah kaedah baharu pada antara muka, ia tidak akan menjejaskan paparan sedia ada, jadi kaedah lalai ditambah untuk menyelesaikan masalah untuk semua orang.

Bagaimana untuk melaksanakan lalai kekangan lalai MySQL dan kekangan sifar isian sifar Bagaimana untuk melaksanakan lalai kekangan lalai MySQL dan kekangan sifar isian sifar May 31, 2023 pm 05:10 PM

Kekangan lalai Kekangan nilai lalai MySQL digunakan untuk menentukan nilai lalai lajur tertentu. Tambah kaedah kekangan lalai 1: kaedah lalai; kaedah 2: nama jadual boleh diubah suai jenis nama lajur nilai lalai createtablet_user10(idint,namevarchar(20),addressvarchar(20)default'Beijing'--nyatakan kekangan lalai);--jadual boleh ubah; nama ubah suai nama lajur jenis nilai lalai createtablet_user11(idint,namevarchar(20),addr

See all articles