nodejs
google的v8引擎,事件驱动,非阻塞(单线程),异步IO模型(适合io密集型)提高性能
缺点:匿名函数抛出异常不好处理,trycatch之局限同步,cpu密集型受限
node奇数开发版,偶数稳定版(15发布4.0,16发布6.0,17发布8.0)
commonJS规范
node中每个文件独立运行在一个函数中(arguments.callee可见),不是全局作用域 函数的五个参数: 1)exports 要导出的对象 2)require 调用外部的函数 3)module模块本身,exports为其属性 4)__filename绝对路径带文件名 5)__dirname绝对路径文件夹(不带文件名) module.exports和exports问题 exports变量等于module.exports,所以不可exports指向新对象,只可添加属性
nodejs的全球变量global(类浏览器window)
npm包
包结构 package.json 描述文件(必须) bin可执行二进制 lib 代码 doc文档 test单元测试 npm命令 npm install(i) npm install 包名 --save(s) //添加至生产依赖(dependencies) npm install 包名 --save-dev //添加至开发依赖(devDependencies) npm install -d(D) //同--save-dev npm -version(v) npm search 待搜//搜索含的包 npm init //初始化 npm install 包名 -g //全局安装 npm install -g cnpm --registry=https://registry.npm.taobao.org //淘宝镜像 可省run的两个关键字 - npm start // - npm test // 当引入模块标识名字时,从当前node_modules开始找,依次找到根目录的node_modules
Buffer(缓冲区:node里面的新对象)
Buffer结构和数组很像,操作类似数组 以unicode格式存其对应的8位(8bit=1byte)二进制数据(电脑显示成十六进制,特别地,Buffer一个utf8汉字占用三个字节)//注:电脑单独显示数字任何状态都是10进制(防乱),buffer对象内才16 官网不推荐构造函数方式新建buffer,常用: Buffer.alloc(size),初始为00, Buffer.allocUnsafe(size),初始不安全 Buffer.from('str')字符串转换为buffer buf.toString() 将buffer格式转化为字符串 buffer范围00-ff,超出255只保留后8位,定义长度即固定不可改(对底层实际修改新建),超出无效
文件系统(fs)
//直接从内存写入读取 var fs = require('fs') fs.open//加Sync同步 fs.write fs.read fs.close fs.writeFile fs.readFile//流式文件写入读取 var ws = fs.createStream(path) ws.write('哈哈') ws.write('嘿嘿') ws.end() //特别地,读取时,必须绑定data事件其自动读取 var rs = fs.createReadStream(path) var ws = fs.createWriteStream(path) rs.on('data',function(data){})//data一次读取65536字节,不常用 rs.pipe(ws)//直接将可读流写到可写流 特别的,ws.once('open',callback)监听(close) 等等