Javascript 如何访问其他js文件的express模块,express模块已包含在app.js中
让我解释一下我在做什么。 我已将express模块包含在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('/',函
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它在我的情况下工作。但是在这里我们不能用快速路由器代替路由器