gpt4 book ai didi

javascript - export const foo、export default foo 和 module.exports = foo 的区别

转载 作者:IT老高 更新时间:2023-10-28 22:04:24 42 4
gpt4 key购买 nike

我真的很困惑:

  1. export const foo
  2. 导出默认 foo
  3. module.exports = foo;

我知道这些是非常基本的,但有人可以区分并向我解释这些。我真的很想明白。

最佳答案

让我们一一来看。

导出常量

 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 属性导入到名为 localFoo 的变量中。第二个将模块的 foo 属性导入到 foo 命名变量中。


导出默认值

export default foo

这也是 ES6 语法,表示您还希望导出变量 foo 的值,并且希望它是 default 导出值,因此如果有人导入只是模块而不是模块的任何属性,这是他们将获得的变量。每个模块只能有一个 default 导出。

在内部,默认导出实际上只是一个命名导出,并指定了特殊名称 default:

import localVar from 'myLib';

这将从 myLib 获取 default 导出并将其值分配给名为 localVar 的本地声明变量。以上是对此的简写:

import { default as localVar } from 'lib';

因此,default 导出仅允许您为某个特定导出使用快捷方式导入。 ES6 导入/导出语法旨在使默认导入/导出的语法尽可能简短。但是,出于显而易见的原因,每个模块只有一个默认属性。


module.exports

// inside of myModule
module.exports = foo;

这是用于导出变量 foo 值的 node.js 语法,您将在顶层导出它。当有人使用这个模块时:

let x = require('myModule');
console.log(x); // will show the value of `foo` from the previous module

这不是 ES6 语法,而是使用 node.js 中内置的 module.exportsrequire() 基础结构的常规 ES5 兼容语法。

关于javascript - export const foo、export default foo 和 module.exports = foo 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42461330/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com