Articles of 全局

在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接口的一种方式,但它似乎没有任何效果。

npm不会在本地安装软件包。 怎么了?

我想在本地安装软件包,但是npm总是将软件包安装到全局位置。 我正在运行以下命令: npm install serialport 我没有.npmrc命令,我没有使用-g标志,所以我不知道为什么不在本地安装。 下面是configuration转储中的一个片段,显示global为false:$ npm config ls -l | grep global global = false globalconfig =“/ usr / local / etc / npmrc”globalignorefile =“/ usr / local / etc / npmignore” 而包仍然是这样安装的 serialport@0.7.3 ../../../../node_modules/serialport 所以,除非我对“本地”的含义完全错误,否则这似乎是错误的。 我的印象是“当地”在当前的工作目录中,以便我可以在我的主代码文件中做“要求”。 请参阅: http : //blog.nodejs.org/2011/03/23/npm-1-0-global-vs-local-installation/ ,在前面的npm相关问题中提到。 有人可以给我一些提示吗? 非常感谢你。 PS它不是专用于串口模块。 这一切都发生在他们身上。

npm使用-g vs –save-dev安装bower

我是新来的节点和使用npm来做一些节点,angular度和快速教程。 我在教程中使用过bower。 我很确定我已经使用-g已经安装它,因为当我运行bower -v命令时,我回来了1.3.3我明白,使用-g安装它意味着, 安装这个全局,以便在下一个项目不必再次安装 。 1)这是正确的吗? 2)当我开始一个新项目的工作时,是否需要初始化凉亭? 3)是否有任何理由我应该使用install bower –save-dev之后我已经安装了bower(-g)? 4) install bower –save-dev到底做了什么? 当我search“–save-dev”的时候,我search了一下,在google上没有任何结果,也没有find任何信息。 我真的很想理解这一点,如果你能帮助我,那么这将帮助我理解安装远不止如此,以及如何使用这些安装。 再一次,我对这种types的开发和新技术的命令行是新的,但有一些基本的了解。