zoukankan      html  css  js  c++  java
  • vue-vue构建版本runtime-compiler和runtime-only的区别

      构建vue项目会有两个版本进行选择,runtime-compiler和runtime-only;他们主要的不同体现在一个文件里面,main.js,下面看看两种的区别:

       一眼就看可以看出代码上的区别了;但要讲的并不是这个,要说的是他们执行流程的区别:

      runtime-compiler的执行流程是:template会被解析成ast(抽象树结构),然后编译成render函数,再转换为虚拟DOM,再变成真实DOM;即过程是 template->ast->render->vitualdom->UI

      runtime-only的执行流程是:render函数转换为虚拟DOM,再变成真实DOM;即过程是 render->vitualdom->UI

      区别很明显,runtime-compiler多了前两个步骤,runtime-only没有,这就导致了两者主要2个区别:性能和代码量。

        性能:runtime-compiler低,runtime-only高

        代码量:由于runtime-only不需要再进行前两个步骤,因此他不需要再用vue-template-compiler去解析,所以少了一些解析的工具和代码

      但大家有两个疑问是:

        1. render函数是什么?h(App)是什么东西?

        2. runtime-only中也有template的代码,那不是也要前两个步骤吗?

      先说第一个问题,render函数的作用是创建和渲染页面的标签,其实上面写的是箭头函数以及参数h有点抽象了,准确的写法应该是下面:

    render: function(creareElement){
      createElement(App)  
    }

      参数h其实就是creareElement,他是一个函数,他的作用是创建标签;看下面的代码把:

       这是creareElement的普通用法,他的意思是创建一个h2标签,有class属性等于box,并且标签内容是Hello World和一个button标签

      creareElement还有一种用法就是传入一个组件,也就是createElement(App) ,就相当于创建App提供的模板标签了

      好了,到第二个问题; 为什么runtime-only中也有template的代码,那不是也要前两个步骤吗?答案是不需要的,这样说吧,在创建完runtime-only后,前面两个步骤相当已经执行过了,再说一遍,前面两个步骤已经执行过了,所以实际上去执行 h(App)的时候,App此时已经没有template了,template已经被渲染成render函数;

  • 相关阅读:
    IDEA配置GIT
    夜游神安卓模拟器安装
    jira中使用eazyBI
    [Google Guava]学习--新集合类型Multimap
    [Google Guava]学习--新集合类型Multiset
    Java自己实现双向链表LinkList
    JVM学习之jstat使用方法
    Mycat+Mysql 插入数据报错 i[Err] 1064
    Windows配置mycat
    navicat cannot create file 文件名、目录名或卷标语法不正确 解决方法
  • 原文地址:https://www.cnblogs.com/ibcdwx/p/14599097.html
Copyright © 2011-2022 走看看