nodejs基础整理
环境&&工具
node.js
- CommonJS
- 每个文件是一个模块,有自己的作用域
- 每个模块内部module变量代表模块本身
- module.exports属性代表模块对外的接口 //区分exports与module.exports的区别
- global
- process
require特性
- module被加载的时候执行,加载后缓存
- 一旦出现某个模块被循环加载,就只输出已执行部分,未执行部分不会输出
- /绝对路径 , ./相对路径。 支持js、json、node扩展名,
export
const exports=module.exports //类似快捷方式。 注意:不要修改指向
exports.test = 100;
复制代码
global //global.testVar2 = 200
process
const {argv, //所有参数 argv0, //argv的引用,少用execArgv, //调用nodejs命令时,传入的参数。execPath //执行脚本路径} = process;
const {env} = process; //环境
process.cwd() //当前路径
setimmediate() //异步,等同步执行完了调用,下一个队列
process.nextTick() //队列尾部,比上一个执行的早 > settimeout > setimmediate复制代码
***:event loop原理相关
process.nextTick> setTimeout > setImmediate
path
const {normalize} = require('path')
normalize('/usr//local/bin')
normalize('/usr//local/../bin')const {join} = require('path');
join('/usr', '/local','/bin/');
join('/usr','../local/','bin/');const {resolve} = require('path')const {basename,dirname,extname} = require('path')const path = require('path')
__dirname __filename //绝对路径
process.cwd() //当前路径
path.resolve('./)复制代码
Buffer
- 处理二进制文件流
- 实例类似整数数字 ,大小固定
- C++代码在V8堆外 分配物理内存
- buf.length
- buf.toString()
- buf.fill() 填充数据
- buf.equals()
- buf.indexOf()
- buf.copy()
Buffer.byteLength('test')
Buffer.isBuffer(Buffer.from([1,2,3]))const buf1 = Buffer.from('this')
const buf2 = Buffer.from('is')
const buf = Buffer.concat([buf1,buf2])const buf = Buffer.from('this is a test!')
buf.lengthconst buf1 = Buffer.alloc(10); //申请的空间大小 ,默认填充
const buf2 = Buffer.allocUnsafe(10); //申请的空间大小
buf2[0]=2;console.log(buf.toString('base64'));const buf3 = Buffer.alloc(10);
console.log(buf3);
console.log(buf3.fill(10,2,3)); //填充数据10,从第2个开始,到第6个const buf4 = Buffer.from('this')
const buf5 = Buffer.from('this')
buf4.equals(buf5)buf4.indexOf('t')cosnt StringDecoder = require('string_decoder').StringDecoder;
const decoder = new StringDecoder('utf8');const buf = Buffer.form('test copy');
for(let i=0;i<buf.length;i+=5){const b=Buffer.allocUnsafe(5);buf.copy(b,0,i); //提取buf中i开始的数据,到b中从0开始 //buf.copy(b,0,i,i+5)console.log(b.toString());console.log(decoder.write(b)); //乱码问题
}复制代码
事件
const EventEmitter = require('events');
class CustomEvent extends EventEmitter{ //step1:继承事件
}const ce = new CustomEvent(); //step2:实例化
ce.on('test', ()=>{ //step3:绑定事件console.log('this is a test!');
})
ce.on('error', (err,time)=>{ //step3:绑定事件.带参console.log('err');
})
ce.once('onceTest',()=>{})
setInterval(()=>{ce.emit('test');ce.emit('error',new Error('oops!'),Date.now());ce.emit('onceTest')
},500);
--------------------------------------------------------
ce.on('test',fn1)
ce.on('test',fn2) setTimeout(()=>{ce.removeListener('test',fn2)//ce.removeAllListener('test')
},1500)复制代码
fs文件系统
const fs=require('fs');
fs.readFile('./32_readfile.js','utf8',(err,data)=>{ //读if(err) throw err;console.log(data);
})const data= fs.readFileSync('./01_run.js','utf-8');const fs=require('fs')
fs.writeFile('./test','this is a test',{ //写encoding:'utf5'
},err=>{if(err) throw err;console.log('done!')
})
<!--
const content = Buffer.from('this is a test');
fs.writeFile('./text',content,err=>{if(err) throw err;console.log('done!')
})
-->const fs = require('fs')
fs.stat('./34_stat.js',(err,stats)=>{ //文件状态if(err) throe err;console.log(stats.isFile())console.log(stats.isDirectory())
})fs.rename('./test','test1.txt',err=>{ //重命名
...
})
fs.unlink('./test'err=>{ //删除})fs.readdir('./',(err,files)=>{ //读取文件 })fs.mkdir('test',err=>{ //创建文件夹
})fs.rmdir('test',err=>{ //删除
})fs.watch('./',{ //监听文件变化recursive:true
},(eventType,filename)=>{console.log(eventType,filename);
})复制代码
数据流
const fs=require('fs');const rs = fs.createReadStream('./41_readstream.js');rs.pipe(process.stdout); //把当前文件读出来const ws = fs.createWriteStream('./test.txt'); //写入流
const setInt = setInterval(()=>{const num = parseInt(Math.random() * 10);if(num <7){ws.write(num + '')}else{clearInterval(setInt);ws.end()}
},200)
ws.on('finish',()=>{console.log('done!')
})复制代码
处理回调地狱 callback hell
const fs = require('fs');
const promisify = require('util').promisify;
const read = promisify(fs.readFile) //处理回调read('./test.js').then(data=>{ console.log(data.toString());
})catch(ex =>{console.log(ex)
})
--------------------
async function test(){try{const content = await read('./test.js'); //异步语法糖模式}cacth(e){ ... } console.log(content)
}复制代码
复制代码
nodejs基础整理相关推荐
- 机器学习 —— 基础整理(六)线性判别函数:感知器、松弛算法、Ho-Kashyap算法...
这篇总结继续复习分类问题.本文简单整理了以下内容: (一)线性判别函数与广义线性判别函数 (二)感知器 (三)松弛算法 (四)Ho-Kashyap算法 闲话:本篇是本系列[机器学习基础整理]在time ...
- nodejs学习巩固笔记-nodejs基础,Node.js 高级编程(核心模块、模块加载机制)
目录 Nodejs 基础 大前端开发过程中的必备技能 nodejs 的架构 为什么是 Nodejs Nodejs 异步 IO Nodejs 事件驱动架构 全局对象 全局变量之 process 核心模块 ...
- Nodejs基础之consolidate
Nodejs基础之consolidate 模板引擎库,可以从npm上下载 基础用法 const consolidate = require('consolidate') const app = exp ...
- 量子计算基础整理(上)
量子计算基础整理 目录 量子计算基础整理 写在前面 量子力学基础 量子的四个特性 量子态的描述 定义 状态演化 叠加态与测量 相态,纯态和混合态 混合态的表示 可观测量与量子观测 复合系统与联合测量 ...
- lda 吗 样本中心化 需要_机器学习 —— 基础整理(四):特征提取之线性方法——主成分分析PCA、独立成分分析ICA、线性判别分析LDA...
本文简单整理了以下内容: (一)维数灾难 (二)特征提取--线性方法 1. 主成分分析PCA 2. 独立成分分析ICA 3. 线性判别分析LDA (一)维数灾难(Curse of dimensiona ...
- 只需几分钟跟小猫学前端(内含视频教程):nodejs基础之用express、ejs、mongdb建设简单的网站...
开门见山视频教程 https://v.qq.com/x/page/d0645s79xrq.html 前 言: 这是小猫的第二篇node教程,第一篇教程是一个简单的试水,小猫的node教程面向对象为没有 ...
- 机器学习 —— 基础整理(一)贝叶斯决策论;二次判别函数;贝叶斯错误率;生成式模型的参数方法...
本文简单整理了以下内容: (一)贝叶斯决策论:最小错误率决策.最小风险决策:经验风险与结构风险 (二)判别函数:生成式模型:多元高斯密度下的判别函数:线性判别函数LDF.二次判别函数QDF (三)贝叶 ...
- Nodejs基础中间件Connect
从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发.Nodejs框架是基于V8的引擎,是目前速度最快的Javascript引擎.chrome浏 ...
- c语言中return的作用_C语言入门基础整理
学习计算机技术,C语言可以说是必备的,他已经成为现在计算机行业人学习必备的,而且应用也是十分的广泛,今天就来看看拥有几年c语言工作经验的大神整理的C语言入门基础知识,没有学不会,只有不肯学. 结构化程 ...
最新文章
- 内部同步 外部同步 java_如何用匿名内部类实现 Java 同步回调
- Python安装第三方包package
- Cocos2d 3.0继承自Sprite的类在addChild后出现故障
- linux打包启动这着的文件,linux – 打开一个RPM文件并重新打包它
- linux配置apache2
- VSCode配置Python开发环境
- java实现萤火虫算法_基于萤火虫算法的矢量图生成方法
- 自签名证书制作和使用方法
- SQL Transformation
- 掌上聊app v1.5.5
- android驱动wifi芯片,Android驱动——Wlan驱动
- Linux:命令gedit主要作用是什么?
- 利用cad等高线生成dem的步骤
- Hive正则表达式案例
- Unity中点击物体后让其消失(注意:要使用hit.collider,而不是this,要时刻注意你要哪一个消失)
- Ubuntu下键盘输入错乱问题
- pytorch visdom安装启动问题
- DP232在兼容FT232RL的注意事项
- 超级计算机使用机时,使用天河二号超级计算机资源申请表(10页).doc
- AI人工智能,OCR 识别技术图像处理 OCR文字识别软件
热门文章
- 关于SpringBoot和Thymeleaf模板中遇到的问题
- Quartz.NET 入门
- [biztalk笔记]-1.Hello World!
- [转]Time Tracker Starter Kit 简介
- 数据结构上机实践第五周项目2 - 建立链栈算法库
- caffe学习日记--Lesson2:再看caffe的安装和使用、学习过程
- Vscode中HTML与CSS代码的快速写法
- drools规则拼接_Drools-规则层次结构和条件执行
- mysql空指针异常处理_mysql 查询空指针异常
- 软件测试nextdata函数决策表,软件测试NextDate函数决策表测试法实验报告