Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.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文件的express模块,express模块已包含在app.js中_Javascript_Node.js - Fatal编程技术网

Javascript 如何访问其他js文件的express模块,express模块已包含在app.js中

Javascript 如何访问其他js文件的express模块,express模块已包含在app.js中,javascript,node.js,Javascript,Node.js,让我解释一下我在做什么。 我已将express模块包含在app.js中。 在这里,我想访问index.js,admin.js,gallery.js中的这个模块。 但我不想在所有的js文件中再次编写相同的代码 让我向你展示我的场景 app.js已经 var express=需要(“express”); index.js具有 var express=require('express'); var router=express.router(); /*获取主页*/ router.get('/',函

让我解释一下我在做什么。 我已将express模块包含在
app.js
中。 在这里,我想访问
index.js
admin.js
gallery.js
中的这个模块。 但我不想在所有的js文件中再次编写相同的代码

让我向你展示我的场景

app.js已经
var express=需要(“express”);
index.js具有

var express=require('express');
var router=express.router();
/*获取主页*/
router.get('/',函数(req,res,next){
res.render('index',{title:'Express'});
});
module.exports=路由器;
gallery.js已经
var express=需要(“express”);
var router=express.router();
/*获取用户列表*/
router.get('/',函数(req,res,next){
res.render('gallery',{title:'gallery'});
});
module.exports=路由器;
此处
var express=require('express')已存在于
app.js
中。 我想从
app.js
中重用它,而不是包含在每个文件中

到目前为止我都试过了

我在app.js中创建了global,这样我就可以访问它

global.express = require('express');
这个代码对我有用


这是正确的方法吗?在所有js文件中包含express模块的任何其他方法都可以吗?

不建议使用其他全局变量,因为应用程序已经具有“导出”和“需要”全局变量。(导出/要求不是关键字,而是全局变量。)

如果需要导出其他文件的“应用程序”,可以执行以下操作

在index.js中: var expressu app=module.exports=express()

现在可以要求index.js将应用程序放入任何文件中

在任何.js文件中:
var express_app=require('./索引')

不鼓励使用其他全局变量,因为应用程序已经具有“导出”和“需要”全局变量。(导出/要求不是关键字,而是全局变量。)

如果需要导出其他文件的“应用程序”,可以执行以下操作

在index.js中: var expressu app=module.exports=express()

现在可以要求index.js将应用程序放入任何文件中

在任何.js文件中: var express_app=require('./索引')

您可以将文件(假设这是您的入口点,则不导出app.js)作为函数导出,并将express模块传递到这些文件中

gallery.js

module.exports = function(app) { 
 /* GET users listing. */
 app.get('/', function(req, res, next) {
   res.render('gallery', { title: 'Gallery' });
 }); 
}
var express = require('express')
var app = express();
var galleryRoute = require('./gallery');

// Routes
galleryRoute(app);
app.js

module.exports = function(app) { 
 /* GET users listing. */
 app.get('/', function(req, res, next) {
   res.render('gallery', { title: 'Gallery' });
 }); 
}
var express = require('express')
var app = express();
var galleryRoute = require('./gallery');

// Routes
galleryRoute(app);
您可以将文件(假设这是您的入口点,则不导出app.js)作为函数导出,并将express模块传递到这些文件中

gallery.js

module.exports = function(app) { 
 /* GET users listing. */
 app.get('/', function(req, res, next) {
   res.render('gallery', { title: 'Gallery' });
 }); 
}
var express = require('express')
var app = express();
var galleryRoute = require('./gallery');

// Routes
galleryRoute(app);
app.js

module.exports = function(app) { 
 /* GET users listing. */
 app.get('/', function(req, res, next) {
   res.render('gallery', { title: 'Gallery' });
 }); 
}
var express = require('express')
var app = express();
var galleryRoute = require('./gallery');

// Routes
galleryRoute(app);

我读过一些避免使用全局变量的地方,因为这里有一些缺点,其中很少有:

  • 第一个原因是,当您创建一个全局变量时,它是存在的 在应用程序的整个生命周期内。当变量持续存在时 在应用程序的整个生命周期中,这意味着它在内存中, 在应用程序运行时占用资源

    其次,传统上使用全局变量会导致并发 问题。如果多个线程可以访问同一个变量 如果没有访问修改器或故障保护,可能会导致 两个线程试图访问和使用同一线程的严重问题 变量然而,尽管在其他语言中也是如此,但事实确实如此 Node.js不一定是这样,因为它严格来说是一个 单线程环境。而群集节点是可能的 进程之间没有本地通信方式

    我要说的最后一个原因是使用globals可以 导致文件或变量之间存在隐式耦合。耦合不是一个问题 写伟大的代码是件好事。在编写代码时,我们 希望确保它尽可能模块化和可重用, 同时还要确保它易于使用和理解。耦合 将代码片段放在一起可能会导致一些令人头疼的问题 当你试图调试为什么有些东西不起作用的时候


至于您的问题,您可以从app.js或index导出express,并在任何地方使用它。

我已经阅读了一些避免使用全局变量的地方,因为它有一些缺点,这里有几个:

  • 第一个原因是,当您创建一个全局变量时,它是存在的 在应用程序的整个生命周期内。当变量持续存在时 在应用程序的整个生命周期中,这意味着它在内存中, 在应用程序运行时占用资源

    其次,传统上使用全局变量会导致并发 问题。如果多个线程可以访问同一个变量 如果没有访问修改器或故障保护,可能会导致 两个线程试图访问和使用同一线程的严重问题 变量然而,尽管在其他语言中也是如此,但事实确实如此 Node.js不一定是这样,因为它严格来说是一个 单线程环境。而群集节点是可能的 进程之间没有本地通信方式

    我要说的最后一个原因是使用globals可以 导致文件或变量之间存在隐式耦合。耦合不是一个问题 写伟大的代码是件好事。在编写代码时,我们 希望确保它尽可能模块化和可重用, 同时还要确保它易于使用和理解。耦合 将代码片段放在一起可能会导致一些令人头疼的问题 当你试图调试为什么有些东西不起作用的时候


至于你的问题,你可以从app.js或index导出express,并在任何地方使用它。

是的,它在我的情况下都有效。但是在这里我们不能用快速路由器代替路由器。get我必须使用app.getyes它在我的情况下工作。但是在这里我们不能用快速路由器代替路由器