第1章-安装Node.js及相关要点-1.3.Node.js的全局变量和保留字
2017-03-25 18:56
861 查看
一、浏览器的JavaScript中,如果遗漏了var,变量就会变成全局变量,污染全局命名空间。
二、浏览器的JavaScript中有window对象,但是在Node.js中却没有(显然我们不需要同浏览器窗口打交道),它为开发者提供了新的对象/关键字;
1.process2.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()
相关文章推荐
- 第1章-安装Node.js及相关要点-1.10.监听文件变化
- 第1章-安装Node.js及相关要点-1.2.Node.js的基础和语法
- 第1章-安装Node.js及相关要点-1.7.使用Node.js的HTTP模块来创建一个简单服务器
- 第1章-安装Node.js及相关要点-1.4.Node.js的核心模块
- 第1章-安装Node.js及相关要点-1.9.Node.js集成开发环境和代码编辑器
- 第1章-安装Node.js及相关要点-1.8.调试Node.js程序
- 第1章-安装Node.js及相关要点-1.5.Node.js读写文件
- 第1章-安装Node.js及相关要点-1.1.安装Node.js
- 第1章-安装Node.js及相关要点-1.6.优化Node.js中的回调函数
- Node.js项目实战-构建可扩展的Web应用(第一版): 1 安装Node.js及相关要点
- Node.js模块全局安装路径配置
- node.js认识学习三:npm install 本地安装与全局安装的区别
- node.js+express+mongodb+webstorm 相关安装(windows)
- nodejs npm install全局安装和本地安装的区别
- node.js WebService异常处理(domain)以及利用domain实现request生命周期的全局变量
- Node.js 全局变量命名空间与命名空间中require模块的冲突
- Linux CentOS 系统安装最新版本Node.js环境及相关文件配置
- Linux CentOS6系统安装最新版本Node.js环境及相关文件配置
- 终于解决:在客户端和服务端都用dojo Loader来实现异步加载后,Node.js的全局变量__dirname无法使用
- Node.js学习--基础知识(8)--全局对象和全局变量