环境&&工具

node.js

  • CommonJS
  1. 每个文件是一个模块,有自己的作用域
  2. 每个模块内部module变量代表模块本身
  3. 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堆外  分配物理内存
  1. buf.length
  2. buf.toString()
  3. buf.fill()                                     填充数据
  4. buf.equals()
  5. buf.indexOf()
  6. 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基础整理相关推荐

  1. 机器学习 —— 基础整理(六)线性判别函数:感知器、松弛算法、Ho-Kashyap算法...

    这篇总结继续复习分类问题.本文简单整理了以下内容: (一)线性判别函数与广义线性判别函数 (二)感知器 (三)松弛算法 (四)Ho-Kashyap算法 闲话:本篇是本系列[机器学习基础整理]在time ...

  2. nodejs学习巩固笔记-nodejs基础,Node.js 高级编程(核心模块、模块加载机制)

    目录 Nodejs 基础 大前端开发过程中的必备技能 nodejs 的架构 为什么是 Nodejs Nodejs 异步 IO Nodejs 事件驱动架构 全局对象 全局变量之 process 核心模块 ...

  3. Nodejs基础之consolidate

    Nodejs基础之consolidate 模板引擎库,可以从npm上下载 基础用法 const consolidate = require('consolidate') const app = exp ...

  4. 量子计算基础整理(上)

    量子计算基础整理 目录 量子计算基础整理 写在前面 量子力学基础 量子的四个特性 量子态的描述 定义 状态演化 叠加态与测量 相态,纯态和混合态 混合态的表示 可观测量与量子观测 复合系统与联合测量 ...

  5. lda 吗 样本中心化 需要_机器学习 —— 基础整理(四):特征提取之线性方法——主成分分析PCA、独立成分分析ICA、线性判别分析LDA...

    本文简单整理了以下内容: (一)维数灾难 (二)特征提取--线性方法 1. 主成分分析PCA 2. 独立成分分析ICA 3. 线性判别分析LDA (一)维数灾难(Curse of dimensiona ...

  6. 只需几分钟跟小猫学前端(内含视频教程):nodejs基础之用express、ejs、mongdb建设简单的网站...

    开门见山视频教程 https://v.qq.com/x/page/d0645s79xrq.html 前 言: 这是小猫的第二篇node教程,第一篇教程是一个简单的试水,小猫的node教程面向对象为没有 ...

  7. 机器学习 —— 基础整理(一)贝叶斯决策论;二次判别函数;贝叶斯错误率;生成式模型的参数方法...

    本文简单整理了以下内容: (一)贝叶斯决策论:最小错误率决策.最小风险决策:经验风险与结构风险 (二)判别函数:生成式模型:多元高斯密度下的判别函数:线性判别函数LDF.二次判别函数QDF (三)贝叶 ...

  8. Nodejs基础中间件Connect

    从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发.Nodejs框架是基于V8的引擎,是目前速度最快的Javascript引擎.chrome浏 ...

  9. c语言中return的作用_C语言入门基础整理

    学习计算机技术,C语言可以说是必备的,他已经成为现在计算机行业人学习必备的,而且应用也是十分的广泛,今天就来看看拥有几年c语言工作经验的大神整理的C语言入门基础知识,没有学不会,只有不肯学. 结构化程 ...

最新文章

  1. 内部同步 外部同步 java_如何用匿名内部类实现 Java 同步回调
  2. Python安装第三方包package
  3. Cocos2d 3.0继承自Sprite的类在addChild后出现故障
  4. linux打包启动这着的文件,linux – 打开一个RPM文件并重新打包它
  5. linux配置apache2
  6. VSCode配置Python开发环境
  7. java实现萤火虫算法_基于萤火虫算法的矢量图生成方法
  8. 自签名证书制作和使用方法
  9. SQL Transformation
  10. 掌上聊app v1.5.5
  11. android驱动wifi芯片,Android驱动——Wlan驱动
  12. Linux:命令gedit主要作用是什么?
  13. 利用cad等高线生成dem的步骤
  14. Hive正则表达式案例
  15. Unity中点击物体后让其消失(注意:要使用hit.collider,而不是this,要时刻注意你要哪一个消失)
  16. Ubuntu下键盘输入错乱问题
  17. pytorch visdom安装启动问题
  18. DP232在兼容FT232RL的注意事项
  19. 超级计算机使用机时,使用天河二号超级计算机资源申请表(10页).doc
  20. AI人工智能,OCR 识别技术图像处理 OCR文字识别软件

热门文章

  1. 关于SpringBoot和Thymeleaf模板中遇到的问题
  2. Quartz.NET 入门
  3. [biztalk笔记]-1.Hello World!
  4. [转]Time Tracker Starter Kit 简介
  5. 数据结构上机实践第五周项目2 - 建立链栈算法库
  6. caffe学习日记--Lesson2:再看caffe的安装和使用、学习过程
  7. Vscode中HTML与CSS代码的快速写法
  8. drools规则拼接_Drools-规则层次结构和条件执行
  9. mysql空指针异常处理_mysql 查询空指针异常
  10. 软件测试nextdata函数决策表,软件测试NextDate函数决策表测试法实验报告