@meadmin/midway-vite-view
midway 的 vite 服务端渲染和客户端渲染组件,
3,844
10
| Install | |
|---|---|
npm install @meadmin/midway-vite-view |
|
| Latest Version: | 1.3.14 |
| License: | MIT |
| Last Updated: | Oct 22, 2026 |
| Links: | GitHub · npm |
Maintainer: yuntian001
midway-vite-view
meadmin 的 midway+vite 服务端渲染和客户端渲染组件,支持Vite2、Vite3,支持多vite项目并存。
github
https://github.com/yuntian001/midway-vite-view
使用示例
https://github.com/yuntian001/midway-vite-view/tree/main/example
使用说明
midway+vite 依赖于静态文件托管组件:@midwayjs/static-file@3
所有静态文件需要按照@midwayjs/static-file@3规则放在对应的文件夹中,@midwayjs/static-file@3默认的静态文件夹为public
| web 支持情况 | |
|---|---|
| @midwayjs/koa | ✅ |
| @midwayjs/faas | ✅ |
| @midwayjs/web | ✅ |
| @midwayjs/express | ❌ |
代码示例
快速开始
- 安装组件扩展包
$ npm install vite
$ npm install midway-vite-view
- 项目根目录下新建public文件夹
- view 文件夹下创建放入对应vue项目
- midway configuration.ts中引入视图文件
import * as viteView from 'midway-vite-view';//引入view组件
@Configuration({
imports: [
//其余代码不变
viteView, //导入view组件
],
})
//其余代码不变
- midway 中加入配置文件
view: { //midwayjs 视图配置 说明参考 https://midwayjs.org/docs/extensions/render
defaultViewEngine: 'viteView',
},
viteView: { //midway-vite-view 配置配置详细说明见下方
rootDir:'view',
views: {
'admin': {//相对于rootDir的前端包路径
// entryServer: 'admin/src/entry-server.ts',//admin暂未支持服务端渲染
entry: 'index.html',//html入库文件,相对于当前包路径
viteConfigFile: resolve(import.meta.dirname, '../../view/admin/vite.config.ts'),
staticFileKey:'viewAdmin',
hmrPort:23679,
},
'index': {//相对于rootDir的前端包路径
entryServer: 'src/entry-server.ts',
entry: 'index.html',//html入库文件,相对于当前包路径
viteConfigFile: resolve(import.meta.dirname, '../../view/index/vite.config.ts'),
staticFileKey:'viewIndex',
hmrPort:23680,
},
},
},
staticFile: {
dirs: {
default: {
prefix: '/',
dir: 'public',
},
viewAdmin:{
prefix: '/html/admin/',
dir: 'view/admin/dist',
},
viewIndex:{
prefix: '/html/index/',
dir: 'view/index/dist',
},
},
},
-
vite 配置文件中 按示例进行更改
-
控制器中调用
//服务端渲染
return this.ctx.render('admin', {
assign:{keyWords:'vite midway'},//html中{{keyWords}}的会被替换为vite midway
});
//客户端渲染
return this.ctx.render('index',{
ssr:false, //false代表强制客户端渲染,默认会根据配置自动匹配
assign:{keyWords:'vite midway'},//html中{{keyWords}}的会被替换为vite midway
});
- package.json中打包命令加入 && vite-view build
"build": "midway-bin build -c && vite-view build"
配置说明
| 配置项 | 类型 | 是否必须 | 说明 |
|---|---|---|---|
| prod | boolean | 否 | 是否是发布环境 如果不传用运行环境是否为prod/production以区分 |
| rootDir | string | 否 | view根路径默认为'view' |
| views | {[key:string]:string|object} |
是 | key为前端项目根路径(相对于rootDir文件夹), |
| views | 类型 | 是否必须 | 说明 |
|---|---|---|---|
| entryServer | string | 否 | 服务端渲染entry-server路径(相对于前端项目根路径) |
| viteConfigFile | string | 是 | vite config的文件地址,相对于前端项目根路径 |
| entry | string | 是 | 相对于前端项目文件夹的html文件路径 |
| staticFileKey | string | 是 | 对应的staticFile.dirs的key |
| hmrPort | number | 是 | 热更新监听端口,会自动向上查找可用端口 |
打包命令 vite-view build 参数说明
传参方式为 vite-view build
| 参数项 | 默认值 | 说明 |
|---|---|---|
| config | src/config | midway配置文件夹/配置文件 |
规则说明
- 服务端渲染时
html文件中<!--ssr-no-content-start--><!--ssr-no-content-end-->间的内容会被清空(客户端渲染时不做任何处理) - 服务端渲染时
html文件中必须含有<!--app-html-->,输出时会替换为解析后的html内容 - 服务端渲染时
html文件中必须含有<!--preload-links-->,输出时会替换为资源引用语句 - vue 服务端渲染时不会触发响应性,建议
vue3在setup中用顶层await获取数据
Related Packages
Version History
| Version | Released | License |
|---|---|---|
| 1.3.14 | MIT | |
| 1.3.13 | MIT | |
| 1.3.12 | MIT | |
| 1.3.11 | MIT | |
| 1.3.10 | MIT | |
| 1.3.9 | MIT | |
| 1.3.8 | MIT | |
| 1.3.7 | MIT | |
| 1.3.6 | MIT | |
| 1.3.5 | MIT | |
| 1.3.4 | MIT | |
| 1.3.3 | MIT | |
| 1.3.2 | MIT | |
| 1.3.1 | MIT | |
| 1.3.0 | MIT | |
| 1.2.3 | MIT | |
| 1.2.2 | MIT | |
| 1.2.1 | MIT | |
| 1.2.0 | MIT | |
| 1.1.0 | MIT | |
| 1.0.3 | MIT | |
| 1.0.2 | MIT | |
| 1.0.1 | MIT | |
| 1.0.0 | MIT |