1、安装:
npm install v-runtime-template2、如果是vue-cli项目,找到vue.config.js,如果没有,就创建一个,放在根目录,添加下面的代码:
module.exports = { runtimeCompiler: true };3、如果是 Nuxt,就打开nuxt.config.js,添加下面的代码:
// nuxt.config.js { build: { extend(config, { isDev, isClient }) { config.resolve.alias["vue"] = "vue/dist/vue.common"; // ...4、使用示例:
<template> <div> <v-runtime-template :template="template"></v-runtime-template> </div> </template> <script> import VRuntimeTemplate from "v-runtime-template"; //假设 AppMessage 是我们自定义的组件,我们需要在v-html中用到它 import AppMessage from "./AppMessage"; export default { data: () => ({ name: "Mellow", template: ` <app-message>Hello {{ name }}!</app-message> ` }), components: { AppMessage, VRuntimeTemplate } }; </script>如果是v-html,那么 “<app-message>Hello {{ name }}!</app-message>”将被直接显示到页面中,连name都不会解析,但是v-runtime-template则会解析它之后输出到页面中。
这里要注意:
1、template必须要有一级标签包含,不能像下面这样:
template: ` <div>1</div> <div>2</div> `如果包含多标签,请写成下面:
template: ` <div> <div>1</div> <div>2</div> </div> `2、虽然v-runtime-template看起来也是一个自定义组件,但是在当前页面的v-on、v-model都能直接定义,无需考虑什么父子级的传参等。