组件化

news/2024/7/10 2:10:17 标签: vue, vue.js

组件化

  • 组件化回顾
  • 组件注册
    • 组件注册方式
      • 全局组件
      • 局部组件
  • 调试组件注册的过程
  • 组件的创建过程
    • 回顾首次渲染过程

组件化回顾

  • 一个Vue组件就是一个拥有预定义选项的一个Vue实例
  • 一个组件可以组成页面上一个功能完备的区域,组件可以包含脚本,样式,模板

组件注册

组件注册方式

全局组件

  • 方法Vue.component()
  • 我们首先来观察Vue.component()的实现
    在这里插入图片描述
  • 我们再观察initAssetRegisters函数的实现
    在这里插入图片描述
  • 我们再重点观察this.options._base.extend(definition)的实现方式,也就是Vue.extend()
  1. 在Vue.component()中,第二个参数如果传递的是对象的话,它内部会调用Vue.extend()方法,把该组件的选项对象转化为Vue构造函数的子类,所以我们经常会说组件其实也是一个Vue实例
    在这里插入图片描述

小结:Vue.component()就是基于传入的选项对象创建了组件的构造函数Sub,组件的构造函数继承自Vue构造函数Super,所以组件对象(Sub构造函数的实例)拥有和Vue实例一样的成员

局部组件

调试组件注册的过程

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Vue.component</title>
  </head>
  <body>
    <div id="app"></div>
    <!-- 完成版本 -->
    <script src="../../dist/vue.js"></script>
    <script>
      const Comp = Vue.component("comp", {
        template: "<div>Hello Component</div>",
      });
      const vm = new Vue({
        el: "#app",
        render() {
          return h(Comp);
        },
      });
      // 编译生成的render函数
      console.log(vm.$options.render);
    </script>
  </body>
</html>

  • 进入调试
    在这里插入图片描述

组件的创建过程

回顾首次渲染过程

  1. Vue构造函数
  2. this.init()
  3. this.$mount()
  4. mountComponent()
  5. new Warcher()渲染Watcher
  6. updateComponent()
  7. vm._render()=>createElement()
  8. vm._update()

http://www.niftyadmin.cn/n/1499624.html

相关文章

JVM内存设置多大合适?Xmx和Xmn如何设置?

JVM内存设置多大合适&#xff1f;Xmx和Xmn如何设置&#xff1f; 问题:新上线一个java服务&#xff0c;或者是RPC或者是WEB站点&#xff0c; 内存的设置该怎么设置呢&#xff1f;设置成多大比较合适&#xff0c;既不浪费内存&#xff0c;又不影响性能呢&#xff1f; 分析&#x…

阿里云提示Discuz uc.key泄露导致代码注入漏洞uc.php的解决方法

适用所有用UC整合 阿里云提示漏洞&#xff1a; discuz中的/api/uc.php存在代码写入漏洞,导致黑客可写入恶意代码获取uckey,.......... 漏洞名称&#xff1a;Discuz uc.key泄露导致代码注入漏洞 补丁文件&#xff1a;/api/uc.php补丁来源&#xff1a;云盾自研 解决方法&#xff…

Intellij IDEA 14中使用MyBatis-generator 自动生成MyBatis代码

一&#xff1a;项目建立好及其基本的测试好 二&#xff1a;在maven项目的pom.xml 添加mybatis-generator-maven-plugin 插件 <build><finalName>CourseDesignManage</finalName><plugins><plugin><groupId>org.mybatis.generator</grou…

redis使用watch完成秒杀抢购功能

Redis使用watch完成秒杀抢购功能&#xff1a;使用redis中两个key完成秒杀抢购功能&#xff0c;mywatchkey用于存储抢购数量和mywatchlist用户存储抢购列表。它的优点如下&#xff1a;1. 首先选用内存数据库来抢购速度极快。2. 速度快并发自然没不是问题。3. 使用悲观锁&#xf…

CSS之BFC(Block Formatting Context)

这是我的第一篇博客&#xff0c;不知道从什么开始写起&#xff0c;那就从我现在看的开始写起吧。 以前我也不知道BFC是什么&#xff0c;今天看了才知道原来以前经常接触&#xff0c;只是不知道专业名称罢了。就像闭包、继承一样&#xff0c;以前经常用到&#xff0c;只是不知道…

个人博客练手项目

最近比较闲&#xff0c;学了一些杂七杂八的技术&#xff0c;但不知道怎么用&#xff0c;想的是做一个简单的博客项目来练手&#xff0c;不知道能不能坚持下去&#xff0c;现在把项目框架搭建好了 项目技术选择 后端&#xff1a;nodeexpressmongoose前端&#xff1a;vue2vue-rou…

服务器端渲染基础

服务器端渲染基础概念什么是渲染传统的服务端渲染通过Node.js演示传统的服务器端渲染模式客户端渲染现代化的服务端渲染服务端渲染使用建议概念 随着前端技术栈和工具链的迭代成熟,前端工程化,模块化成为了当下主流技术方案,在这比技术浪潮中,涌现了诸如Anfular,React,Vue等基…

支持动态滑出效果的vue-dynamic-dialog的使用说明

使用说明 安装 npm i vue-dynamic-dialog -D 复制代码在 main.js 中写入以下内容&#xff1a; import Vue from vue import ElementUI from element-ui import element-ui/lib/theme-chalk/index.css import App from ./App.vue import VueDynamicDialog from vue-dynamic-dial…