javascript - node.js 和浏览器代码重用 : importing constants into modules

标签 javascript node.js

我在 JavaScript 中有一些常量,我想在几个文件中重用它们,同时节省输入、减少错误输入的错误、保持高运行时性能,并在 node.js 服务器脚本或客户端 Web 浏览器上有用脚本。

例子:

const cAPPLE = 17;
const cPEAR = 23;
const cGRAPE  = 38;
...(some later js file)...
for...if (deliciousness[i][cAPPLE] > 45) ...

以下是我可以做的一些事情:

  1. 将常量列表复制/粘贴到每个使用的文件的顶部。哦,呸。我宁愿不。这与保持常量名称简短而兼容。如果列表中的任何内容发生变化,它就会违反 DRY 并引发各种可怕的错误。

  2. 常量列表 ---> const.js

在浏览器上,这很好...脚本由 html 文件输入并且工作正常。

但在 node.js 上,require 机制会更改常量名称,干扰代码重用并需要更多输入,因为 require 的工作方式....

AFAIK 根据设计,在 node.js 中,对于任何不使用全局变量的 const.js,这是行不通的:

require('./const.js');
for...if...deliciousness[i][cAPPLE] > 45 ...;  

这是 node.js 的方式:

(... const.js ....)
exports.APPLE = 17;
(... dependency.js ... )
var C = require('./const.js');
for...if...deliciousness[i][C.APPLE] > 45..... 

所以我要么必须有两个常量文件,一个用于 node.js 需要,一个用于浏览器,或者我必须在列表的后面继续......

3 使要导入的对象的常量属性...仍然需要两个文件...因为 node.js 的导入方式与浏览器不匹配。还会使名称更长,并且可能需要更多时间来进行查找,正如我所暗示的那样,查找可能会在循环中发生。

4 外部常量列表,内部适配器....将外部常量(无论存储方式如何)读入每个文件的内部结构,而不是尝试直接使用外部列表

const.js
exports.cAPPLE = 17

browser.js
const cAPPLE = exports.cAPPLE;
...code requiring cAPPLE...

node.js
CONST = require(./const.js)
const cAPPLE = CONST.cAPPLE;
...code requiring cAPPLE...

这需要对每个文件进行一次点击以编写代码以提取常量,因此会在稍微更先进的剪切和粘贴中一遍又一遍地复制一堆代码。

它确实允许要求 cAPPLE 的代码基于短命名常量的使用继续工作

是否有任何其他解决方案,也许更有经验的 JavaScripter 可能知道,我可能会忽略?

最佳答案

module.exports = Object.create({},{
        "foo": { value:"bar", writable:false, enumerable:true }
});

属性不可写。与“const”不同,在严格模式下工作。

关于javascript - node.js 和浏览器代码重用 : importing constants into modules,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6223800/

相关文章:

javascript - 为什么 Number(null) 返回 0,而 parseFloat(null) 返回 NaN?

javascript - React - redux - thunk 以简洁的方式更改页面背景

javascript - 无法将 remote.require() 与 TypeScript 一起使用

node.js - NestJS:如何注册 transient 和每个 Web 请求提供程序

node.js - AWS Lambda 和 Twitter 流

javascript - 无法通过 JavaScript 更改 <DIV> 的 css 可见性

javascript - 使用 jQuery 从 JavaScript 对象中添加选项的最佳方法是什么?

node.js - Hapi.js 按顺序加载插件

node.js - React/Nextjs SSR & API - 云架构偏好

javascript - 使用js创建异步循环