vue动态渲染后端返回的html模板

vue动态渲染后端返回的vue模板字符串

前言

有这样一个需求,用户自己定义html模板,定义完成后将模板上传至服务器,后端将这个html模板字符串返回给前端,前端动态的将这个模板渲染到页面上
这个需求的要点不是渲染简单的html字符串,而是要将模板字符串中的变量(也就是{{}}中的变量)转化成具体的值一并渲染出来

实现方法

1.引入 vue 用于创建构造器

正常引入vue的方式应该是

 import Vue from 'vue'

但是这种方式可能会引发报错:

[Vue warn]: You are using the runtime-only build of Vue where the template compiler is not available. Either pre-compile the templates into render functions, or use the compiler-included build.

如果出现以上这种报错,请把引入方式更改为:

import Vue from 'vue/dist/vue.esm.js'

2 创建构造器

<template>
	<div id='mount-point'>
	</div>
</template>

import Vue from 'vue/dist/vue.esm.js'
export default {
	data() {
		return {

		}
	},
	created() {
		//假设此字符串是在后端获取的
		let str = '<div><span style="color: red;">{{title}}</span></div>'; 
		// 创建构造器
		var Profile = Vue.extend({
			template: str,
			data: function() {
				return {
					title: ''
				}
			},
			created() {
				this.getData()
			},
			methods: {
			// 模拟请求-获取数据源
			  getData() {
				setTimeout(()=> {
					this.title = '测试标题'
				},2000)
			    }
			 }
		})
		// 创建 Profile 实例,并挂载到一个元素上。
		new Profile().$mount('#mount-point')
	}
}

效果

在这里插入图片描述

Vue.js中,如果你想让元素在鼠标悬停时显示后端返回的颜色,可以结合JavaScript(通常是Vue的实例方法)和CSS的`:hover`伪类来实现。这里是一个简单的步骤: 1. **数据绑定**: 首先,在Vue组件的data部分定义一个变量来存储颜色信息,例如 `currentColor`。当从后端获取颜色时,将其赋值给这个变量。 ```javascript data() { return { currentColor: '' } } ``` 2. **获取颜色**: 当需要更新颜色时,你可以通过`this.$axios`或其他HTTP客户端库发送请求到后端,并在响应拦截器里处理颜色数据。 ```javascript methods: { asyncgetColor() { const response = await this.$axios.get('/api/colors'); this.currentColor = response.data.color; } } ``` 3. **监听事件**: 然后在模板中,添加一个`:style`属性来绑定hover状态下的颜色,比如在`<div>`标签上: ```html <div :style="{ backgroundColor: currentColor }" @mouseover="getColor"></div> ``` 这会使得`backgroundColor`跟随`currentColor`的变化而变化。 4. **触发获取颜色**: 当鼠标悬停在元素上时,调用`getColor`方法更新颜色并设置。 5. **优化**: 如果颜色变化频繁,可以在`mounted()`生命周期钩子或适当的地方初始化一次获取颜色,而不是每次鼠标移动都请求。 **相关问题--:** 1. Vue如何在非hover状态下保持默认背景色? 2. 后端API返回的数据格式应该如何设计才能适配这种需求? 3. 怎样处理后端请求失败的情况,保证用户体验?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雾里桃花

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值