You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue.js模板未显示求助:按教程操作后组件未渲染

问题分析与解决方案

看起来你遇到的问题主要来自两个关键错误:组件注册时机不对,以及模板字符串的误用导致Vue无法正确解析插值。让我一步步帮你修正:

1. 组件必须在Vue实例创建前注册

你现在是先创建了Vue实例,之后才注册message组件。但Vue实例在挂载时(el: '#app')会立即解析DOM,这时候组件还没注册,所以无法识别<message>标签,自然不会替换它。

2. 模板字符串里的插值被JS提前解析了

你的组件模板用了ES6模板字符串(反引号`),里面的${title}会被JavaScript当作变量直接解析,但此时title并不是当前JS作用域里的变量,所以会变成空值。而且这也不是Vue的插值语法——你设置的delimiters: ['${', '}']是给Vue用的,不是给JS模板字符串用的。


修正后的代码

<div id="app">
  <message title="My Component title" body="Lorem ipsum dry"></message>
</div>

<script type="text/javascript" src="{{ asset('js/vue.js') }}"></script>
<script>
// 先注册组件,再创建Vue实例
Vue.component('message', {
  props: ['title', 'body'],
  // 组件可继承根实例的分隔符,也可单独设置
  template: '<article class="message">' +
              '<div class="message-header">${title}</div>' +
              '<div class="message-body">${body}</div>' +
            '</article>'
  // 或者用转义后的模板字符串写法:
  // template: `
  //   <article class="message">
  //     <div class="message-header">\${title}</div>
  //     <div class="message-body">\${body}</div>
  //   </article>
  // `
});

// 再创建Vue实例
new Vue({
  el: '#app',
  delimiters: ['${', '}']
});
</script>

额外说明

  • 如果组件和根实例使用相同的分隔符,组件无需重复设置delimiters,会自动继承根实例的配置。
  • 使用普通字符串拼接模板(或者转义模板字符串里的$),才能让Vue的插值语法生效,避免被JS提前解析。

内容的提问来源于stack exchange,提问作者Isador

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:55:34