我有一个 .js 文件,其中包含一个类定义(使用类语法,而不是函数语法,以防万一)。然后我想要一个包含多个文件的文件夹,每个文件都是一个函数,它创建具有不同属性的所述类的不同实例,并返回该实例。 当然,单实例创建文件无法访问类信息,除非这些文件中的每一个都有自己的“require(”class definition.js”);”线。 关键是,由于我将有数百个所述实例创建文件,重复的“要求”是否会破坏我的性能?我不信任 JavaScript,我基本上害怕它会在每次出现“require”时解析并替换类定义。有谁知道是否会发生这种情况?如果有,有什么解决方法吗?谢谢。
相关代码示例:
类定义.js
class myclass
{
constructor(a)
{
this.a = a;
}
}
实例化_0.js
require("class_definition.js");
module.exports = function()
{
return new myclass(0);
}
实例化_1.js
require("class_definition.js");
module.exports = function()
{
return new myclass(1);
}
测试.js
var arr = [];
for(var i=0; i<2; i++)
{
arr[i] = require("instantiate_" + i)();
}
我真正想要的是类似于 C++ 的 .h 文件,类似于类定义文件的“#pragma once”指令。
最佳答案
javascript 中的模块和文件是单例的,这意味着如果您需要一个文件 50 次,它们都将指向一个单一的实例。以这段代码为例:
`// file a.js
module.exports = Math.random()`
`// file main.js
console.log(require('./a'));
console.log(require('./a'));
console.log(require('./a'));
console.log(require('./a'));`
你可能认为你将 console.log 输出 4 个不同的随机数,但它实际上会输出相同的数字 4 次,因为每个 require 语句将指向文件 a.js
.
进一步阅读:https://willi.am/blog/2014/10/12/understanding-nodes-require-function/
关于javascript - 如果我多次需要一个文件,它会被多次解析吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50160969/