码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • vue是怎么初始化数据并挂载的?


    vue初始化流程----模板渲染(挂载)

    1. $mount() 方法

      工程源码: src/platforms/web/entry-runtime-with-compiler.js

      1. 如果传入的 el 是字符串就查找 DOM 元素, 如果有就返回, 没有就警告并返回一个新创建的 div
      2. 如果传入的 el 不是字符串就直接返回 el (可以测试传入真实 DOM 元素 box)
      3. 然后调用了 mount() 方法并返回
      Vue.prototype.$mount = function (el) {
           
        // 根据用户传入的 el 属性获取节点
        el = el && query(el)
        let vm = this;
        //把节点放在 vm.$el 上方便后面使用
        vm.$el = el;
        let options = vm.$options;
        let template
        /**
         * 编译权重:
         * 优先看有没有 render 函数, 如果有就直接用
         * 如果没有 render 函数就看有没有 template 模板
         * 如果都没有就直接获取 el 的 outerHTML 作为渲染模板
         */
        if (!options.render) {
           
            if (!options.template) {
           
                template = el.outerHTML
            } else {
           
                template = vm.$options.template
            }
        }
        if (template) {
           
            //用 template 生成 render 函数
            let render = compileToFunctions(template)
            options.render = render
        }
        //调用 mount 方法开始渲染页面。
        return mount(this, el)
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      • 32
      • 33
      • 34
      • 上面代码主要实现了 Vue 渲染过程中很重要的一步: 生成 render 函数
      • 如果我们使用的 template 进行编写 HTML 代码, Vue 内部会把模板编译成 Vue 可识别的 render 函数, 如果有写 render 则省去编译过程
      • 总结: 直接写 render 函数比在 template 中写代码的编译效率更高

      query 方法

      function query (el) {
            // 传入了 `#box` 字符串
        if (typeof el === 'string') {
           
          var selected = document.querySelector(el);
      • 1
      • 2
      • 3
      • 4
  • 相关阅读:
    网络学习(15)|有http/1为什么还会有http/2
    MySQL 8.0 OCP (1Z0-908) 考点精析-安装与配置考点1:设置系统变量
    [python]python筛选excel表格信息并保存到另一个excel
    Golang swagger :missing required param comment parameters
    CFD网格质量评估标准
    【调试笔记-20240603-Linux-在 OpenWrt-23.05 上运行 ipkg-build 生成. ipk 安装包】
    【Linux】文件系统
    Day6 --- SQLAlchemy进阶
    从月薪8k到月薪30k,自动化测试究竟该怎样学...
    软件测试|黑盒测试方法论-判定表
  • 原文地址:https://blog.csdn.net/m0_62371650/article/details/128176640
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号