为什么Webpack的DefinePlugin要求我们将所有内容都包装在JSON.stringify中?

2024-03-21

new webpack.DefinePlugin({
    PRODUCTION: JSON.stringify(true),
    VERSION: JSON.stringify("5fa3b9"),
    BROWSER_SUPPORTS_HTML5: true,
    TWO: "1+1",
    "typeof window": JSON.stringify("object")
})

https://github.com/webpack/docs/wiki/list-of-plugins#defineplugin https://github.com/webpack/docs/wiki/list-of-plugins#defineplugin

这看起来非常不寻常、不必要并且“容易出现开发错误”。

是类型检查问题吗?


答案如下:

  • 如果该值是字符串,它将用作代码片段。
  • 如果该值不是字符串,它将被字符串化(包括函数)。

IE。字符串的值被插入到源代码中verbatim.

Passing JSON.stringify(true)或路过true直接是相同的,因为非字符串值被转换为字符串。

然而,两者之间存在很大差异JSON.stringify('5fa3b9') and "5fa3b9":

假设你的代码是

if (version === VERSION)

then VERSION: JSON.stringify('5fa3b9')会导致

if (version === "5fa3b9")

but VERSION: "5fa3b9"会导致

if (version === 5fa3b9)

这是无效的代码。

请注意,由于该插件执行直接文本替换,因此赋予它的值必须包含字符串本身内部的实际引号。通常,这可以使用备用引号(例如““生产””)或使用 JSON.stringify('生产') 来完成。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么Webpack的DefinePlugin要求我们将所有内容都包装在JSON.stringify中? 的相关文章

  • onclick 函数上的 CSS 选择器

    有没有办法让CSS选择器onclick function 您可以在onclick https stackoverflow com questions 24365416 select element which have specific a
  • 如何使弹出窗口出现在我的鼠标进入悬停目标的位置?

    这是一个示例代码 用于显示我的按钮下方的弹出窗口 fn popover defaults extend fn tooltip defaults placement bottom content 现在我希望弹出窗口出现在光标移动的位置 不仅是
  • 循环内的局部变量会被垃圾收集吗?

    我想知道将循环内引用的任何变量放在循环外是否更有效 或者它们可以像函数内的变量一样被垃圾收集吗 var obj key val for var i 0 i lt 10 i console log obj or for var i 0 i l
  • 优化数据可视化 Web 应用程序的性能

    我正在重写 3 年前编写的数据可视化网络工具 从那时起 浏览器的 JavaScript 引擎变得更快 所以我正在考虑将部分工作从服务器转移到客户端 在页面上 数据在表格和地图 或图表 中可视化 它使用相同的数据 但以不同的方式 因此准备显示
  • 向 JS 计算器添加键盘支持时出现的问题

    我想为我的计算器添加键盘支持 当我用键盘按下操作 即 或 时 js将其视为数字 而不是操作 例如 当我通过点击计算 10 11 时 我将得到 21 作为结果 当我通过键盘输入时 我会得到 10 为什么会发生这种情况 是否可以改变它 div
  • Twitter Bootstrap 轮播在加载时自动播放

    使用twitter bootstrap框架 如何调用轮播来 自动滑动 这意味着当页面加载时 轮播会自动滚动 我尝试过 javascript onLoad click 函数 a 下一个链接的 但这不起作用 你应该这样做Twitter Boot
  • Disqus 评论数始终为 0 条评论

    我想我已经按照通用代码的说明设置了 Disqus 问题是它总是说某个帖子有 0 条评论 拿这个帖子来说 http tx0rx0 com retropie and the raspberry pi http tx0rx0 com retrop
  • Strapi 未加载 Digital Ocean 上托管的现有 MongoDB 中的集合

    我正在使用 Strapi 创建一个新应用程序 并尝试将其与托管在 Digital Ocean 上的 MongoDB 连接 但不幸的是Strapi 无法从现有 MongoDB 获取集合 在这里 我提到我实现 Strapi 与现有 MongoD
  • 变量前面加双下划线

    我的节点代码中有以下代码片段 var fs require fs fs readdir dirname function err files console log files 为什么变量 dirname 有双下划线 我知道一个下划线是私有
  • 如何删除从 javascript var 转义的反斜杠?

    我有这个变量 var x div class Which is div class 但是我需要 div class abcdef 我怎样才能 unes cape 这个变量来删除所有转义字符 您可以通过正则表达式将反斜杠后跟引号替换为仅引号
  • FormData 中的 Blob 为 null

    我正在尝试通过远程 API 通过 ajax 在 android 中发送创建的照片 我在用着相机图片背景 https github com an rahulpandey cordova plugin camerapicturebackgrou
  • 使用 Javascript eval() 100% 安全吗?

    我正在编写一个生成 Javascript 代码的 PHP 库 Javascript 代码有许多名为component001 component002 etc 页面通过 AJAX 动态加载 我需要通过 URL 变量传递组件的名称 然后由脚本进
  • 当表格在 IE 中获得焦点时,表格滚动条会向上跳跃

    问题 我有一个table有包装的div with overflow y auto 一旦table获得焦点 滚动条向上跳 我怎样才能防止这种情况发生 我经历过这种行为IE9 不在 Chrome 中 请注意 我已添加tabindex到桌子上 以
  • 更改特定字符串的颜色

    有谁知道如果将特定单词输入文本区域 我如何更改它的颜色 例如 如果用户输入 你好我的朋友 它会动态地将 你好 更改为绿色 在google上花了很多时间 找不到任何相关的东西 谢谢 textareas 的设计目的不是选择性着色
  • 我可以在不使用 Jquery UI 的情况下获得 Jquery Pulsate Effect 吗?

    我遇到了由于某种原因无法使用 Jquery UI 的情况 我正在尝试在不使用 Jquery UI 的情况下获得 Jquery UI 脉冲效果 与此链接类似 http docs jquery com UI Effects Pulsate ht
  • D3.js - 具有多个环的圆环图

    以下示例显示了 D3 js 中的圆环图 是否可以向图表添加多个圆环 var dataset apples 53245 28479 19697 24037 40245 var width 460 height 300 radius Math
  • 从未使用 mimeType 初始化的 MediaRecorder 获取 mimeType

    我正在使用 MediaRecorder API 在页面上录制一些媒体 在我的 MediaRecorder 初始化中 我没有指定内容类型 因为我不需要任何特别的内容 浏览器可以选择它想要的 var mediaRecorder new Medi
  • 简单的颜色变化

    我正在创建一个用户界面 用户可以在其中更改页面的颜色值 我想要的是获取分配给其背景颜色的值并将其变亮一定程度 我只是想获得一条亮点线 而不必每次都制作新图像 示例 用户将背景颜色设置为 ECECEC 现在我希望某个元素边框变成 F4F4F4
  • ES6 Reflect API 的好处

    我一直在努力升级一些代码以使用 ES6 语法 我有以下代码行 delete this foo 我的 linter 提出了使用建议 Reflect deleteProperty this foo 您可以找到该方法的文档here https d
  • 将 Angular Web 组件 EventEmitter 监听到 javascript

    我在以下工具的帮助下创建了一个小型网络组件本文 https medium com IMM9O web components with angular d0205c9db08f使用角度元素 其中包括 Input and Output 我能够将

随机推荐

  • 在 Flask-SQLAlchemy 中隔离 py.test 数据库会话

    我正在尝试使用 Flask SQLAlchemy 构建 Flask 应用程序 我使用 pytest 来测试数据库 问题之一似乎是在不同测试之间创建隔离的数据库会话 我编写了一个最小的完整示例来突出问题 请注意test user schema
  • EF4 中的并发 - 如何有条件地创建实体

    我需要能够创建一个新的用户实体only if提供的电子邮件是唯一的 我以前总是通过执行一个简单的操作来处理这个问题if UserSet Any 在我之前AddToUserSet 然而 这不是一个并发解决方案 并且会在重负载下崩溃 我一直在研
  • 在android中渲染epub书?

    我尝试在 android pad 中显示 epub 书 我可以解析html和css 以显示书的内容和格式 也许书包含图片 看来我有两个选择 使用网络视图 编写一个客户视图 以便它可以渲染 html css 这似乎是一个非常复杂的任务 哪个是
  • CGContext 中的 alpha 像素数

    我有一个掩蔽CGContext有两种类型的像素 颜色和 Alpha 不透明和透明像素 如何计算上下文中 alpha 像素的百分比 我没有测试它 但这应该可以解决问题 只需将 ReportAlphaPercent 传递给 CGImageRef
  • Color.red 和 Color.RED 之间的区别

    定义之间的真正区别是什么setXxx Color red and setXxx Color RED 我在网上找到了以下解释 这都是关于命名约定的吗 Java最初定义了一些小写的颜色常量名称 这违反了常量使用大写的命名规则 它们在所有 Jav
  • 捕获子进程输出[重复]

    这个问题在这里已经有答案了 我了解到 在Python中执行命令时 我应该使用子进程 我想要实现的是通过 ffmpeg 对文件进行编码并观察程序输出 直到文件完成 Ffmpeg 将进度记录到 stderr 如果我尝试这样的事情 child s
  • 如何在 PHP 中从 Linkedin 公司 URL 获取公司 ID?

    我的 Linkedin 公司网址如下 http in linkedin com company abb ABB 有限公司的公司 ID 是277579 基本上您还可以通过以下方式联系 ABBhttp www linkedin com comp
  • 如何设置react-select中可以选择的最大项目数?

    我正在使用反应选择中的 CreatableSelect 组件 现在用户可以选择任意数量的项目 但我希望用户选择的项目不超过 5 个 如何限制可以选择的最大选项数
  • twilio 对话跟踪 ID

    我正在使用 twilio 创建一个聊天应用程序 但在跟踪多个用户之间的对话和多个对话时遇到问题 Example 对话 gt 用户 A 和用户 B 对话2 gt 用户A 和用户B 当用户A在对话2中向用户B发送消息时 当我收到用户A发来的短信
  • 如何每 X 分钟运行一次 cronjob?

    我正在 cronjob 中运行 PHP 脚本 我想每 5 分钟发送一次电子邮件 我当前的 crontab cronjob 10 usr bin php mydomain in cromail php gt dev null 2 gt 1 c
  • 将从 URL 输出的 JSON 保存到文件

    如何将 URL 输出的 JSON 保存到文件中 例如 来自 Twitter 搜索 API 此http search twitter com search json q hi http search twitter com search js
  • 来自 .clone() 的空文件输入

    我正在尝试克隆一个文件输入表单 每次我选择一个文件时then单击 添加更多 克隆文件输入 但它已复制输入中选定的文件
  • 信号 11 SIGSEGV 崩溃 Android

    今天我遇到了一个错误 导致我的 Android 应用程序收到 SIGNAL 11 信号 此错误通常是由于 Android 内部存储未经授权的内存区域访问而发生的 一些可能的场景是Web访问 网络通信 服务器图像下载等 我的是浏览器加载 ur
  • AngularJS 选择的空值

    我找不到优雅的设置方式null值与
  • Azure blob 文件下载链接

    我有一个 blob 已存储在 Azure blob 存储中 使用开发模拟器 它全部保存 我可以在 blob 存储的服务器资源管理器中看到它 file mp3 如果重要的话 然后我在我的网站中链接到它 但是当我单击该链接时 我收到了 206
  • 阻止 Laravel 中的路由会话(自定义按需会话处理)

    我正在使用 laravel 为我的 Android 应用程序构建 API 并将默认会话驱动程序设置为 REDIS 我在这里找到一篇好文章http dor ky laravel prevent sessions for routes via
  • 源文件夹不在Java构建类路径上,正在创建Java包

    我试图在排序下创建一个包合并 但它说 源文件夹不在 Java 构建类路径上 So I right click on sort folder and try to add it to the Java build class path But
  • MSN 是 OpenID 提供商吗?

    MSN 是 OpenID 提供商吗 如果是这样 您知道 URL 是什么样的吗 我正在尝试将 MSN 添加到具有用于登录网站的特殊按钮的提供商列表中 Microsoft 有一个附加到 Windows Live ID 的 OpenID 服务目前
  • Firebase 中 IN 关键字的替代是什么?

    我在 Firebase 中的节点为 users uid phone name 我正在寻找IN执行这里 我想检查我的数据库中存在电话号码列表中的哪些条目 然后获取这些条目 在 SQL 数据库中 等效查询可能是 select phone fro
  • 为什么Webpack的DefinePlugin要求我们将所有内容都包装在JSON.stringify中?

    new webpack DefinePlugin PRODUCTION JSON stringify true VERSION JSON stringify 5fa3b9 BROWSER SUPPORTS HTML5 true TWO 1