【精讲】vue框架 vue脚手架子父组件交互、子父组件构成、main.js文件、知识点补充

目录

简介

第一部分:子组件内容

 第二部分:父组件

第三部分: main文件

第四部分:知识点补充


简介

       在讲述组件之前,我们先来谈谈,组件的存放位置以及“暴露”,“接收”数据;暴露的方式是:

接收数据的方式是:

 在暴露和接收的基础上,咱们再来讲述子组件的存放位置以及每个组件的使用顺序(用法):子父组件均都存放在components文件内部

 

 每个组件的使用顺序(方法):子组件(程序员自己创建的vue组件)---> App父组件(主要用于:将程序员写的所有子组件归总到一起渲染到页面中),在子组件中是利用插值语法或者其它形式展示出来的效果,在父组件中直接使用(这里的直接使用是将数据传入之后通过components:进行包裹之后,做自定义标签插入页面中(HTML)即可展示预期效果)--->下面就是main.js文件,这里主要是调用App.vue文件,将数据整合在一起,形成一个js文件 --->接下来便是HTML文件,这里需要将js文件引入(我们编写的main.js文件)--->页面刷新保存,整合数据,即成功实现页面效果【在之前的每个环节中都有css样式,可以自行添加样式效果除(main.js)不含有】

下面补充一个知识点:<template>包裹HTML内容</template>,<script>包裹js内容(vue)</script>,<style>包裹css样式内容</style>

下面显示截图,个位粉丝可以先自行练习后,再查阅原代码复制粘贴查看源码(代码在底部)

在上面的内容步骤了解后,下面咱们讲述子组件内容:

第一部分:子组件内容

第一个组件名是:DangWenJian.Vue

 续:

 以上是第一个子组件的结果,让个位粉丝更清晰了解详细过程:

 第二个子组件名:HelloWorld.Vue

续:

续: 

 全局组件示例:

 第二部分:父组件

父组件名:app.vue

 续:

第三部分: main文件

main.js源文件:

 HTML内容下期继续讲述。

源代码部分:根据展示的截图逐一展示源代码

第一个组件名是:DangWenJian.Vue

<template>
  <div class="add">
    <h2>学生姓名:{{name}},</h2>
    <h2>学校年龄:{{age}}</h2>
    <!-- 下面两个是通过app传过来的数据 通过使用插值语法添加数据 -->
    <h2>{{movie}}</h2>
    <h1>{{msg}}</h1>
  </div>
</template>

<script>
 //1,export default是默认暴露  
//2,这里可以省略Vue.extend(后面

 export default{
 //为了完美些,这里就需要添加name
  name:'DangWenJian',
  data() {
    return {
    //这里是schoolName是数据名
      name: "尚硅谷",
      age: "北京",
    }
  },
  // 所有传入的值进行操作时,就需要使用props去包裹着,否则会报错
  props:{
     movie:{
      type: Array,
      default() {
        return [1, 2, 3, 4]
      }
  },
  msg:{
    type: String,
    default: '你是学生吗?',
  }
  }  
}
</script>

<style>
  .add{
      background-color:pink;
  }
</style>

 第二个子组件名:HelloWorld.Vue 

<template>

  <div class="oder">

    <h2>一起去:{{ schoolName }},学习</h2>

    <h2>学校地址:{{ address }}</h2>

    <button @click="showtime">点我提示学校名</button>

    <!-- <Newprom></Newprom> -->

     <!-- 这里的obj是从app传来的数据(父传子) -->

    <h2>{{ obj }}</h2>

    <h1 @click="setbtn">点击提示信息</h1>

  </div>

</template>

<script>

 //1,export default是默认暴露  一般正常情况下,都是采用默认暴露

//2,这里可以省略Vue.extend(后面直接加函数(暴露)即可

 export default{

 //为了完美些,这里就需要添加name 是组件名

  name:'HelloWorde',

  data() {

    return {

    //这里是schoolName是数据名

      schoolName: "尚硅谷",

      address: "北京",

    }

  },

  // 添加方法属性

  methods:{

    // 内部添加方法

     showtime(){

      //  点击之后就会打印schoolName

       alert(this.schoolName)

     },

     //这里是父传子 由app传来的数据对饮下面的 props内部的farthername内部的数据,

     //然后他会把数据传到方法中来 在上面设置了点击事件,所以在这里是方法

     setbtn(){

      //  指向函数

      this.farthername()

     }

  },

  // 注:这里的props不能重复使用,否则就会报错(显示下面的props内容未定义)

  props:{

    //这里传来的是对象,第一个type是显示你传来的数据是什么类型,这需要自己填,

    //若填写错误也会出现错误,这里的作用就是方便后端程序员去交互数据

    obj:{

      type:Object,

      //下面的是数据默认值,在上面的数据没有传时,那么就会执行下面的语句

      default() {

        return {a:1}

     },

      required: true

       //这个是必选项,若没有传值那么就必须选择执行默认值

    },

    //这里是传入一个函数,第一个

   farthername:{

    //  类型是函数类型

   type:Function

   }

  }

}

</script>

<style>

.oder{

    background-color:red;

}

</style>

  全局组件示例:

<template>

    <div>

        <h2>张三</h2>

    </div>

</template>

<script>

export default{

  name:'Newprom',

}

</script>

父组件名:app.vue

<template>

  <div>

    <!-- 切记通过传出数据时,在子组件中一定要加v-bind动态绑定才可以,否则会报错 -->

    <HelloWorld :obj="obj" :farthername="farthername"/>

    <DangWenJian  :movie="movies" :msg="msg"/>

    </div>

</template>

<script>

// 这里是将之前的所有子组件通过暴露的方式将数据接收过来

import HelloWorld from "./components/HelloWorld.vue";

import DangWenJian from "./components/DangWenJian.vue";

// 这里是数据暴露

export default {

  name:'App',

  data(){

   return {

    //  下面是数据传出使用,第一个传出的是数组的类型   第二个传出的是字符串格式  第三个传出的是对象的格式

      movies:["复仇者联盟","钢铁侠","星际穿越","娜扎传奇"],

      msg:'我是中国人',

      obj:{

        name:'zhangsan',

        age:20

      }

   }

  },

  // 下面是将之前的子组件都归总在一起 包裹着

  components: {

    HelloWorld,

    DangWenJian,

  },

  // 这里存放的是methods方法,内部是函数的格式

  methods:{

    // 这里是函数格式

    farthername(){

       console.log('我是父组件的方法');

    }

  }

};

</script>

<style>

</style>

main.js源文件(main.js是一个入口文件): 

import Vue from 'vue'

import App from './App.vue'

Vue.config.productionTip = false

// import NewProm from "./components/NewProm.vue";

// vue.component('Newprom',NewProm)

// Vue.component('vue', function)  //全局注册  第一个是别名,第二个是组件名

new Vue({

  render: h => h(App),

}).$mount('#app')

第四部分:知识点补充

这里仅了解即可,紧跟博主,带你一起做完整项目:

跑起项目:npm  run serve

打包项目:   npm  run  build

安装项目:npm  install

组件间通讯  父传子  props 

component 全局注册

版本号查询:

vue --version 查找全局版本号
node -v 查找node的版本号
npm -v查找npm版本号
yarn add vue@next更新升级yarn版本号


跨域    js同源策略:
不同端口号, 不同域名 不同网址等都称为跨域

根据上面的内容,下面有解构式笔记供大家参考:

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

共创splendid--与您携手

鼓励会让我为您创造出更优质作品

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值