gpt4 book ai didi

javascript - 当 require() 处理文件时是否必须定义 module.exports ?

转载 作者:行者123 更新时间:2023-12-03 08:18:02 26 4
gpt4 key购买 nike

我正在使用 Babel 在 Express 服务器上动态转译我的 ES6 文件。在我的 server.js 文件(vanilla JS)中,我放置了 require('babel-core/register')require('./app').

app.js (ES6) 中,我做了所有正常的 Express 工作:

import express from 'express';

let app = express();
app.listen(3000, () => {
console.log('Server listening on port 3000');
});
... etc

即使我没有在 app.js 文件中正式定义 module.exports,当我运行 node server 时,app.js 正确获取 required 并运行。为什么这有效?

最佳答案

当你需要一个模块时,该模块内的代码将被执行,但只执行一次。对同一模块的后续 require 调用除了返回模块导出的任何内容之外不会产生任何效果。 That's the nature of node modules (查找有关“缓存”的注释)。通过使用 module.exports ,您基本上可以为其指定一个返回值。

您不需要导出任何内容,只要您需要 app.js,就会调用 app.listen 行。尽管您可以导出 API 或类似的内容(如果您愿意):

/*app.js*/

import express from 'express';

let app = express();

module.exports = {
start:function(){
app.listen(3000, () => {
console.log('Server listening on port 3000');
})
}

/*server.js*/
require('babel-core/register');

var app = require('./app');

app.start();

我可能误解了这个问题,但我认为 babel 和express 并不真正相关。

关于javascript - 当 require() 处理文件时是否必须定义 module.exports ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33850858/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com