nodejs
的出现为前端行业带来了无限的可能性,让很多原来只负责客户端开发的同学也慢慢开始接触和使用服务器端技术.
虽然nodejs
带来了很多的好处,但是它也存在自身的局限性.和那些传统老牌的编程语言相比,如JAVA
,PHP
.nodejs
并不能成为它们的替代品,而且在可预估的未来,也很难撼动那些老牌编程语言的地位.
目前nodejs
主要有以下几个应用场景.
- 前端工程化,比如
rollup
,webpack
在工程化方向的探索 nodejs
中间层- 客户端集成
nodejs
,比如electron
- 市面上一些不太复杂的应用选择
nodejs
作为后端编程语言
本文主要讲一讲nodejs
作为中间层的一些实践,查看下图.
传统的的开发模式由浏览器直接和Server
层直接通信,中间层的加入意味着在浏览器和Server
层之间额外添加了一层.
原来客户端直接向Server
发送请求,Server
层收到请求后经过计算处理将结果返回给浏览器.
如今浏览器将请求发送给node层
,node层
经过一轮处理后再向Server层
发起请求.Server层
处理完毕将响应结果返回给node层
,node层
最后将数据返回给浏览器.
因为node层
的出现,Server层
可以只用关注业务本身,而不必理会前端对字段的特殊要求。
node层
可以向server
层获取数据,再通过对数据的计算整合转换成符合前端UI
要求的数据格式.另外整个应用如果采用微服务架构,那么Server层
会有很多台管理单独业务模块的服务器,node层
就很好的适配了微服务的架构,它可以向多台服务器发起请求获取到不同模块的数据再整合转化发送给前端.
下面着重介绍一下nodejs
作为中间层的部分实践.
nodejs进阶视频讲解进入学习
代理转发
代理转发在实际中有很多广泛的应用.浏览器首先将请求发送给node服务器
,请求收到后node服务器
可以对请求做一些处理,比如将原来的路径变换一下,请求头的信息改变一下,再把修改后的请求发送给远程真实的服务器.
远程服务器计算出响应结果再返回给node服务器
,node服务器
仍然可以对响应做选择性处理再分返回给浏览器.
代理转发可以解决前端日常开发中经常遇到的跨域问题,另外它还屏蔽了远程真实服务器的细节,让浏览器只与node服务器
通信.下面是简单的实践.
const express = require('express');
const {
createProxyMiddleware } = require('http-proxy-middleware');
const app = express();//创建应用
app.use("/api",createProxyMiddleware( //设置代理转发
{
target: 'http://www.xxx.com', //举例随便写的地址
cha