gpt4 book ai didi

node.js - 了解 NodeJS 中的导出

转载 作者:搜寻专家 更新时间:2023-10-31 22:36:42 24 4
gpt4 key购买 nike

我认为我不太了解 exportsNode.js 中的工作方式。在一些示例代码中,我注意到以这种方式使用的 exports 对象:

exports = mongoose = require('mongoose')
mongoose.connect(config.db.uri)
exports = Schema = mongoose.Schema

当你像那样使用 exports = 两次时,幕后发生了什么?在我看来,不应导出“ Mongoose ”。我做了这个快速测试:

var foo
, bar

exports = foo = 'foo'
exports = bar = 'bar'

// reports 'bar' only
console.log(exports)

并且第二个测试确实覆盖了第一个导出。

最佳答案

我的猜测是该示例代码的原作者混淆了 module.exportsexports。要使用 exports 对象,您必须像这样向它添加属性:

exports.size = 42;

如果您将 exports 变量 重新分配给一个新对象,您基本上就无法访问 node.js 为您提供的全局导出对象。如果你这样做两次或三次或 N 次,效果是一样的。这毫无用处。例如:mod_b.js

var realExports = exports;
realExports.height = 42;
var exports = {};
exports.weight = 43;

在 mod_a.js 中

var mod_b = require('./mod_b');
console.dir(mod_b);

运行 node mod_a.js 你会得到:

{ height: 42 }

注意 height 存在,但 weight 不存在。现在,您可以做的是将 module.exports 赋值给一个对象,当另一个模块 require 时,该对象将被返回是你的模块。所以你会看到类似的东西。

var x = 10;
var y = 20;
module.exports = {x: x, y: y};

这将达到您的预期。这里有一些关于细节的信息性文章。

Node.js Module – exports vs module.exports

What is the purpose of NodeJS module.exports and how do you use it?

Mastering Node

关于node.js - 了解 NodeJS 中的导出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9627044/

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