您的位置:首页 > Web前端 > Node.js

第1章-安装Node.js及相关要点-1.3.Node.js的全局变量和保留字

2017-03-25 18:56 861 查看

一、浏览器的JavaScript中,如果遗漏了var,变量就会变成全局变量,污染全局命名空间。

二、浏览器的JavaScript中有window对象,但是在Node.js中却没有(显然我们不需要同浏览器窗口打交道),它为开发者提供了新的对象/关键字;

1.process

2.global

3.module.exports 和 exports

三、Node.js进程相关信息

每个运行中的Node.js脚本本质上都是一个进程。

例如:
ps aux | grep 'node'
可以输出当前机器上所有运行中的Node.js程序。

开发者可以在程序中通过使用process对象(如:
node -e "console.log(process.pid)"
)来非常方便地获取一些同进程相关的有用信息

在Node.js中使用pid(进程ID)和cwd(当前工作目录)

四、在Node.js中访问全局空间

在浏览器JavaScript中,默认会把所有的东西都丢到全局作用域中。

Node.js使用了不同的设计方式,默认所有的东西都是本地的。

当我们要访问全局对象的时候,才会出现global对象。而且,当需要导出一些东西的时候,必须特别明确的声明。

在某种意义上,浏览器中的window其实类似于global和process对象的组合体。

当然,用来展示Web页面中DOM(文档对象模型)的document对象也不会在Node.js中存在。

五、导入和导出模块

浏览器端JavaScript中的另一个缺陷在于,没有任何方法来引入模块。脚本虽然支持通过另一种语言(HTML)来加载到一起,但是仍然缺乏一个对依赖进行有效管理的机制。

不过CommonJS和RequireJS已经通过AJAX-y的方法解决了这个问题,Node.js在实现上从CommonJS的设计理念中借鉴了很多东西。

在Node.js中要导出一个对象:exports.name=object

var messages = {
find: function (req, res, next){
...
},
add: function (req, res, next){
...
},
format: 'title | date | author'
}
exports.messages = messages;


当我们在文件中需要引入上文的脚本时(假设路径和文件名为route/messages.js)

var messages = require('./routes/messages.js');


这种方式在有些时候非常适合调用构造器,比如当我们要为Express.js配置属性时,这种情况下,需要module.exports:

module.exports = function(app){
app.set('port', process.env.PORT | 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
return app;
}


在引入上文实例中的模块文件中,写入:

...
var app = express();
var config = require('./config/index.js');
app = config(app);
...


更简单的代码为

var app = express();
require('./config/index.js') (app);


在引入模块时较为常见的一种错误是文件路径的问题。Node.js中的核心模块,文件名前无须添加任何路径—如require(‘name’)

这种规则也适用于node_modules文件夹下的各个模块

对于其他文件,则使用“.”来衔接。

var keys = require('./keys.js'),
messages = require('./routes/message.js');


另外,在引入文件的时候,可能会使用
__dirname
path.join()
从而导致更长的语句,如:
require(path.join(__dirname, 'routes', 'messages'));
我们推荐使用这种方法,

path.join()
可以生成带有有效斜杠语法的路径(根据系统不同,分别会生成斜杠或者反斜杠)

如果require()指向了一个文件夹,Node.js就会尝试读取文件夹下index.js文件的内容。

六、__dirname和process.cwd的对比

__dirname是使用全局变量文件的绝对路径,而process.cwd是运行脚本进程的绝对路径。所以,当我们在不同文件夹中运行程序的时候,前者和后者的值可能并不相同,如
$ node ./code/program.js


七、浏览器API辅助工具

Node.js中有非常多的工具函数来自于浏览器端JavaScript的应用程序接口(API)。

最常用的String,Array,Math对象

1.Array

some()和every():对数组做断言判断

join()和concat():将数组转换为字符串

pop()、push()、shift()和unshift():栈和队列的相关操作

map():遍历数组并处理相关元素

filter():查询数组元素

sort():对元素进行排序

reduce()和reduceRight():进行相关计算

slice():将数组一部分复制出来

splice():直接对数组进行切割

indexOf():获取指定元素在数组中的索引值

reverse():将数组倒序排序

in操作符:在数组元素上进行迭代

2.Math

random():随机产生一个大于0小于1的数值

3.String

substr()和substring():获取子字符串

length():获取字符串长度

indexOf():获取指定值在字符串中的索引值

split():将字符串切割成数组

另外一些:setInterval()、setTimeout()、forEach()和console()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  node.js