NodeJS 使用Exports对象导出对象

kknvjkwl  于 2023-01-20  发布在  Node.js
关注(0)|答案(6)|浏览(295)

假设我有一个包含javascript对象的.js文件,我希望能够从同一目录下的另一个.js文件中访问该对象及其所有功能,我是否可以简单地将此对象与module.exports对象一起导出,然后将require()对象导出到另一个.js文件中?如果可以,您能否给予我一个示例?
如果有帮助的话我正在用节点进行开发。

waxmsbnn

waxmsbnn1#

这是我创建模块的方法:
myModule.js

var MyObject = function() {

    // This is private because it is not being return
    var _privateFunction = function(param1, param2) {
        ...
        return;
    }

    var function1 = function(param1, callback) {
        ...
        callback(err, results);    
    }

    var function2 = function(param1, param2, callback) {
        ...
        callback(err, results);    
    }

    return {
        function1: function1
       ,function2: function2
    }
}();

module.exports = MyObject;

要在另一个JS文件中使用此模块,只需使用require并正常使用对象即可:
someFile.js

var myObject = require('myModule');

myObject.function1(param1, function(err, result) { 
    ...
});
cetgtptt

cetgtptt2#

当然可以。在我的例子中,我使用obj来保存我的配置信息。我把它放在config文件夹下一个名为index.js的文件中。这使得索引成为我import 'config'时首选的选择。这里我有两个导出,一个用于我的节点和API,另一个用于我的数据库。你可以忽略我设置环境的第一位。

const environment = {
  development: {
    isProduction: false
  },
  production: {
    isProduction: true
  }
}[ process.env.NODE_ENV || 'development' ];

export default Object.assign({
  host: 'localhost',
  port: '3000',
  remoteApi: {
    token: {
      'X-Token': '222222222222222222'
    },
    base: 'https://www.somedomain.com/api'
  }
}, environment);

export const db = {
  dbHost: 'localhost',
  dbPort: 176178
};

调用import config from '../config';将选择默认值,如果指定,则可以获得db导出import { db } from '../config';

zbsbpyhn

zbsbpyhn3#

在一个文件中:

module.exports.myObj = some object...;

在另一个:

Obj = require('myFile.js').myObj;

节点上js文件中的所有内容都是本地的,除非你把它放在export对象中,这实际上与浏览器中的JavaScript非常不同--在浏览器中,所有导入的文件都像一个大文件一样。
你可以把节点文件想象成你正在创建一个模块对象,并把它传递给你代码周围的一个函数。

module = { 'exports' : {} };
(function(module){
    //your js file
    ...
})(module)
pkmbmrz7

pkmbmrz74#

在我看来,最简单的方法是:
写入人员. js:(注意它附带ctor)

module.exports = function (firstName, lastName) {
    this.firstName = firstName;
    this.lastName = lastName;
    this.fullName = function () { 
        return this.firstName + ' ' + this.lastName;
    }
}

并消耗它:

var person = require('./Person.js');

var person1 = new person('James', 'Bond');

console.log(person1.fullName());

注意,在这个简单的解决方案中,所有的方法都是"公共的"。
参考:https://www.tutorialsteacher.com/nodejs/nodejs-module-exports

2w2cym1i

2w2cym1i5#

根据es6:-

const person = function(name){
  console.log(`Name of the person is ${name}`);
}

export default person;
np8igboo

np8igboo6#

您可以将对象导出为

模块.js

export const events = {};
events.click = function (param1, param2...) {
    //do something here
}
events.change = function (param1, param2...) {
    //do something here
}
events.get = function (key, response) {
    //do something here
    response({status: "success"})
}

main.js中

import {events} from "./modules"
console.log(events)

现在您可以使用对象

events.get("my_key", (resp) => { 
  console.log(resp) // {status: "success"}
})

相关问题