1.nodeje概述
nodejs基于谷歌V8引擎,运行在服务器端的语言,基于JS
对比JS和nodejs
(1)JS运行字客户端浏览器,存在多个浏览器,容易产生兼容性的问题;nodejs在服务器端只有一个环境,不存在兼容性问题
(2)两者都有内置对象、自定义对象、宿主对象(根据执行环境的不同划分)
(3)JS用于网页中的交互效果,nodejs nodejs用于服务器端的操作,例如数据库的操作,文件的操作...
下载网址:nodejs.org nodejs.cn
nodejs的特点
单线程逻辑处理
非阻塞的异步I/O处理(input/output)
支持数万个并发连接
nodejs的应用场景
基于社交网络的大规模web应用
nodejs不适合CPU密集型的应用
递归、数据加密解密、数据挖掘和数据分析
nodejs的执行方式
脚本模式:node 路径 回车
交互模式:node 回车 进入交互模式 ; 退出:ctrl+c 两次 或者 .exit 回车
2.全局对象
全局作用域下的变量就是全局对象下的属性,全局对象下的函数就是全局对象下的方法,可以使用全局对象来访问
(1)nodejs:global
在交互模式下,声明的变量和创建的函数都属于全局下的,可以使用global来访问
例如:var a=1; 可以用global.a 访问
在脚本模式下,声明的变量和创建的函数都不属于全局下的,一个文件默认会取去创建一个独立的作用域,叫做文件(模块)作用域,可以防止污染全局
(2)JS:window
在浏览器下,文件中声明的变量和函数都属于是全局作用域下的,会污染全局。用window来访问 例如:var a=1; 可以用winodw.a 访问
2.1 console对象——控制台
global.console.log() | 打印日志 |
global.console.info() | 打印消息 |
global.console.warn() | 打印自定义警告 |
global.console.error() | 打印自定义错误 |
global.console.time('字符串') | 开始计时 |
global.console.timeEnd('字符串') | 结束计时,自定义字符串前后保存一致 |
2.2 process对象——进程
process.arch | 查看当前CPU架构 |
process.platform | 查看当前的操作系统 |
process.env | 查看当前计算机的环境变量 |
process.version | 查看当前nodejs的版本号 |
process.pid | 查看当前的进程编号 |
process.kill() | 结束某个编号的进程 |
2.3 Buffer对象——缓冲区
一块用于临时存储数据的内存区域,可以存储文件数据、网络上传输的资源(视频直播网页等)
创建Buffer var buf=Buffer.alloc(5,'abcde')
将Buffer数据转为字符串 buf.toString()
3.模块
模块就是一个封装好的功能体
在nodejs下,模块分为自定义模块、核心模块(官方提供)、第三方模块
3.1 自定义模块
在nodejs下,任意一个js文件都是一个模块,文件中的代码默认被一个构造函数所包含
(function(exprots,require,module,__filename,__dirname){ //程序员编写代码 }) | |
__filename | 当前模块的完整路径和文件名称 |
__dirname | 当前模块的完整路径 |
require() | 引入一个模块 ('./***.js') |
module | 指代当前的模块对象 |
module.exports | 当前模块导出的对象,包含供其它模块使用的属性和方法 |
exprots | 等价于module.exports |