vue.js - 全局注册组件为何显示Vue is not defined?

查看:1770
本文介绍了vue.js - 全局注册组件为何显示Vue is not defined?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

在做一个组件demo的时候尝试不使用头部引用src="js/vue.min.js",于是用node.js+npm+webstorm启动项目,
代码如下:

<template>

<div id="app">
    <h1>This is a test file</h1>
    <span>{{ msg }}</span>
    <simple-counter></simple-counter>
    <simple-counter></simple-counter>
    <simple-counter></simple-counter>
</div>

</template>

<script>

//注册
Vue.component( 'simple-counter', {
    template: '<button v-on:click="counter += 1">{{ counter }}</button>',
    data () {
        return {
            counter: 0
        }
    }
})

//创建实例
new Vue({
    el: '#app',
    data () {
        return {
            msg: 'Hello, commander!'
        }
    }
})

</script>
然后浏览器就会报错:

如果用另一种方式就没有问题

App.vue:

<template>

<div id="app">
    <h1>This is a test file</h1>
    <span>{{ msg }}</span>
    <simple-counter></simple-counter>
    <simple-counter></simple-counter>
    <simple-counter></simple-counter>
</div>

</template>

<script>

//引入
import simple_counter from './component/simple-counter.vue';
//注册
export default {
    data () {
        return {
            msg: 'Hello commander!'
        }
    },
    components: {
         'simple-counter': simple_counter
    }
}

</script>

simple-counter.vue:

<template>

<div id="app">
    <button v-on:click="counter += 1">{{ counter }}</button>
</div>

</template>

<script type="text/javascript">

export default {
    data () {
        return {
            counter: 0
        }
    }
}

</script>

能够成功跑出来

附上main.js:

import Vue from 'vue'

import App from './App.vue'

new Vue({
el: '#app',
render: h => h(App)
})

烦请各位大大指导一番

更新:

看到有朋友说加入import Vue from 'vue'语句,自己也尝试过,页面确实不会报错了,但却什么内容都没有了:

不知道这又是怎么回事呢?

解决方案

全局注册
1.在mian.js中注册,该文件已经导入了Vue(import Vue from 'vue'
2.其他文件需要手动加入:import Vue from 'vue'

如果我没猜错的话,你是在.vue(单文件组件)中加入的new Vue(),这样将会有俩个Vue实例,导致意外发生,建议你将全局组件、插件等都写到main.js中,挂载到一个Vue实例上,而.vue(单文件组件)采用 export default {} 的写法

这篇关于vue.js - 全局注册组件为何显示Vue is not defined?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆