首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >`Object.defineProperty的目的是什么(导出,"__esModule",{ value:!0 })?

`Object.defineProperty的目的是什么(导出,"__esModule",{ value:!0 })?
EN

Stack Overflow用户
提问于 2018-06-20 08:31:23
回答 2查看 40.1K关注 0票数 57

为了理解模块结构,我阅读了最小化tensorflow.js文件Tensorflow.js是用打字本写的,上面的文件(链接)可能是转写的结果。

无论如何,我理解这个模块是用IIEF模式为UMD模块格式编写的。但是,在工厂函数的末尾,存在Object.defineProperty(exports, "__esModule", { value: !0 })。我知道语法的意思。但我不知道这个代码的目的。据我搜索,这段代码似乎将模块标记为ES Module。但对我来说还不够清楚。下面是一些问题。

  1. 这段代码似乎是可移动的。是真的吗?
  2. 有使用这种财产的案例吗?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-15 11:01:15

它有助于正确导入CommonJS/AMD/UMD模块格式的默认导出。

CommonJS/AMD/UMD模块的默认导入(即从“foo”导入d)等效于

代码语言:javascript
复制
const d = require("foo").default

但是,今天可用的大多数CommonJS/AMD/UMD模块都没有默认的导出,因此这种导入模式实际上无法用于导入非ES模块(即CommonJS/AMD/UMD)。例如

代码语言:javascript
复制
import fs from "fs" 

代码语言:javascript
复制
import express from "express" 

是不允许的。

为了允许CommonJS/AMD/UMD中的默认导入(例如,从“fs”导入fs),类型记录编译器添加__esModule标志,并在一个转接代码(从ES6到CommonJS)中检查它。它通过使用__importDefault助手函数(检查__esModule标志)导入默认导出。

代码语言:javascript
复制
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
}
exports.__esModule = true;
var bar_1 = __importDefault(require("bar"));
票数 58
EN

Stack Overflow用户

发布于 2022-03-29 20:02:58

马克西姆回答得很好。

打字稿操场中打开/关闭https://www.typescriptlang.org/tsconfig#esModuleInterop标志也会有帮助。

关闭

代码语言:javascript
复制
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const foo_1 = require("foo");
console.log(foo_1.default);

在……上面

代码语言:javascript
复制
"use strict";
+ var __importDefault = (this && this.__importDefault) || function (mod) {
+    return (mod && mod.__esModule) ? mod : { "default": mod };
+ };
Object.defineProperty(exports, "__esModule", { value: true });
- const foo_1 = require("foo");
+ const foo_1 = __importDefault(require("foo"));
console.log(foo_1.default);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50943704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档