《Vue零基础入门教程》第五课:挂载

1) 基本语法

一个应用实例必须在调用了 .mount() 方法后才会渲染

  • 传入参数: 可以是一个 CSS 选择器字符串(常用) 或者 一个实际的 DOM 元素

  • 返回值: 根组件实例

    // 挂载应用, 返回根组件实例
    const instance = app.mount('#app')
    console.log(instance)

分析结果. 可知

  1. instance是一个Proxy对象
  2. 在选项中定义的内容会被挂载到instance对象上

2) 根组件实例

之前, 我们通过调试工具改变data中的定义的状态时, 视图会响应变化.

如何通过代码实现同样的功能呢?

示例

复制代码
setTimeout(() => {
  instance.msg = 'world'
}, 1000)

在data中定义的状态会被代理到instance上.

当改变代理对象的状态值时, 可以拦截到set操作, 从而自定义set操作.

在自定义的set操作中更新DOM

3) 响应式原理初步

示例

复制代码
<script>
  const data = {
    msg: 'hello',
  }

  const pData = new Proxy(data, {
    get: function (target, key) {
      return target[key]
    },
    set: function (target, key, value) {
      target[key] = value
      console.log('更新DOM')
      document.querySelector('#app').innerHTML = value
    },
  })

  setTimeout(() => {
    pData.msg = 'world'
  }, 1000)

  console.log(data, pData)
</script>
  • data模拟原始数据
  • pData模拟代理数据

初次渲染时, 从data中获取数据, 后续修改代理对象的值, 会被拦截到, 并且更新DOM

4) 注意点

  1. 如果不调用.mount(), 不会解析模板
  2. mount()方法应该在应用配置的最后被调用
相关推荐
前端缘梦2 分钟前
微信小程序登录方案实践-从账号体系到用户信息存储
前端·微信小程序
用户21411832636023 分钟前
02-N8N教程-手把手教你用 PostgreSQL 实现 N8N 数据持久化,生产环境部署实战!
前端
玄玄子4 分钟前
webpack学习指南
前端·webpack·程序员
不爱说话郭德纲5 分钟前
面试官:你给我讲讲async/await
前端·深度学习·面试
前端小巷子7 分钟前
Promise 链式调用:让异步编程更优雅
前端·面试·promise
周日不上发条7 分钟前
前端必学:CSS实现精美渐变色票据组件(含完整源码)
前端
有梦想的攻城狮13 分钟前
从0开始学vue:pnpm怎么安装
前端·javascript·vue.js
pzpcxy52016 分钟前
安装VUE客户端@vue/cli报错警告npm WARN deprecated解决方法 无法将“vue”项识别为 cmdlet、函数
前端·vue.js·npm
醉书生ꦿ℘゜এ16 分钟前
npm error Cannot read properties of null (reading ‘matches‘)
前端·npm·node.js
疯狂的沙粒31 分钟前
uni-app 如何实现选择和上传非图像、视频文件?
前端·javascript·uni-app