23

假设我有一个.js包含 javascript 对象的文件。我希望能够从.js同一目录中的另一个文件访问该对象及其所有功能。我可以简单地将该对象与该对象一起导出,module.exports并将require()其导出到另一个.js文件中吗?如果这是可能的,你能给我举个例子吗?

如果它有帮助,我正在使用节点进行开发。

4

4 回答 4

30

这是我创建模块的方式:

我的模块.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像往常一样简单地使用和使用您的对象:

一些文件.js

var myObject = require('myModule');

myObject.function1(param1, function(err, result) { 
    ...
});
于 2012-09-18T05:07:55.270 回答
10

当然可以。在我的示例中,我使用 obj 来保存我的配置信息。我把它放在一个名为文件夹的文件index.jsconfig。这使得索引成为 I 时选择的首选import 'config'。我在这里有 2 个导出,一个用于我的节点和 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';

于 2016-05-24T10:44:45.050 回答
5

在一个文件中:

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

在另一个:

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

节点上的 js 文件中的所有内容都是该文件的本地文件,除非您将其放在导出对象中。这实际上与浏览器中的 JavaScript 非常不同——在浏览器中,所有导入的文件都像一个大文件一样组合在一起。

您可以考虑节点文件,就好像您正在创建一个模块对象并将其传递给围绕您的代码的函数。

module = { 'exports' : {} };
(function(module){
    //your js file
    ...
})(module)
于 2012-09-18T02:52:21.230 回答
1

我认为最简单的方法:

编写 Person.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

于 2020-04-05T10:40:53.140 回答