Tag: 全局

NodeJS(Express.js):如何使会话全局

我知道全局variables在JavaScript和整体编程方面是一个不好的做法,但是我想让我的用户会话在我的express.js应用程序中可用,避免必须从我的控制器传递会话参数到我的模型。 我怎么能最好的做到这一点? 谢谢!

每个HTTP /会话请求的GLOBAL数据?

题: 有没有办法在每个会话/ http请求中创build一个variables存储? 该variables必须是全局可访问的,并且不同的每个HTTP请求/连接/会话,并且不需要从function传递到function。 例如(只是为了说明): setVariableThatCanBeAccessedByThisHTTPRequestOnly( 'a string data' ); 任何东西都应该可以工作,但我宁愿远离将它从function传递到function。 //I'm trying to get rid of passing req parameter to all custom functions. //I'd like to store it in a variable somehow, that it can be accessed globally, but only within that session/request. exports.functionName = function( req, res ) { customFunctionThatRequiresReq( req ); }; […]

在node.js中共享对象并避免全局性

在我的路由器/控制器中,在下面的片段( dbvariables)中共享数据库连接的最合适的方式是什么,而不将dbvariables转换为全局variables? var mongo = require('mongoskin'), db = mongo.db(config.db.adress); app.use(function(req, res, next) { db.open(function(err, data) { (err) ? res.send('Internal server error', 500) : next(); }); }); // Setting up controllers here app.post('/users', require('./controllers/users').create); 来自PHP的背景,我来思考dependency injection ,但我不知道如果这是适当的节点。

在JavaScript中定义全局对象的实现独立版本

我试图用JavaScript来定义global对象,如下所示: var global = this.global || this; 以上声明在全球范围内。 因此,在浏览器中, this指针是window对象的别名。 假设它是在当前网页上下文中执行的第一行JavaScript, global的值将始终与this指针或window对象的值相同。 在CommonJS实现中,如RingoJS和node.js, this指针指向当前的ModuleScope 。 但是,我们可以通过在ModuleScope上定义的global属性来访问global对象。 因此,我们可以通过this.global属性来访问它。 因此,这个代码片段适用于所有的浏览器,至lessRingoJS和node.js,但我没有testing其他的CommomJS实现。 因此,我想知道这个代码在其他CommonJS实现上运行时是否会产生正确的结果,如果有的话,我可以如何解决这个问题。 最后,我打算在一个lambdaexpression式中为我的实现独立的JavaScript框架使用它(如下所示)(来自jQuery的想法): (function (global) { // javascript framework })(this.global || this);

什么是全局安装devDependencies的npm命令?

我宁愿input一个简短的命令,比如npm install -g ,来设置一个项目的全局依赖项,比如node-sass和jshint,而不是手动inputnpm install -g every single package 。 有没有npm惯用的方式来做到这一点?

什么是NodeJS中的“全局”对象

我刚刚在NodeJS环境中看到了this关键字的奇怪行为。 我用代码列出他们。 我已经用NodeJS v6.x和一个JavaScript文件运行这个代码。 在使用一行代码进行testing时,无论是否使用'use strict'语句,都会指向一个空对象{} 。 console.log(this) 但是,当我在一个自我执行的函数内运行这个语句时, (function(){ console.log(this); }()); 这是打印一个真正的大对象。 在我看来, NodeJS环境创build的全局执行上下文对象。 在'use strict'语句执行上述function的同时,预计打印undefined (function(){ 'use strict'; console.log(this); }()); 但是,在使用浏览器(我只使用Chrome进行testing)的同时,前三个例子产生window对象,最后一个undefined按预期undefined 。 浏览器的行为是可以理解的。 但是,在NodeJS情况下,它不会创build执行上下文,直到我包装在一个函数内? 那么, NodeJS大部分代码都运行一个空的全局 object ?

REPL和脚本之间的“这个”是不同的

读完mozilla文档后,我发现这个: 在全局执行上下文(在任何函数之外),这是指全局对象,无论是否在严格模式下。 玩了一段范围后,我发现在node.js REPL … > this === global true 但是当我用同一行创build一个脚本… $ cat > script.js console.log(this === global) $ node script.js false 是否有一个原因? 或者是一个错误?

将variables传递给Node.js中的callback

我很新的节点,并试图创build一些获取一些服务器信息。 但是这是我的问题。 我设置了一个configuration对象(这将会及时被发生的事件dynamic更新),然后在一个函数中,我尝试访问这个对象中的一个值。 (见下面的代码) 所以首先,我设置我的变数: var util = require('util'), child = require('child_process'), config = {}; 哪个工作可以。 然后我加载我的configuration: function loadConfig( ) { // Add some code for auto-loading of args config = { "daemons": [ ["Apache", "apache2"], ["MySQL", "mysqld"], ["SSH", "sshd"] ] }; } 和调用该函数的init loadConfig(); 之后,我运行我的守护进程检查。 function getDaemonStatus( ) { for(var i=0; i<config.daemons.length; i++) { […]

Node.js中的根对象是什么?

你可能知道Node.js中的global对象 : {Object}全局命名空间对象。 在浏览器中,顶级范围是全局范围。 这意味着在浏览器中,如果你在全局范围内,var将会定义一个全局variables。 在Node中,这是不同的。 顶级范围不是全球范围; 在Node模块内的var内容将是该模块的本地内容。 现在我偶然发现了似乎没有logging的root对象。 虽然看起来我可以像global一样使用root : test1.js foo = 'bar'; // foo is defined in the global scope (no var in front of foo) test2.js require('./test1.js'); console.log(root.foo); 在shell中: $ node test2.js bar 当我在shell中检查global和root时,它们看起来是一样的。 尝试: $ node > global … > root … 所以看起来, root和global 。 但为什么冗余? 为什么root没有logging? 它是否被弃用?

在node.js中扩展TypeScript Global对象

我有一个node.js应用程序将一些configuration信息附加到global对象: global.myConfig = { a: 1, b: 2 } TypeScript编译器不喜欢这样做,因为Globaltypes没有名为myConfig对象: TS2339:“全局”types中不存在属性“myConfig”。 我不想这样做: global['myConfig'] = { … } 我该如何扩展Globaltypes来包含myConfig或者告诉TypeScriptclosures并相信我? 我更喜欢第一个。 我不想更改node.d.ts的声明。 我看到这个SOpost,并试图这样做: declare module NodeJS { interface Global { myConfig: any } } 作为扩展现有Global接口的一种方式,但它似乎没有任何效果。