Vue3异步渲染(从后端获取未编译的Vue文件进行渲染)

个人使用场景,将部分功能展示完全可以通过服务端自定义(暂时不考虑性能问题)
后端直接返回一个未编译的Vue代码(可以包含指令,插槽),前端进行渲染

官方文档翻遍了,思路完全被带偏到defineAsyncComponent和JSX渲染上了,以及官方文档提到的h渲染,都可以实现,但是效果不尽人意,尤其是render+h,用json去构建html,至少达不到我的要求。

后来想到了原生html+vue.js 的方法,直接运行html就可以在前端实现Vue语法的编译,然后搜了一下,搜到了这篇文章 给了我一些思路
在这里插入图片描述

思路有了,后面又折腾了一阵,找到了解决方案
Vue3默认就是阉割版,默认关闭运行期编译,需要打开,在相关配置文件中配置即可(下面分别是vite项目和vitepress项目的配置)

// vite.config.js配置
export default {
  resolve: {
    alias: {
      vue: 'vue/dist/vue.esm-bundler.js'
    }
  }
}
// .vitepress/config.js配置
export default defineConfig({
  // 其他 VitePress 配置...
  vite: {
    // Vite 配置对象
    optimizeDeps: {
      include: ['vue'], // 确保 Vue 被包括在预构建依赖中
    },
    resolve: {
      alias: {
        // 配置 Vue 的别名,指向包含编译器的版本
        vue: 'vue/dist/vue.esm-bundler.js',
      },
    },
    // 如果你需要其他 Vite 配置,也可以在这里添加
  },
});

import {ref, defineProps, defineComponent } from 'vue';
const MyComponent = defineComponent({
  props: {
    data: {
      type: String,
      required: true
    }
  },
  //从后端获取以省略
  template: `
    <div>
      <h1>{{ data }}</h1>
    </div>
  `
});

//使用方法
<template>
	<MyComponent :data="scope.row"></MyComponent>
</template>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值