nodeJS读书笔记

背景知识

node.js创始人—Ryan Dahl。2009.2首次在自己博客创建Web服务器并提供一个库。5月在GitHub发布最初版本。

事件驱动

在于注册事件后,等待事件触发执行,而不需要依赖自身出现的顺序。充分利用了系统资源,执行代码无需阻塞等待某种操作完成,有限的资源可以用在其他任务。

性能出众

以单进程、单线程模式运行。

单线程

这里指主线程为“单线程”,所有阻塞的部分交给一个线程池处理,然后主线程通过一个队列跟线程池协作。

异步、非阻塞I/O

例如文件操作等许多函数都是异步执行的,
发出I/O调用;执行回调

注意事项:在处理CPU密集型应用、模板渲染、压缩、解压缩、加密、解密等操作都是nodejs的弱项

nodeJS内容

nodeJS自带REPL(交互式运行环境),也可以在浏览器上尝试。

console

console.dir()将一个对象输到控制台
console.time() ; console.timeEnd()输入代码的运行时间
console.trace()输出当前位置栈信息。

包管理

npm init

可生成一个package.json文件,是整个项目的描述文件,通过这个文件可以清楚了解项目的包依赖关系、版本等等信息。
直接命令:npm init -y 或 npm init --yes

npm i < package name >

–save 或 -S可放在dependencies字段中
继续加 -dev 则在开发阶段devDependencies字段中
建议将所有的项目安装包都记录在package.json文件中,我们使用使用时,只需执行npm i 即可,不需要时npm uninstall。

核心模块

http模块

创建Http服务器、客户端

url模块

url地址处理
url.parse():解析一个url地址,返回一个url对象
url.fomate(urlObj):接受一个url对象为参数,返回一个完整url地址
url.resolve(from,to)接受一个base url对象和一个href url 对象,像浏览器一样解析,返回完整地址。

querystring模块

查询字符串处理
querystring.parse():类似JSON.parse()
querystring.stringify():类似JSON.stringify();

常用模块

util模块

util.inspect():返回一个对象反序列化形成的字符串
util.format():返回使用占位符格式化的字符串
util.log():类似console.log()。

path模块

路径处理
path.join():将所有参数连接起来,返回一个路径
path.extname():返回路径参数的拓展名,没有时返回一个空字符串
path.parse():将路径解析为一个路径对象
path.format():接受一个路径对象参数,返回一个完整的路径地址。

dns模块

dns.resolve():将一个域名解析为一个指定类型的数组
dns.lookup():返回第一个被发现的IPv4或者IPv6的地址。
dns.reverse():通过IP解析域名。

文件世界

打开文件

fs.open(path,flags[,mode],callback)

flag值 说明
r 以读取模式打开文件,文件不存在抛出异常
r+ 以读写模式打开文件,文件不存在抛出异常
rs 以同步方式读取文件
rs+ 以同步方式读取和写入文件
w 以写入模式打开文件,文件不存在就创建
wx 类似w,但文件路径存在则文件写入失败
w+ 以读写模式打开文件,文件不存在就创建
wx+ 类似w+,但文件路径存在则文件读写失败
a 以追加模式打开文件,文件不存在则创建
ax 类似a,但文件路径存在则追加失败

关闭文件

fs.close(fd,callback)

读取文件

fs.read()
fs.readFile()

写入文件

fs.writeFile()
fs.appendFile();

其他文件操作(csv、xml、json)

1、首先下载 (npm i csv)
2、解析生成csv文件
3、将csv文件转换为txt文件

目前nodeJS并不支持中文GBK或GB2312之类的编码,需引入第三方模块(iconv或iconv-lite; iconv仅支持Linux)
目前支持:utf-8、ucs2、ascii、binary、base64、hex

网络天地

TCP服务器

使用net模块。
net.createServer()

let net = require('net');
let server = net.createServer((socket)=>{
    
	conosle.log('someone connect');
})

监听客户端连接
server.listen()

server.listen(8888,()=>{
    
				console.log('server is listening');
})

手动监听写法

server.listen(8888);
server.on('listening',()=>{
    
			console.log(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值