Vue基础(二)

1.Vue的生命周期

2.Vue的组件

2.1 多文件组件

2.1.1 含义

即一个文件里面包含多个组件

2.1.2 用法

组件主要分成三部分:

1.定义组件,通过Vue.extend定义组件

2.注册组件,在Vue的components中加入组件,此时注册的时候定义的组件名称

3.使用组件,将组件直接写入到模板中

javascript 复制代码
<body>
    <div id="root">
        <!-- 4.使用组件 -->
        <school></school>
        <student></student>
    </div>
    <script>
        
        // 1.定义student组件
        const student = Vue.extend({
            template:
            `
            <div>
            名称:<h1>{{name}}</h1>
            年龄:<h1>{{age}}</h1>
            </div>
            `,
            data() {
                return {
                    name :"张三",
                    age:12
                }
            }
        })
        // 2.定义的school组件
        const school = Vue.extend({
             template:
            `
            <div>
            地址:<h1>{{addreass}}</h1>
            </div>
            `,
                data() {
                    return {
                        addreass: "北京"
                    }
                }
            })

        // 3.注册组件
        new Vue({
            el:"#root",
            components:{
                student,school
            }
        })
        
    </script>
</body>

2.2 特别说明

1.上面的school组件本质上就是一个VueComponent的构造函数,并且不是程序员生成的,而是有Vue.extend生成的

2.每次写一个VueCompoent组件,都会调用new VueComponent(option)生成一个VueCompoent的实例。

3.注意,每次调用Vue.extend返回的都是一个新的VueComponent实例。

4.在组件配置中,method,computed,watch中的函数都指向VueComponent这个实例。

2.3 一个内置关系

存在一个内置关系

javascript 复制代码
VueComponent.prototype.__proto__=Vue.prototype

这样做的目的是让VueComponent找不到属性时,可以向上寻找,去Vue的原型对象上寻找。

3.Vue脚手架

3.1 Vue脚手架的创建

bash 复制代码
npm install -g vue@cli
vue create xxxx

注意:如果是Vue2的话,脚手架需要低于4版本

3.2 Vue脚手架-render

3.2.1 vue.js和vue.min.js的区别

vue.js包含vue的核心文件和模板解析器,但是vue.min.js并不包含模板解析器。

3.2.2 render的作用

由于没有模板解析器,所以不能使用template配置项,需要通过render函数接收到的createElement函数去解析组件。

3.3. 修改Vue脚手架的默认配置

查看默认配置

bash 复制代码
vue inspect > output.js

如果需要修改,可以修改vue.config.js这个文件,遵循nodejs的语法规范,并且会进行合并。

bash 复制代码
const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true
})

4.ref属性

4.1 作用

给某个标签机上ref属性后,可以通过this.$refs.属性名来获取对应的标签或者子组件(如果是加在Vue组件上)

4.2基本用法

javascript 复制代码
<template>
  <div id="root">
    <div class="todo-container">
      <div class="todo-wrap">
        <button ref="btn" @click="test">点我查看组件</button>
        <MyHeader ref="header"></MyHeader>
      </div>
    </div>
  </div>
</template>

<script>
import MyHeader from "./components/MyHeader.vue";

export default {
  name: "App",
  components: {
    MyHeader
  },
  data() {
    return {};
  },
  methods: {
    test() {
      console.log(this.$refs.btn);
      console.log(this.$refs.header);
    },
  },
};
</script>

5.props

5.1 作用

父组件向子组件传递数据

5.2 基本用法

父组件传递信息

javascript 复制代码
<template>
  <div id="root">
    <div class="todo-container">
      <div class="todo-wrap">
        <MyHeader ref="header" name="张三" :age="18"></MyHeader>
      </div>
    </div>
  </div>
</template>

注意:入股需要串一个计算的值过去,可以通过:age的方式,来保证传递的是一个js表达式,并将js表达式传递过去

子组件接收:

javascript 复制代码
export default {
  name: 'MyHeader',
  data() {
    return {};
  },
  props:['name','age'],

  components: {},

  computed: {},

  methods: {
      add(e) {
         this.addTodo(e.target.value);
      }
   
  },
};

5.3 特殊说明

1.严格的数据传递

javascript 复制代码
 props:{
    name:{
      type:String,  //接收参数类型
      required:true, //是否必传
      default:"默认值" //默认值
    }
  },

2.props是只读的

如果需要修改,可以复制一份到data中,在data中进行修改

相关推荐
郑州光合科技余经理17 分钟前
国际版外卖系统:税率字段怎么和订单主流程解耦
android·java·开发语言·前端·后端·php·ai编程
梦想平凡1 小时前
百游棋牌源代码开发搭建教程(十):隔离部署、备份恢复与双端验收
java·前端·javascript·数据库·源代码管理
yume_sibai2 小时前
06-Rust Web 开发实战(Axum 框架 + 数据库 + JWT 认证 + 中间件 + 部署)
前端·数据库·rust
计算机魔术师3 小时前
特朗普上台打给黄仁勋:AI末日论是骗局,我们绝不让它发生
前端
troy1283 小时前
Python 基础语法(八):Web 后端开发、数据分析与可视化、网络爬虫、人工智能 / 大模型应用
前端·python·数据分析
计算机魔术师4 小时前
CEO说要慢下来,黑客说别做梦了——同一篇论文,两种命运
前端
kyriewen4 小时前
我花3天抓了一个幽灵bug,凶手藏在第4层
前端·javascript·程序员
IT_陈寒5 小时前
Java里用Stream.parallel()翻车实录,这性能还不如单线程
前端·人工智能·后端
Bs_MoneyMagnet5 小时前
基于springboot+vue的生态果园采摘预约系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·毕业设计·计算机毕业设计
wangchunyu1145 小时前
JavaScript 零基础入门教程
前端