Я действительно смущен:
-
export const foo
-
export default foo
-
module.exports = foo;
Я знаю, что они очень простые, но кто-то может продифференцироваться и объяснять это мне. Я действительно хочу понять.
Я действительно смущен:
export const foo
export default foo
module.exports = foo;
Я знаю, что они очень простые, но кто-то может продифференцироваться и объяснять это мне. Я действительно хочу понять.
Возьмем каждый из них один за другим.
экспорт const
export const foo
Это синтаксис экспорта ES6 для именованного экспорта. У вас может быть много названных экспонатов. В нем говорится, что вы хотите экспортировать значение переменной foo
и вы также объявляете, что этот символ является const
в этом модуле.
Вы не можете использовать export const foo
самостоятельно, как вы можете использовать const foo;
все само по себе. Вместо этого вам нужно было бы присвоить ему что-то:
export const foo = 12;
const
применяется только в пределах самого модуля. Это не влияет на то, что кто-то может сделать со значением, как только они импортируют значение из модуля на другом конце, потому что на другом конце (где его импортировано) это значение копируется в другую переменную. Если эта переменная создается с помощью инструкции import, она автоматически const
на стороне импорта (вы не можете назначить ей) независимо от того, что было объявлено на стороне экспорта.
Это может быть импортировано как одно из следующих:
import {foo as localFoo} from 'lib';
import {foo} from 'lib';
Первый импортирует свойство foo
модуля в переменную named localFoo
. Второй импортирует свойство foo
модуля в переменную с именем foo
.
экспорт по умолчанию
export default foo
Это также синтаксис ES6 и говорит, что вы также хотите экспортировать значение переменной foo
и вы хотите, чтобы это было default
экспорта по default
поэтому, если кто-то импортирует только модуль, а не какие-либо свойства модуля, это переменная, которую они будут получить. Вы можете иметь только один экспорт по default
каждого модуля.
По умолчанию экспорт по умолчанию - это просто именованный экспорт со специальным назначением по default
:
import localVar from 'myLib';
Это получит экспорт по default
из myLib и присвойте ему значение локально объявленной переменной с именем localVar
. Вышеприведенное является сокращением для этого:
import { default as localVar } from 'lib';
Таким образом, экспорт по default
просто позволяет вам импортировать ярлык для одного конкретного экспорта. Синтаксис импорта/экспорта ES6 был разработан, чтобы сделать синтаксис максимально кратким для импорта/экспорта по умолчанию. Но по очевидным причинам для каждого модуля есть только одно свойство по умолчанию.
module.exports
// inside of myModule
module.exports = foo;
Это синтаксис node.js для экспорта значения переменной foo
и вы экспортируете его на верхнем уровне. Когда кто-то использует этот модуль:
let x = require('myModule');
console.log(x); // will show the value of 'foo' from the previous module
Это не синтаксис ES6, а регулярный ES5-совместимый синтаксис с использованием module.exports
и require()
встроенной в node.js.
Оператор экспорта используется для экспорта функций, объектов или примитивов из заданного файла (или модуля).
Именованный экспорт Это именованный экспорт в ES6 javascript
export const foo
который импортируется как:
import { foo } from 'path'
Экспорт по умолчанию Это экспорт по умолчанию (его можно импортировать с использованием любого имени)
export default foo
который импортируется так:
import bar from 'path'
Это commonjs-экспорт, который используется в программах nodejs.
module.exports = foo;
который импортируется как:
var foo = require('path')
Для получения дополнительной информации
export const foo: экспорт констант (ES6) экспорт по умолчанию foo: экспорт объекта (ES6)
Вышеуказанные утверждения являются реализацией ECMA Script 2015 (ака ES6).
В обычном файле ES6 JS можно экспортировать любой объект (переменную) или константы. Обратите внимание, что вы не можете изменить постоянную ссылку, хотя внутренняя структура может быть изменена (странно).
В ES6 в модуле (файл сценария) может быть несколько экспонатов. который может быть добавлен в сценарий вызова как
import {Obj1, Obj2} from module_file
для экспорта по умолчанию. В модуле может быть только один экспорт по умолчанию. и при импорте, когда точные имена не определены, по умолчанию выбрано значение по умолчанию.
module.exports = foo; является более старой версией, и она аналогична экспортной умолчанию. кроме импортированного с требованием, вместо импорта
для получения дополнительной информации см. https://developer.mozilla.org/en/docs/web/javascript/reference/statements/export