[js高手之路]vue2.0基于vue-cli+webpack父子组件通信教程

ghostwu      2022-02-13     161

关键词:

在git命令行下,执行以下命令完成环境的搭建:

1,npm install --global vue-cli  安装vue命令行工具

2,vue init webpack vue-demo   使用vue命令生成一个webpack项目,项目名称为vue-demo

 

3,cd vue-demo 切入项目

4,npm install安装package.json中的所有依赖包

5,npm run dev运行项目

一、父组件向子组件传递数据

然后删除默认的Hello.vue组件,把App.vue整理成以下样子:

 1 <template>
 2   <div id="app">
 3   这是一个空的app
 4   </div>
 5 </template>
 6 
 7 <script>
 8   export default {
 9     name : 'app'
10   }
11 </script>
12 
13 <style>
14 
15 </style>

 把router下面index.js文件修改如下:

 1 import Vue from 'vue'
 2 import Router from 'vue-router'
 3 
 4 Vue.use(Router)
 5 
 6 export default new Router({
 7   routes: [
 8     {
 9       path: '/',
10     }
11   ]
12 })

1、在components目录下创建一个子组件Child.vue

代码如下:

 1 <template>
 2     <div>
 3         <h3>这是子组件</h3>
 4         <p>{{content}}</p>
 5     </div>
 6 </template>
 7 <script>
 8 export default {
 9     props : ['content']
10 }
11 </script>

2、把App.vue的代码修改如下:

 1 <template>
 2   <div id="app">
 3     <child :content="msg"></child>
 4   </div>
 5 </template>
 6 
 7 <script>
 8   import child from './components/Child.vue';
 9   export default {
10     name : 'app',
11     data(){
12       return {
13         'msg' : '这是来自父组件的问候'
14       }
15     },
16     components : {
17       child
18     }
19   }
20 </script>

这样就完成了父组件通过props属性向子组件传递数据

也可以用v-bind绑定属性

<template>
  <div id="app">
    <child :content="msg"></child>
    <child v-bind:content="msg"></child>
  </div>
</template>

小结:

  • 子组件在props中创建一个属性,用以接收父组件传过来的值
  • 父组件中调用子组件
  • 在子组件标签中绑定子组件props中创建的属性
  • 把需要传给子组件的值赋给该属性,如我们上文中父组件的msg

二、子组件向父组件传递数据

1,把Child.vue修改如下:

 1 <template>
 2     <div>
 3         <h3>这是子组件</h3>
 4         <p>{{content}}</p>
 5         <p>
 6             <input type="button" value="告诉父王一个消息" v-on:click="send">
 7         </p>
 8     </div>
 9 </template>
10 <script>
11 export default {
12     props : ['content'],
13     methods : {
14         send(){
15             this.$emit( 'ParentRecEv', "父王,孩儿正在跟ghostwu学习vue2.0" )
16         }
17     }
18 }
19 </script>

子组件通过$emit发送一个自定义的事件ParentRecEv, 后面参数是内容

2,App.vue修改如下

 1 <template>
 2   <div id="app">
 3     <child :content="msg"></child>
 4     <child v-bind:content="msg" v-on:ParentRecEv="showMsg"></child>
 5     <p>{{data}}</p>
 6   </div>
 7 </template>
 8 
 9 <script>
10   import child from './components/Child.vue';
11   export default {
12     name : 'app',
13     data(){
14       return {
15         'msg' : '这是来自父组件的问候',
16         data : ''
17       }
18     },
19     methods : {
20       showMsg( msg ){
21         this.data = msg;
22       }
23     },
24     components : {
25       child
26     }
27   }
28 </script>

在第二个子组件监听事件ParentRecEv,当子组件点击按钮就会触发这个自定义事件,然后触发showMsg函数,就能收到子组件传递的数据,没有绑定自定义事件是不能收到子组件发送的信息的.

小结:

  • 子组件中通过$emit触发一个自定义事件
  • 将需要传的值作为$emit的第二个参数,该值会被父组件的方法接收到
  • 在父组件中调用子组件并在子组件标签上绑定发送的自定义事件

他们的共同点就是有桥梁,子向父的桥梁是自定义事件$emit,父向子的桥梁是props中的属性. 这就是他们之间传递数据的关键

vue.js系列之项目搭建(vue2.0+vue-cli+webpack)

1、安装nodenode.js环境(npm包管理器) cnpmnpm的淘宝镜像从node.js官网下载并安装node,安装过程很简单,一路“下一步”就可以了(傻瓜式安装)。安装完成之后,打开命令行工具,输入node-v,如果出现相应的版本号,则说明安装... 查看详情

基于vue2.0的一个豆瓣电影app

1、搭建项目框架使用vue-cli没安装的需要先安装npmintall-gvue-cli使用vue-cli生成项目框架vueinitwebpack-simplevue-movie然后一路回车接着进入项目目录cdvue-movie然后安装项目依赖包cnpminstall没安装cnpm的先执行这个命令npminstall-gcnpm--registry=http... 查看详情

vue的爬坑之路之----基于vue-cli无限滚动插件无限加载(代码片段)

注:vue-infinite-loading2.0只能在Vue.js2.0中使用。如果你想在Vue.js1.0中使用,请安装vue-infinite-loading1.3版本npminstallvue-infinite-loading--savees6模块导入方式importInfiniteLoadingfrom‘vue-infinite-loading‘;exportdefaultcompon 查看详情

vue2.0搭建vue脚手架(vue-cli)

一、安装node.js进入官网下载node.js二、安装cnpm1、说明:npm(nodepackagemanager)是nodejs的包管理器,用于node插件管理(包括安装、卸载、管理依赖等);2、使用npm安装插件:命令提示符执行npminstall<name> 3、选装cnpm 因为... 查看详情

vue2.0新手入坑环境搭建

...不定期更新 专业团队接APP外包联系QQ1129580542  vue-cli是一个官方发布vue.js项目脚手架,使用vue-cli可以快速创建vue项目,GitHub地址是:https://github.com/vuejs/vue-cli 一、安装node.js首先需要安装node环境,可以直接到中文官... 查看详情

[js高手之路]node.js+jade+mongoose实战todolist(分页,ajax编辑,删除)

该系列文章索引:[js高手之路]nodejs系列课程-创建简易web服务器与文件读写[js高手之路]nodejs系列课程-图解express+supervisor+ejs用法[js高手之路]Node.js实现简易的爬虫-抓取博客所有文章列表信息[js高手之路]Node.js模板引擎教程-jade速学... 查看详情

vue2.0+怎么写本地接口获取数据(代码片段)

在vue-cli脚手架项目中,找到build----webpack.dev.conf.js文件,具体位置如下图:找到文件后添加下面的内容,写在头部://这是webpack.dev.conf.js文件里的‘usestrict‘/*新版的vue-cli代替原来的dev-server.js文件,现在在这里可以简单配置node... 查看详情

vue2.0搭建vue脚手架(vue-cli)

 vue搭建https://www.cnblogs.com/zhaomeizi/p/8483597.html Vue2.0搭建Vue脚手架(vue-cli)https://segmentfault.com/a/1190000011275993 element-vuehttps://element.eleme.cn/#/zh-CN/component/container 查看详情

[js高手之路]深入浅出webpack教程系列9-打包图片(file-loader)用法

[js高手之路]深入浅出webpack教程系列索引目录:[js高手之路]深入浅出webpack教程系列1-安装与基本打包用法和命令参数[js高手之路]深入浅出webpack教程系列2-配置文件webpack.config.js详解(上)[js高手之路]深入浅出webpack教程系列3-配置文... 查看详情

[js高手之路]面向对象版本匀速运动框架

...教程]一步步开发一个可以定制配置的隔行变色小插件[js高手之路]匀速运动与实例实战(侧边栏,淡入淡出)[js高手之路]打造通用的匀速运动框架1<!DOCTYPEhtml>2<html>3<headlang="en">4<metacharset="UTF-8">5<title>通用的面向... 查看详情

vue2.0探索之路——vuex入门教程和思考

Vuex是什么首先对于 vuex 是什么,我先引用下官方的解释。Vuex是一个专为Vue.js应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。就我的... 查看详情

[js高手之路]寄生组合式继承的优势

在之前javascript面向对象系列的文章里面,我们已经探讨了组合继承和寄生继承,回顾下组合继承:1functionPerson(uName){2this.skills=[‘php‘,‘javascript‘];3this.userName=uName;4}5Person.prototype.showUserName=function(){6returnthis.userName;7}8func 查看详情

[js高手之路]javascript面向对象写法与应用

一、什么是对象?对象是n个属性和方法组成的集合,如js内置的document,Date,Regexp,Math等等document就是有很多的属性和方法,如:getElementById,getElementsByTagName等等这些就是document对象支持的方法,那么我们常见的onclick,onmouseover,onmouseout... 查看详情

[js高手之路]打造通用的匀速运动框架

本文,是接着上文[js高手之路]匀速运动与实例实战(侧边栏,淡入淡出)继续的,在这篇文章的最后,我们做了2个小实例:侧边栏与改变透明度的淡入淡出效果,本文我们把上文的animate函数,继续改造,让他变得更加的通用和强大... 查看详情

采用vue2.0开发的分页js组件

2017-11-1719:14:23基于jQuery的分页插件相信大家伙已经都用过很多了,今天分享一下基于Vue2.0的分页插件pagination.js由于项目需求,要求使用Vue2.0开发一套有关分页的组件 这款pagination.js组件,可以按照各自需求定制,以下代码可以... 查看详情

[js高手之路]原型式继承与寄生式继承

一、原型式继承本质其实就是个浅拷贝,以一个对象为模板复制出新的对象1functionobject(o){2varG=function(){};3G.prototype=o;4returnnewG();5}6varobj={7name:‘ghostwu‘,8age:22,9show:function(){10returnthis.name+‘,‘+this.age;11}12};13varobj2= 查看详情

vue2.0配置https://github.com/wike933/vuebook

...般使用vue-cli全局安装vue-cli$npminstall--globalvue-cli创建一个基于webpack模板 查看详情

[js高手之路]html5canvas动画教程-实时获取鼠标的当前坐标

...,前面已经写了常用的canvas基础知识,参考链接如下:[js高手之路]html5canvas系列教程-认识canvas以及基本使用方法[js高手之路]html5canvas系列教程-掌握画直线图形的常用API[js高手之路]html5canvas系列教程-开始路径beginPath与关闭路径close... 查看详情