nodejs系统学习

小子日常更新!码住!

nodejs的出现打破了js只能在浏览器运行的局限,实现了前后端编程环境与语言的统一。

有兴趣的可以阅读下狼叔文章:传送门

  1. 基本的Node.js几个特性,比如事件驱动、非阻塞I/O、Stream等
  2. 异步流程控制相关,Promise是必问的
  3. 掌握1种以上Web框架,比如Express、Koa、Thinkjs、Restfy、Hapi等,会问遇到过哪些问题、以及前端优化等常识
  4. 数据库相关,尤其是SQL、缓存、Mongodb等
  5. 对于常见Node.js模块、工具的使用,观察一个人是否爱学习、折腾
  6. 是否熟悉linux,是否独立部署过服务器,有+分
  7. js语法和es6、es7,延伸CoffeeScript、TypeScript等,看看你是否关注新技术,有+分
  8. 对前端是否了解,有+分
  9. 是否参与过或写过开源项目,技术博客、有+分

根据狼叔所列标准学习,木的明确

nodejs特点

1、基于chrome v8引擎的js运行环境

commonjs是服务端nodejs模块化的规范,是js的语言解释器,底层源码是c++开发而成的

2、事件驱动

指针对当前时间点出现的事件,抽出相应可用资源去执行,使得不断出现的事件得到执行,不堵塞

3、非阻塞I/O(input, output可指读与写),单线程

相较于传统后端语言的多线程、阻塞i/o,nodejs只有一个单线程不断轮询查询队列中是否有事件(数据库操作、文件读写、http请求等易阻塞等待的操作);
这就涉及到nodejs的底层线程池,node会将任务分发给各个线程池线程,待有结果后,将结果与相应回调函数放入队列中执行

4、stream
是一个有序的、有起点有终点的字节数据传输手段,读取和写入速度可控
首先创建一个本地服务

const http = require('http');
const fs = require('fs');
http.createServer((req, res) => {
	fs.readFile(__dirname + './file/something.txt', function (err, data) {
	    res.end(data);
	});

    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello world\n');
}).listen(9999);

tips:乱码是因为文件读取是pdk编码格式,需要用utf-8来解码 res.setHeader(‘Content-Type’, ‘text/plain; charset=utf-8’);

上面的这段代码很正经,每次收到请求后,会把相应文本读到内存中再返回给客户端。这里就会根据事实情况发生不可控,如若文件过大,势必会多占用内存,也可能导致客户段接受变慢;

根据node, (req,res)参数都是流对象,可以使用fs.createReadStream方法创建流


const http = require('http');
const fs = require('fs');
http.createServer((req, res) => {
	let stream = fs.createReadStream('./file/something.txt');
	stream.pipe(res);
}).listen(9999);

可以看出.pipe()方法帮助拿到回调函数的data,并且执行end()方法;

异步流程(i/o)

普通的读取文件

const fs = require('fs');
//读取文件
fs.readFile('./file/something.txt', (err, data) => {
    if (err) throw err;
    console.log('数据:\n', data.toString());
});
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值