前言
前面两节,我们分别了解了vite模板的创建和本地serve的创建大致过程,受篇幅长度的影响,只说了个大概,还是有很多细节值得拿来细说的,就比如:proxy代理
示例
我们随便找一个简书的接口在项目中进行访问

然后在本地做proxy代理进行解决

源码
获取配置
本地serve的创建一文中我们提到,在serve创建之前会先拉取配置,因此,我们将代码定位到resolveConfig函数中
此时的config还只有我们在scripts中传入的port

对于在vite.config配置文件中的相关信息,vite是需要单独进行拉取的

我们没有指定--c或--config,故vite会尝试以内置的几种配置文件名称来做查找,显然,我们这里命中的是.js文件

那么知道了文件路径,就可以使用node的“读”api来获取源码了,但不是很方便做二次处理,因为拿到的都是字符串形式的,故可以像vite一样使用打包工具并利用其plugin特性来对源码进行操作

至此,我们只是拿到了vite.config.js中的字符串源码,我们还需要从配置中去读取相关的信息。回想一下,我们在日常coding时是怎么做的,我们是不是需要import xxx from 'url'或import 'url'
那我们只需要想办法获取要import的路径

然后去执行import是不是就可以了

当然,首先要保证import的文件是存在的

至此,我们就顺利拿到了我们的配置项

使用配置
现在就可以判断是否启用并执行对应的逻辑了,可以看到,这里是自定义了一个中间件,那也就意味着,页面中所有的url请求,都会去跑一遍中间件,我们只需要在此做一些处理即可

好的吧,就是将从浏览器端发送的请求变成从node端发送而已,确实,毕竟所谓的跨域说到底不过是浏览器厂商的标准,关我node啥事儿嘞!!!

网友评论