Vite引入虚拟文件的实现

本文主要介绍了Vite引入虚拟文件的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

背景

在新项目升级vue3以后,自然而然的就把vue-cli&webpack更换成了vite,不得不说vite真的很香,不仅编译速度刚刚的,而且在vue3的新功能上也有更好的支持.

不过在开发过程中也遇到了一些问题

在看到vite-plugin-pages插件之后,突然看到这样的写法:

 import routes from "virtual:generated-pages";

其实在使用很多vite插件的时候,发现在引用中存在这样的用法:

 import xxx from "virtual:xxx";

那么这个virtual:xxx怎么之前没有见过,这明显不是一个npm上面的包,那会是什么?

引入虚拟文件

在看了vite的文档之后才明白,原来这是一个引入虚拟文件功能,他可以生成一个虚拟的文件让你来引入.

在vite文档的插件API中引入一个虚拟文件处说到这个功能,章节里面有写到支持引入你一个虚拟文件,也就是这个文件并不存在,而是通过代码临时生成的.

而这个生成是通过vite的插件来完成,也就是说在nodejs环境中来生成对应的虚拟文件

vite-plugin-pages就是通过这个功能实现的,他首先在编译时遍历对应的页面目录,根据目录结构和文件名的命名规则来动态生成对应的路由表,这样就很好的完成了本地目录结构到动态路由之间的良好交互.

其实在nuxt中也有动态路由的功能,不过他可没有虚拟引入,在项目启动前来动态修改webpack配置,使用definePlugin来将路由表传递给前端代码的.

通过引入虚拟文件的功能,我们就避免了需要通过传递修改常量的方式,将对应的数据传递给前端代码.

而除了传递常量,虚拟引入可以做的更多,要知道他可是引入的是一个虚拟js文件,这表示我们也可以动态的生成函数以及代码逻辑在其中.

例子

举个例子,比如可以在生成的代码中自动导入需要的文件,然后返回一个函数,通过这个函数来使用之前导入的文件,这样我们就不需要在实际使用的导入这些文件了,通过返回虚拟文件中导出的函数我们就可以直接使用这些本来要导入的文件.

 import a from 'a-module' import b from 'b-module' ... import z from 'z-module' const modules = {a,b,...,z} export default useModule(name){ return modules[name] }

之前使用

以上就是Vite引入虚拟文件的实现的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » Vue.js 教程