详解export default与require和exports,export区别与联系
还在为module.exports、exports、export和export default,import和require区别与联系发愁吗,这一篇基本就够了!
一、首先搞清楚一个基本问题:
module.exports和exports是属于CommonJS模块规范!(不清楚commonjs?大神请这边逛一逛commonjs规范)
export和export default是属于ES6语法(不清楚ES6?大神请这边逛一逛ES6模块)!
同样import和require分别属于ES6和CommonJS!
二、知道属于哪一块的语法了还有一个明确点:
module.exports和exports、export和export default都是导出模块;
import和require则是导入模块。
所以现在就不要弄混了,module.exports导出对应require导入,export导出对应import导入。
喂!等等,怎么才说到module.exports导出对应require导入,export导出对应import导入,那还有exports和export default呢!?那我们继续。
三、module.exports和exports的区别与联系
讲到这里就不得不稍微提一下模块化:
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;
上面代码通过module.exports
输出变量x
和函数addX
。
require
方法用于加载模块。
var example = require('./example.js');console.log(example.x); // 5console.log(example.addX(1)); // 6
看了刚刚这段commonjs规范上面的介绍可以知道以下区别与联系:
其实exports变量是指向module.exports,加载模块实际是加载该模块的module.exports
。这等同在每个模块头部,有一行这样的命令。
var exports = module.exports;
于是我们可以直接在 exports 对象上添加方法,表示对外输出的接口,如同在module.exports上添加一样。注意,不能直接将exports变量指向一个值,因为这样等于切断了exports与module.exports的联系。
三、export和export default的区别与联系
模块功能主要由:export
和import构成
。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">'Miel'<span class="token punctuation">;<span class="token keyword">var name <span class="token operator">= <span class="token string">'Jack'<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>
使用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">'./testA'<span class="token punctuation">;<br/></span></span></span></span></span></span></span></code>
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">'foo'<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>
// 或者写成function foo() { console.log('foo');} export default foo;
<code class=" javascript"><span class="token comment">// import-default.js import customName from <span class="token string">'./export-default'<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"> // 'foo'<br/><br/></span></span></span></span></span></span></span></span></code>
下面比较一下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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



'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

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 .

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 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.

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.

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 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.

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
