首页
学习
活动
专区
圈层
工具
发布

Vue中的模板编译原理

先看下模板到真正用户看到的界面过程中经历了什么: 模板———>模板编译——>渲染函数——>vnode——>用于界面 vue.js提供了模板语法,允许我们声明式的描述状态和DOM之间的绑定关系。...将模板编译为渲染函数,就是模板编译要做的事,模板编译可以分为三个阶段: 1.将模板解析为AST(抽象语法树)—— 解析器。 2.遍历AST标记静态节点 —— 优化器。...使用本文开头举的例子中的模版生成后的AST来生成render后是这样的: { render: `with(this){return _c('div',[_c('p',[_v(_s(name))])]...1.第一个参数是一个HTML标签名 2.第二个参数是元素上使用的属性所对应的数据对象,可选项 3.第三个参数是children _v的意思是创建一个文本节点。 _s是返回参数中的字符串。..., children) 的函数调用字符串,然后 data 和 children 也是使用 AST 中的属性去拼字符串。

1.7K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    vue中eventBus的使用

    使用场景: 1、兄弟组件的通信,父子组件的通信 2、不同路由的通信 针对兄弟组件的通信,父子组件的通信 新建bus.js文件 import Vue from 'vue' var bus = new...Vue() export default bus 在需要通信的组件中引入bus.js,一个组件触发事件,另一个组件监听事件  import Bus from "@/assets/js/bus.js...$on("message",function(res){      _this.message = res     })   }     针对不同路由的通信 需要在A组件销毁前触发事件  ...$emit("message","hii")   },  在B组件created中接收事件   created () {      var _this = this           Bus...function(res){        console.log(res+"123")              _this.message = res     })    },  并且在B组件的销毁前解除监听

    83250

    vue中$emit的使用

    vue中组件是重要的一部分,因为有各自的作用域,所以父子组件之间的值传递也很重要; 在初期接触父子组件的值传递时,个人接触到最多的是prop,主要是父组件给子组件静态传值; 但是在处理提问增加标签问题时...,子组件也需要给父组件传值; $emit实现子组件向父组件通信,绑定一个自定义事件event,语句被执行到的时候,就会将参数arg传递到父组件,父组件通过@event监听并接收参数。...在这里将标签输入框封装为一个组件,在输入框中删除或者点击时,需要将对应的值传给父组件; 输入框中删除标签还好,此处直接绑定'input'事件,将对应值返回父组件; delTag(tag, index)...的值为true。...这样就可以保证子组件的操作动态传递给父组件了~

    1.3K50

    Vue中的$set的使用

    在我们使用vue进行开发的过程中,可能会遇到一种情况:当生成vue实例后,当再次给数据赋值时,有时候并不会自动更新到视图上去; 当我们去看vue文档的时候,会发现有这么一句话:如果在实例创建之后添加新的属性到实例上...-- JavaScript 代码需要放在尾部(指定的HTML元素之后) --> var data = { name: "简书", age: '3', info:...当去查对应文档时,你会发现响应系统 ,把一个普通 Javascript 对象传给 Vue 实例来作为它的 data 选项,Vue 将遍历它的属性,用 Object.defineProperty 将它们转为...; } }); 1、通过Vue.set方法设置data属性,如上: Vue.set(data,'sex', '男') 2、您还可以使用 vm....$set实例方法,这也是全局 Vue.set方法的别名: var key = 'content'; //这种主要用于当对象中某个属性值动态生成时处理方式 this.$set('info.'

    1.6K100

    15 GitHub 使用中的记录总结

    使用 ssh 连接 git 仓库 生成 ssh 密钥 ssh-keygen -t rsa -C "你的邮箱地址" 验证是否可正常访问 ssh -T git@github.com Git - Failed...修改 hosts 文件,在 C:\Windows\System32\drivers\etc\hosts 中添加单条记录 140.82.114.3 github.com 刷新 DNS 缓存 ipconfig...我的 fork 的使用 git fork 项目更新原则 为保证 master 分支纯净,自己只在特性分支进行二次开发 配置当前 fork 的仓库的原仓库地址 git remote add upstream... 查看当前仓库的所有地址 git remote -v 使用 fetch 更新对于仓库 git fetch upstream 切换到 master 分支,合并 upstream/master...master 分支 参考 浅谈 GIT 中的 Fork_撕裂石头的博客-CSDN 博客_git中的 fork https://blog.csdn.net/qq_29947967/article/details

    39520

    如何在CM中启用YARN的使用率报告

    内容概述 1.如何配置YARN的容器使用情况度量收集 2.容器使用情况度量收集测试 3.总结 测试环境 1.CDH5.13.1集群 2.采用root用户操作 3.集群未启用Kerberos 2.如何配置...YARN的容器使用情况度量收集 ---- 1.首先在YARN服务中开启容器使用情况度量收集 [gxt0igoa4o.jpeg] [lf2kuu5h3w.jpeg] 对于“容器使用情况MapReduce作业用户...2.这个时候CM会自动在HDFS中创建用于收集YARN容器使用情况的目录,/tmp/cmYarnContainerMetrics,用户属组为cmjobuser:hadoop,权限为770 [povqey0e9g.jpeg...如果你在CM中专门指定了一个池,如下配置 [0ydaqohy8r.jpeg] 则需要确保CM的动态资源池配置的放置规则中有如下策略: [7cwr5reg7p.jpeg] 否则你需要在YARN中创建你在CM...注:Fayson在测试过程中,CM并没有专门指定队列,所以在运行任务的时候默认使用的是第二条放置策略,即:使用池 root.users.username ,如果该池不存在则加以创建。

    4.8K50

    Vue 使用中的小技巧

    在vue的使用过程中会遇到各种场景,当普通使用时觉得没什么,但是或许优化一下可以更高效更优美的进行开发。下面有一些我在日常开发的时候用到的小技巧,在下将不定期更新~ 1....1、 每一个从父组件传到子组件的props,我们都得在子组件的Props中显式的声明才能使用。...{ vue: { preserveWhitespace: false } } 它的作用是阻止元素间生成空白内容,在 Vue 模板编译后使用 _v(" ") 表示。.../assets/default-avatar.png"> 在 vue-cli 的 webpack 模板下,默认配置是: transformToRequire...---- 网上的帖子大多深浅不一,甚至有些前后矛盾,在下的文章都是学习过程中的总结,如果发现错误,欢迎留言指出~ 参考: Vue2 全局过滤器(vue-cli) Vue.js最佳实践 webpack文档

    1.5K20

    Vue 使用中的小技巧

    在vue的使用过程中会遇到各种场景,当普通使用时觉得没什么,但是或许优化一下可以更高效更优美的进行开发。下面有一些我在日常开发的时候用到的小技巧,在下将不定期更新~ 1...., /\.vue$/) // 找到组件文件夹下以.vue命名的文件,如果文件名为index,那么取组件中的name作为注册的组件名 requireComponent.keys().forEach(filePath...1、 每一个从父组件传到子组件的props,我们都得在子组件的Props中显式的声明才能使用。...{ vue: { preserveWhitespace: false } } 它的作用是阻止元素间生成空白内容,在 Vue 模板编译后使用 _v(" ") 表示。.../assets/default-avatar.png"> 在 vue-cli 的 webpack 模板下,默认配置是: transformToRequire

    1.2K10
    领券