Exporting Objects with the Exports Object

2019-03-12 16:21发布

Say I have one .js file containing a javascript object. I want to be able to access that object and all of its functionality from another .js file in the same directory. Can I simply export this object with the module.exports object and require() it in the other .js file? If this is possible can you give me an example?

If it helps I'm developing with node.

3条回答
戒情不戒烟
2楼-- · 2019-03-12 16:56

This is the way I create modules:

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;

And to use this module in another JS file, you can simply use require and use your object as normal:

someFile.js

var myObject = require('myModule');

myObject.function1(param1, function(err, result) { 
    ...
});
查看更多
The star\"
3楼-- · 2019-03-12 17:02

Of course you can. In my example I use obj to hold my config info. I put it in a file called index.js in config folder. This makes the index the preferred choice to be picked when I import 'config'. I have 2 exports here one for my node and api stuff and the other for my db. You can ignore the first bit where I set the environment.

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
};

Calling import config from '../config'; will pick the default one. And if I specify I can get the db export import { db } from '../config';

查看更多
时光不老,我们不散
4楼-- · 2019-03-12 17:04

In one file:

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

In the other:

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

Everything in a js file on node is local to that file unless you put it in the export object. This actually is very different from JavaScript in a browser--in the browser all files that get imported act together like one big file.

You can kinda think about node files as though you are creating a module object and passing it' into a function surrounding your code.

module = { 'exports' : {} };
(function(module){
    //your js file
    ...
})(module)
查看更多
登录 后发表回答