什么被认为是在节点模块中共享“全局”变量的好方法
What's considered a good way to share "global" variables inside a node module?
如何在没有明确相对路径(../../../lib..
(的情况下轻松引用模块中的其他目录?
我正在编写一个节点模块,我想在我的模块中重用一些全局内容。
最基本 - 我想将模块的根路径设置为"全局",这样我就可以轻松调用其他源,而无需使用大量相对路径../../
之类的东西。它可能会导致代码混乱,如果项目结构发生变化,很容易出错或错过它。
所以我在那篇帖子和其他一些库中看到了很多用于处理这些事情的选项(例如提供根路径的模块 - app-module-path、rootpath、rfr 等(,但它们都引用了一个基本项目/应用程序,而不是其他人正在使用的模块。
设置全局是一个坏主意,我知道环境变量也不是一个好主意。
有没有这方面的好做法?也许有些东西我没有发现或听说过。
以下是我试图避免的内容和我正在寻找的内容的示例:
// avoid things like that:
// ./lib/something/forthat/doit.js
var config = require('../../../config/project/type1/config.js');
// ./config/project/type1/config.js
module.exports = {
msg: 'hi'
};
// find somethings like that:
// when the root path/require can be found in every location of the module
// and is relative to my app and not the app using my module.
// ./lib/something/forthat/doit.js
var config = require(rootPath + 'config/project/type1/config.js');
// OR
var config = rootRequire('config/project/type1/config.js');
// OR anything else
// ./config/project/type1/config.js
module.exports = {
msg: 'hi'
};
要获取当前目录路径,您可以在nodejs项目中的任何位置__dirname
全局变量。示例:console.log(__dirname)
将其写入项目和控制台中的任何文件,则将当前目录路径打印为字符串。或者,您可以使用快速会话模块,例如;
var express = require('express');
var session = require('express-session');
var app = express();
app.use(session({myVar: 'abc'}));
app.get('/',function(req,res){
var sess = req.session;
console.log(sess);
});
首先.....相对路径根本不会造成混乱。相反,您可以将其称为混乱(如果需要(,这被认为是最佳实践。但我也能理解你。你不喜欢非常混乱的代码。因此,对于这种情况,您应该将代码的那部分/部分作为静态内容提供。因此,您可以通过提供非常登录的跟踪路径轻松访问它。但请记住,这种方式是相对路径服务的替代方法。
相关文章:
- 全局变量和全局对象的属性之间有什么区别吗
- delete关键字在全局变量上的不同行为
- 在javascript函数中设置全局变量
- 如何将getJson的响应保存在全局变量中
- 从Javascript方法返回全局变量
- AngularJS中的封装窗口全局变量
- javascript隐式全局变量
- 如何从onclick函数设置全局变量并将其传递给另一个JS文件
- 如何使全局变量仅特定于该文件
- 在page.open()-PhantomJS中无法访问全局变量
- 使用全局变量来存储数字(JavaScript)
- 如何将变量声明为全局变量
- 在节点中创建文件全局变量
- 在Javascript中使用全局变量作为缓存是很好的
- 创建要在其他函数中使用的全局变量
- 为了避免创建全局变量,可以将所有变量分配给一个对象吗
- 函数中的innerHTML(全局变量?)
- 如何在javascript中为全局变量赋值
- 全局变量只能由第一个函数访问
- 没有通过ajax调用设置Javascript全局变量