1. В модуле может быть только один экспорт по умолчанию, но может быть более одного экспорта
//model.js
let e1='export 1';
let e2='export 2';
let e3='export 3';
let e4='export 4';
export {e2};
export {e3};
export {e4};
export default e1;
//使用模块的index.js
import e1, {e2, e3, e4} from "./model";
console.log(e1);
console.log(e2);
console.log(e3);
console.log(e4);
#index.js运行结果
export 1
export 2
export 3
export 4
если в
model.js
добавить еще одинexport default
//model.js
let e5='export e5';
export default e5
#运行结果
SyntaxError: .../model.js:
Only one default export allowed per module. (10:0)
9 | let e5='export e5';
> 10 | export default e5
2. Пройдите в модульexport
Экспортируемое (свойство или метод) можно изменить, но черезexport default
Экспорт не может быть изменен
//model.js
let e1='export 1';
let e2='export 2';
export {e2};
export default e1;
e1='export 1 modified';
e2='export 2 modified';
//index.js
import e1, {e2}from "./model";
console.log(e1);
console.log(e2);
#index.js执行结果
export 1
export 2 modified
Сначала вам нужно знать:
- Модули в ES6 проходят
export
иexport default
Открытые свойства или методы не являются обычными присваиваниями или ссылками, они аналогичны идентификаторам, определенным внутри модуля.указательпривязка. - Для экспортируемого свойства или метода не имеет значения, куда оно экспортировано, и не имеет значения, когда оно импортировано, важно следующее: текущее значение при доступе к этой привязке.
//model.js let e1='export 1'; let e2='export 2'; export {e2}; export default e1; e1='export 1 modified'; setTimeout(()=>{ e2='export 2 modified'; },1000);
//index.js import e1, {e2}from "./model"; console.log(e1); console.log(e2); setTimeout(()=>{ console.log('later',e2) },5000);
//index.js执行结果 export 1 export 2 later export 2 modified
но,export
заключается в привязке к идентификатору, изменении значения идентификатора, затем доступе к привязке и получении нового значения;export default
Привязывается значение, на которое указывает идентификатор. Если идентификатор изменить, чтобы он указывал на другое значение, связанное значение не изменится.
Если вы хотите изменить экспортируемое значение по умолчанию, вы можете использоватьexport {e1 as default}
Этот метод.
//model.js修改
export {e1 as default}
#index.js执行结果
export 1 modified
export 2
later export 2 modified
3. export default
иexport
Синтаксические различия.
export var e1='...'
является юридическим заявлением, ноexport default var e2='...'
незаконно(let
иconst
то же).export default
Экспорт идентификаторов можно добавить напрямую, например.export default e2
;export
Если вы хотите экспортировать уже объявленный индикатор, вы должны использовать{}
,Напримерexport {e1}
, примечание: здесь{}
вместо объявления объекта.
Наконец: свойства или методы, экспортируемые модулем, могут быть изменены только внутри модуля, а не в том месте, где модуль импортируется.