理解module.export传递参数
Understanding module.export to pass a parameter
我一直在努力理解,module.export如何用它传递参数。现在我做了一个演示服务器来测试它。
文件 - index.js
var express = require('express');
var check = require('./file');
var app = express();
app.get('/',check.fun1("calling"),(req,res)=>{
res.send('here i am');
})
app.listen(3000,()=>{
console.log("Server is up");
})
通过中间件检查,
module.exports = fun1 = name => {
return function(req, res, next) {
console.log(name + " from fun1");
next();
};
};
module.exports = fun2 = name2 => {
return function(req, res, next) {
console.log(name + " from fun1");
next();
};
};
现在这不起作用,但是当我更改它时,它开始起作用
fun1 = name => {
return function(req, res, next) {
console.log(name + " from fun1");
next();
};
};
fun2 = name2 => {
return function(req, res, next) {
console.log(name + " from fun1");
next();
};
};
module.exports = {
fun1,
fun2
};
现在,这可能看起来像一个愚蠢的问题,如果它有效,那么我为什么要问,但是,我应该在 index.js 文件中进行哪些更改,以便我的第一种 module.export开始工作。纯属好奇
谢谢
node.js 中的很多东西都是简单的设计模式。 Node.js 在 javascript 最初发布时引入了零扩展(这包括它的模块系统)。即使在今天,node.js 的语法扩展也为零。 Node.js 只是 javascript 带有额外的库和一个特殊的运行时环境(所有模块都在 IIFE 中计算)
话虽如此,module.exports
不是语法。它只是javascript中的一个普通变量。具体来说,变量 module
是一个对象,节点的模块系统将检查此 module
变量以查看它是否具有名为 exports
的 属性。如果 module
有一个 exports
属性 那么它的值被认为是导出的模块。
因为 module
只是一个普通变量,它遵循正常的变量行为。如果您重新分配一个变量,它的值将会改变。例如:
var x = 0;
console.log(x); // prints 0;
x = 100;
console.log(x); // prints 100, not 0 and 100
因此,module.exports
也一样:
module.exports = 'hello';
console.log(module.exports); // prints 'hello'
module.exports = 'world';
console.log(module.exports); // prints 'world', not 'hello world'
我一直在努力理解,module.export如何用它传递参数。现在我做了一个演示服务器来测试它。
文件 - index.js
var express = require('express');
var check = require('./file');
var app = express();
app.get('/',check.fun1("calling"),(req,res)=>{
res.send('here i am');
})
app.listen(3000,()=>{
console.log("Server is up");
})
通过中间件检查,
module.exports = fun1 = name => {
return function(req, res, next) {
console.log(name + " from fun1");
next();
};
};
module.exports = fun2 = name2 => {
return function(req, res, next) {
console.log(name + " from fun1");
next();
};
};
现在这不起作用,但是当我更改它时,它开始起作用
fun1 = name => {
return function(req, res, next) {
console.log(name + " from fun1");
next();
};
};
fun2 = name2 => {
return function(req, res, next) {
console.log(name + " from fun1");
next();
};
};
module.exports = {
fun1,
fun2
};
现在,这可能看起来像一个愚蠢的问题,如果它有效,那么我为什么要问,但是,我应该在 index.js 文件中进行哪些更改,以便我的第一种 module.export开始工作。纯属好奇
谢谢
node.js 中的很多东西都是简单的设计模式。 Node.js 在 javascript 最初发布时引入了零扩展(这包括它的模块系统)。即使在今天,node.js 的语法扩展也为零。 Node.js 只是 javascript 带有额外的库和一个特殊的运行时环境(所有模块都在 IIFE 中计算)
话虽如此,module.exports
不是语法。它只是javascript中的一个普通变量。具体来说,变量 module
是一个对象,节点的模块系统将检查此 module
变量以查看它是否具有名为 exports
的 属性。如果 module
有一个 exports
属性 那么它的值被认为是导出的模块。
因为 module
只是一个普通变量,它遵循正常的变量行为。如果您重新分配一个变量,它的值将会改变。例如:
var x = 0;
console.log(x); // prints 0;
x = 100;
console.log(x); // prints 100, not 0 and 100
因此,module.exports
也一样:
module.exports = 'hello';
console.log(module.exports); // prints 'hello'
module.exports = 'world';
console.log(module.exports); // prints 'world', not 'hello world'