使用导出对象导出对象

假设我有一个包含JavaScript对象的.js文件。 我想能够从同一个目录中的另一个.js文件访问该对象及其所有function。 我可以简单地导出这个对象与module.exports对象,并require()它在其他.js文件? 如果这是可能的,你能给我一个例子吗?

如果有帮助,我正在开发与节点。

这是我创build模块的方式:

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) { ... }); 

在一个文件中:

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

在另一个:

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

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

你可以考虑一下节点文件,好像你正在创build一个模块对象,并把它传递给一个包含你的代码的函数。

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

当然可以。 在我的例子中,我使用obj来保存我的configuration信息。 我把它放在一个名为index.js的文件夹中。 这使得索引成为我在import 'config'时select的首选。 我有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';调用import config from '../config'; 将select默认的一个。 如果我指定我可以import { db } from '../config';获得db导出import { db } from '../config';