Webpack+vue2.0如何注册全局组件 (01)

## Part 1, 问题: webpack + vue2.0框架中,如何在入口js中注册组件?就是在一个月以前,匆匆闯入vuejs这个社群,基本了解了vuejs的一些基础特性和语法。笔者兴致勃勃地开始想用vuejs写个单页面应用出来。兜兜转转地开始使用vue-router这个插件,阅读了vue-router前两个事例之后,发现了一个问题。 通过webpack导入.vue的组件文件的时候,弹出问题:```[vue warn]: Failed to mount component:template or render function not defined.```![](http://images2017.cnblogs.com/blog/1312532/201801/1312532-20180107221818737-1862750805.png) 这个只问题出现在vue2.0中,搜索了一下相关资料,网友的解答给了笔者一点启发:[传送门](https://segmentfault.com/q/1010000007071229)>@byronlun的回答:>于是乎,按照官方文档的说法,在webpack配置中加入上面那段代码之后,就不报错了,不过我的页面还是一片空白:< 实在没办法继续Google,然后在Github看到了这个issue里面的LinusBorg的评论,在index.js文件这里,只能使用下列两种情况: 使用template属性例如:```template:'

...

'```  使用render() function  因此,通过测试,可以直接使用```template:'

...

```来加载对应的内容,组件的话,则需使用render function来注册子组件。  修改之后的index.js文件应该是这样:  ```    var Vue = require('vue');    import App from './vue/app';    new Vue({      el: '.show',      render: (createElement) => createElement(App)    });```>本人愚见(错误请指出):特别注意一点在入口js文件这里,是无法使用components属性来注册子组件的,而在组件中则可以使用components属性来注册子组件。如果在你的App.vue中,使用components属性来注册子组件的话是可以注册成功的。这是vue2.0才会出现的问题,如果是1.0是不会出现这个问题的。## Part 2,解决的方法网友byronlun的回答,有一定的正确性。在使用webpack构建前端应用时通过``` import [component_name] from "\views\component_name.vue" ```的方法载入的实例无法直接使用全局变量注册组件```Vue.component()```。但是使用webpack构建的语法,import方法导入的实例拥有多个方法,列如在vue webpack工程中修改如下代码:App.vue中``````入口main.js```// The Vue build version to load with the `import` command// (runtime-only or standalone) has been set in webpack.base.conf with an alias.import Vue from 'vue'import App from './App'import router from './router'import navbar from '@/components/Navbar.vue'Vue.config.productionTip = false// 以下是注册组件的方法Vue.component('navbar', {  render: navbar.render,  data: navbar.data})/* eslint-disable no-new */new Vue({  el: '#app',  router,  template: '',  components: { App }})```组件Navbar.vue```export default {

  name: 'navbar',

  data () {

    return {

      msg: 'Welcome to Your Vue.js App'

    }

  }

}```## Part 3, 组件加载的原理在查看``` navbar ```实例,我们发现``` render:f() ``` 和 ``` data: f data() ```两个方法。也就是说,webpack的解析会将.vue文件中的模板和数据编译成为render、data和其他方法。![](http://images2017.cnblogs.com/blog/1312532/201801/1312532-20180108101625582-1742672857.png)通过这两个方法,可以对组件进行初始化。所以在入口js文件注册组件时,我添加了两个初始化方法```Vue.component('navbar', {  render: navbar.render,  data: navbar.data})```最后的效果如下,![](http://images2017.cnblogs.com/blog/1312532/201801/1312532-20180108102558519-316437135.png)## Part 4, 后续研究在网上看到,webpack在解析的时候还可以将.vue文件中的css和js模块载入进来,需要配置sass和lass。这方面的研究还没开始。笔者在这里先留个坑!!!## 后记,新年第一周的技术文档以拖延一天的结果展示出来,有些说不过去,这里反省一下。对于这篇文章,希望对新学习vue的网友有所帮助,当然也希望路过这里的技术高人提供宝贵意见。谢谢大家,祝大家新年快乐!(这个祝福有点晚!!!)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,440评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,814评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,427评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,710评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,625评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,014评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,511评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,162评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,311评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,262评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,278评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,989评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,583评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,664评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,904评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,274评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,856评论 2 339

推荐阅读更多精彩内容

  • 这篇笔记主要包含 Vue 2 不同于 Vue 1 或者特有的内容,还有我对于 Vue 1.0 印象不深的内容。关于...
    云之外阅读 5,043评论 0 29
  • 转载 :OpenDiggawesome-github-vue 是由OpenDigg整理并维护的Vue相关开源项目库...
    果汁密码阅读 23,075评论 8 124
  • UI组件 element - 饿了么出品的Vue2的web UI工具套件 Vux - 基于Vue和WeUI的组...
    鲁大师666阅读 43,361评论 5 97
  • 仗剑天涯,不识。 仰望星空,不知。 越近天明,才明。 三千落花,飘零。 一世愁苦,谁信。 了却了君王事, 说尽了人...
    墨燔阅读 252评论 0 0
  • 今天又是个周末,我和往常一样,吃了早饭,爸爸送我去北创画室上美术课。 上课了老师说:今天...
    徐雨恒阅读 290评论 0 0