我有一个非常基本的vueJS应用程序,我在网站上关注它.

Here's代码,为什么组件不呈现?

HTML

<script src="https://unpkg.com/vue"></script>

<div id="app">
  <p>{{ message }}</p>
</div>

<div>
<ol>
  <todo-item></todo-item>
</ol>
</div>

JS

new Vue({
  el: '#app',
  data: {
    message: 'Hello Vue.js!'
  }
})

Vue.component('todo-item', {
    template: '<li>This is a list item</li>'
})

推荐答案

更好的是,可以使用Single File Components在另一个文件中定义todo-item组件:

app.vue

 import TodoItem from './components/todo-item'

 new Vue({
  el: '#app',
  data: {
    message: 'Hello Vue.js!'
  },
  components: {
    TodoItem
  }
})

components/todo-item.vue

<template>
  <li>This is a list item</li>
</template>

<script>
  export default {
    name: 'todo-item'
  }
</script>

在许多Vue项目中,全局组件将使用Vue.component来定义,然后使用new Vue({ el: '#container' })来针对每个页面主体中的容器元素.

这对于中小型项目非常有效,因为JavaScript只用于增强某些视图.然而,在更复杂的项目中,或者当前端完全由JavaScript驱动时,这些缺点变得显而易见:

  • Global definitions强制每个组件使用唯一的名称
  • String templates缺少语法突出显示,多行HTML需要难看的斜杠
  • No CSS support意味着虽然HTML和JavaScript被模块化为组件,但CSS明显被忽略了
  • No build step限制我们使用HTML和ES5 JavaScript,而不是像Pug(以前是Jade)和Babel这样的预处理器

所有这些问题都可以通过扩展名为.vue的单文件组件解决,这些组件可以通过Webpack或Browserify等构建工具实现.

Vue.js相关问答推荐

如何修复IntersectObserver导致我的OpenLayers Web应用程序中内存泄漏的问题?

Select 项目后,Vuetify v-select在select后面显示数字1

在 Ajax 函数中访问 Vue.js 组件属性

vue 模板中无法识别 pug 语言

VuetifyJS,outer-link 未显示为光标

使用 vue-cli 遇到无法推断解析器错误

在 vue.js 中获取当前时间和日期

Vuetify 在数据表中插入操作按钮并获取行数据

vuejs中watch方法和计算方法有什么区别

如何从我的 Vuetify 数据表中正确更新 Vuex 状态

如何将参数传递给使用 ...mapActions(...) 映射的函数?

使用 VueJS 在 v-for 中转换

即使在客户端设置 Access-Control-Allow-Origin 或其他 Access-Control-Allow-* 标头后也出现 CORS 错误

取消选中单选按钮

包含 Vue 组件的 HTML 字符串的 Nuxt 渲染函数

如何在 vue.config.js 中为生产设置 API 路径?

交换数组项

Import Unexpected identifier + SyntaxError: Unexpected string

Vuejs 不会在 HTML 表格元素中呈现组件

Vue-i18n - 无法读取未定义的属性配置