使用Node.js 实现网络代理(无框架,通过http-proxy)
使用场景
使用场景自不必多说,包括正向代理、反向代理,在Node.js的特有场景中,其实还包含BFF,服务端中间件等等。如果你是在一个比Nginx更细粒度的,并且能够在框架内集成业务的场景,非常推荐继续阅读。
安装
npm install http-proxy
使用场景自不必多说,包括正向代理、反向代理,在Node.js的特有场景中,其实还包含BFF,服务端中间件等等。如果你是在一个比Nginx更细粒度的,并且能够在框架内集成业务的场景,非常推荐继续阅读。
npm install http-proxy
模块化开发最终的目的是将程序划分成一个个小的结构。在这个结构中编写属于自己的逻辑代码,有自己的作用域,不会影响到其他的结构。结构可以将自己希望暴露的变量、函数、对象等导出给其结构使用。也可以通过某种方式,导入另外结构中的变量、函数、对象等。
上面说提到的结构,就是模块,按照这种结构划分开发程序的过程,就是模块化开发的过程。
操作系统为我们提供了阻塞式调用和非阻塞式调用:
所以我们开发中的很多耗时操作,都可以基于这样的 非阻塞式调用:
比较简单,直接上代码吧~
const http = require('http');
// 创建一个web服务器
const server = http.createServer((req, res) => {
res.end("Hello Server");
});
// 启动服务器,并且制定端口号和主机
server.listen(8888, '0.0.0.0', () => {
console.log("服务器启动成功~");
});
我们可以想象当我们从一个文件中读取数据时,文件的二进制(字节)数据会源源不断的被读取到我们程序中;
在之前学习文件的读写时,我们可以直接通过 readFile或者 writeFile方式读写文件,为什么还需要流呢?
直接读写文件的方式,虽然简单,但是无法控制一些细节的操作;
比如从什么位置开始读、读到什么位置、一次性读取多少个字节;
读到某个位置后,暂停读取,某个时刻恢复读取等等(切片,断点);
或者这个文件非常大,比如一个视频文件,一次性全部读取并不合适;
Node.js是一个基于V8 JavaScript引擎的JavaScript运行时环境。
参照:
coderwhy - 深入Node.js技术栈
我们经常会说:不同的浏览器有不同的内核组成
path模块用于对路径和文件进行处理,提供了很多好用的方法。并且我们知道在Mac OS、Linux和window上的路径时不一样的,window上会使用 \或者 \ 来作为文件路径的分隔符,当然目前也支持 /,在Mac OS、Linux的Unix操作系统上使用 / 来作为文件路径的分隔符;
提供可移植操作系统接口(英语:Portable Operating System Interface,缩写为POSIX),
Linux和Mac OS都实现了POSIX接口,Window部分电脑实现了POSIX接口。
如果我们分享给世界上所有的程序员使用,有哪些方式呢?
方式一:上传到GitHub上、其他程序员通过GitHub下载我们的代码手动的引用;
方式二:使用一个专业的工具来管理我们的代码
将结合自建框架完善,后续更新