这是我已经想了一段时间的事情.假设我有一份快速申请.我在它自己的文件中有这个出口:

// my-var.js
export const myVar = new Thing();

然后,我创建了访问该变量的服务器:

// index.js
import { myVar } from './my-var';
import { myRoutes } from './my-routes';

function startServer() {
    myVar.doSomething(); /* 1 */

    const app = express();
    app.use('/', myRoutes);
    
    app.listen(port, () => {});
}

最后,我有我的路由,它们也使用这个变量:

// my-routes.js

import { Router } from 'express';
import { myVar } from './my-var';

const router = new Router();

router.get((req, res) => {
    myVar.doSomething(); /* 2 */
    res.json({});
});

所以我的问题是:.1和.2引用的是同一个变量吗?或者它已经被实例化了两次?我认为每次导入文件时都会实例化它,因为导入文件会运行该文件中的代码.因此,该文件每次运行时都会执行myVar = new Thing();.

推荐答案

脚本文件执行一次,该文件只有一个结果.如果导出任何对象,则所有模块都将引用该对象的同一实例.

const myVar = new Thing();

myVar只创建一次,然后导出.

您可以try 更改一个模块中的属性,然后在另一个模块中判断该属性以确保.

Javascript相关问答推荐

如何在Connect 4游戏中 for each 玩家使用位板寻找7形状?

将自定义排序应用于角形数字数组

在Vite React库中添加子模块路径

colored颜色 检测JS,平均图像 colored颜色 检测JS

我的服务工作器没有连接到我的Chrome扩展中的内容脚本.我该怎么解决这个问题?

如何在.NET Core中将chtml文件链接到Java脚本文件?

Reaction组件在本应被设置隐藏时仍显示

Jest toHaveBeenNthCalledWith返回当前设置的变量值,而不是调用时的值

Vaadin定制组件-保持对javascrip变量的访问

触发异步函数后不能显示数据

在Vercel中部署Next.js项目时获取`ReferenceError:未定义文档`

用于部分字符串的JavaScript数组搜索

如何在Reaction中清除输入字段

谷歌饼图3D切片

Angel Auth Guard-用户只有在未登录时才能访问登录页面,只有在登录时才能访问其他页面

$GTE的mongoose 问题

脚本语法错误只是一个字符串,而不是一个对象?

每隔一行文本段落进行镜像(Boustrophedon)

如何在单击链接时设置一个JavaScript变量(以打开弹出窗口的特定部分)

我遇到了Phaser 3碰撞的问题