Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 节点js中的全局变量和函数_Javascript_Node.js_Express - Fatal编程技术网

Javascript 节点js中的全局变量和函数

Javascript 节点js中的全局变量和函数,javascript,node.js,express,Javascript,Node.js,Express,假设我有如下javascript文件,其中包括全局变量和全局函数。如何最好地将其包含在带有express的node js中 var language = { 'English': 'English' } var a = 'string'; function start() { return 'start'; } var b = function() { return 'start'; } node.js使用模块系统包含文件。虽然您实际上可以在node.js中简洁地

假设我有如下javascript文件,其中包括全局变量和全局函数。如何最好地将其包含在带有express的node js中

var language = {
    'English': 'English'
}

var a = 'string';

function start() {
    return 'start';
}

var b = function() {
    return 'start';
}

node.js使用模块系统包含文件。虽然您实际上可以在node.js中简洁地分配全局变量,但不建议这样做。相反,您可以将函数包装在模块中,并导出您想要公开的函数。希望使用这些函数的其他JS文件将在您的模块中
require()
,并引用返回的模块句柄中的函数。这是node.js中文件之间共享代码的推荐方式

目前还不清楚您的模块应该做什么,但您可以像这样导出两个函数:

// module shared.js
function start() {
    return 'start';
}

var b = function() {
    return 'start';
}

module.exports = {
    start: start,
    b: b
};
// module main.js
var shared = require('./shared.js');

console.log(shared.b());
console.log(shared.start());
然后,另一个模块可以这样使用:

// module shared.js
function start() {
    return 'start';
}

var b = function() {
    return 'start';
}

module.exports = {
    start: start,
    b: b
};
// module main.js
var shared = require('./shared.js');

console.log(shared.b());
console.log(shared.start());

我发现了app.locals在express中的用法。与此相比,使用app.locals有什么优势吗?@desmondlee-这取决于你在分享什么。在Express
app.locals
中,本地人是放置特定于应用程序的配置信息的常用位置。由于它需要Express,并且通常应用程序中的许多模块不是特定于Express的,所以我不会将它用于Express之外具有通用用途的模块。记住,为了最大限度地共享和代码重用,模块应该尽可能独立。只有当某些东西只能与Express一起使用时,才能使其依赖Express。此外,要使用
app.locals
,您必须首先共享
app
对象。