1.Node.js概述
Node.js运行在服务器端的JS解释器
(1)对比js
JS运行在客户端浏览器 存在多款浏览器,有兼容性问题,Node,js运行在服务器端,只有一种解释器谷歌V8引擎,不存在兼容性问题
两者都有共同的内置(ES)对象 自定义对象 不同的宿主对象
JS用于操作网页,实现用户交互 Node,js用于服务器端开发 例如数据库访问 其它服务器的调用
(2)运行方式
①脚本模式
node 拖拽脚本文件 回车
②交互模式
node 回车 进入交互模式
两次Ctrl 退出交互模式
(3)特点
单线程运行逻辑处理 适合做I/O(输入/输出)操作为主应用 支持数万个并发链接 列如;基于社交网络的大规模WEB应用
不适合做CPU密集型的应用
2.全局对象
(1)global
检测一个变量或者函数是否是为全局的
交互模式属于全局作用域 变量和函数都是全局的,可以通过global访问
global.a golbal.fn()是全局变量 global.b是局部变量
JS的全局global 叫做window
在js中声明变量和创建函数数 使用window 检测是否为全局的
<script>
var arr = 5;
function ar() {
return '这是全局的 在全局作用域下';
}
console.log(window.arr);
console.log(window.ar())
</script>
F12 在控制台查看
(2)console对象
console.log(1);//打印日志
console.info(2);//打印消息
console.warn(3)//打印警告
console.error(4)//打印错误
console.time('')//开始计时
console.timeEnd('');//结束计时
开始计时和结束计时的值要保持一致
//开始计时
console.time('for')
for(var i=1 ; i<100000;i++){
}
//结束计时
console.timeEnd('for');
(3)process
进程对象,用来管理当前node.js这个进程 启动任何一个软件都是代表对应的进程
进入node交互模式
process.arch 查看当前CPU架构
process.platform 查看操作系统
process.version 查看当前nodejs版本号
process.pid 查看当前进程的编号
process.kill() 结束指定编号的进程
(4)Buffer
缓冲区,缓冲器,是内存中一块临时存储数据的区域
var buf=Buffer.alloc(5,’abcde’);//创建Buffer,分别空间大小为5个字节,并存储数据,在nodejs下每个汉字占3个字节
buf.toString() //将buffer转为字符串
//创建buffer
//alloc分配空间大小 单位字节 5是字节可以占5个字节 这个可以随便设置
var buf=Buffer.alloc(5,'abcde');
console.log(buf);//<Buffer 61 62 63 64 65>
//将buffer转为字符串 前提是字符串才去转换 如果是图片或者视频转换也是乱码
console.log(buf.toString());//abcde
3.模块
每个文件代表一个模块, 模块代表一个功能体
require:是一个函数,用于引入其它的模块. 得到对象导出的对象
module:当前模块的对象
module.export 当前模块导出的对象 默认是一个空对象 如果要导出那些内容只需要放入这个对象
在主模块(mian.js)下引入功能模块(circle.js) 在功能模块下传递半径,实现计算圆周率的周长个面积两个函数 导出两个函数;在主模块下导出的两个函数
功能模块 circle.js
//计算周长
function fn(r) {
return 2 * Math.PI * r;
}
//计算面积
function fun(r) {
return Math.PI * Math.pow(r, 2)
}
//导出对象
module.exports = {
myfn: fn,
myfun: fun
}
主模块mian.js
//引入同一级目录下circle.js模块
var obj = require('./circle.js');
//console.log(obj); //{ myfn: [Function: fn], myfun: [Function: fun] }
//调用导出的函数
console.log(obj.myfn(2), obj.myfun(4))