首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

19 vue 模板语法及简要实现原理

查看编译后的html源码,发现v-html会在其所属的节点内部生成新节点,内容即是rawHtml,不会将所属节点替换。 ?...在vue源码内部,解析模板时将检查是否以v-开头,如果是,这表明是自己的指令,需要处理。...disabled在html元素上是一个特殊的值,只要存在,就代表真,否则代表假。...,如果不这样做,类似下面这样的在自定义组件上的事件监听就没有效果: 自定义组件 @click="方法" /> html元素本身具有事件属性,组件也有自己的事件系统,vue处理这两种事件的逻辑是不同的...,所以在自定义组件上添加事件监听,vue必须要知道是加在哪里的,.native 充当了一个区分的标识。

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

    『 Vue小Case 』- 如何动态绑定多个事件(内附源码解析)

    一、“可爱”的故事 在搜索的过程中,看到了这样一条结果“初学 vue,请问怎么在元素上绑定多个事件”[1],并且还是 Vue 的 Issue,那我当然得优先看看了。Issue 中具体的内容如下: ?...通过v-on={...}绑定多个事件时,如果是在 DOM 元素上绑定,则只支持原生事件,不支持自定义事件;如果是在 Vue 组件上绑定,则只支持自定义事件,不支持原生事件。...,而v-on={...}用法不会处理native修饰符,最后只会根据元素类型来绑定事件,所以** 该方式用在 DOM 原生元素上时,只支持原生事件;用在组件上时,只支持自定义事件**。...实现,该方式用在 DOM 原生元素上时,只支持原生事件;用在组件上时,只支持自定义事件。...参考资料 [1]“初学 vue,请问怎么在元素上绑定多个事件”: https://github.com/vuejs/vue/issues/1050 [2]示例 1: https://jsbin.com/

    6.2K40

    vue源码分析-挂载流程和模板编译

    如果你需要在客户端编译模板 (比如传入一个字符串给 template 选项,或挂载到一个元素上并以其 DOM 内部的 HTML 作为模板),就需要一个包含编译器的版本。...// 内部真正实现挂载的方法Vue.prototype.$mount = function (el, hydrating) { el = el && inBrowser ?...|| el === document.documentElement) { warn( "Do not mount Vue to or - mount to...针对template而言,它会利用Vue内部的编译器进行模板的编译,字符串模板会转换为抽象的语法树,即AST树,并最终转化为一个类似function(){with(){}}的渲染函数,这是我们后面讨论的重点...= ref.render; } ... }}compileToFunctions有三个参数,一个是template模板,另一个是编译的配置信息,并且这个方法是对外暴露的编译方法,用户可以自定义配置信息进行模板的编译

    57600

    再聊 Vue.js 3.2 关于 vnode 部分的优化

    什么是 vnode vnode 本质上是用来描述 DOM 的 JavaScript 对象,它在 Vue.js 中可以描述不同类型的节点,比如普通元素节点、组件节点等。...普通元素 vnode 什么是普通元素节点呢?...另外,Vue.js 3.x 内部还针对 vnode 的 type,做了更详尽的分类,包括 Suspense、Teleport 等,并且把 vnode 的类型信息做了编码,以便在后面 vnode的挂载阶段...我们知道,组件模板经过编译,会生成对应的 render 函数,在 render 函数内部,会执行 createVNode 函数创建 vnode 对象,我们来看一下 Vue.js 3.2 之前它的实现:...顺着这个思路,就可以在模板编译阶段,针对普通元素节点,使用新的函数来创建 vnode,Vue.js 3.2 就是这么做的,举个例子:

    1.2K10

    前端-用 Vue 编写一个长按指令

    == null ) { clearTimeout(pressTimer); pressTimer = null; } } // 选择 id 为 longPressButton 的元素...首先,我们必须声明自定义指令的名称。 Vue.directive('longpress', { }) 这就注册了一个名为 v-longpress 的全局自定义指令。...接下来,我们添加带参数的 bind 钩子函数,它允许我们引用指令绑定的元素,获取传递给指令的值,并标识指令使用的组件。...+= `Found in component '${compName}' ` } console.warn(warn); } 最后,如果这个指令也适用于触屏设备,那会是极好的。...如果你想知道更多关于 自定义指令、可用的 钩子函数、可以传递到这个钩子函数中的 参数、函数简写 的信息, 参照 @vuejs 官方文档,作者做了很好的解释。

    2.3K40

    【UniApp】-uni-app-内置组件

    直接回到文档中查询一下即可 看一下他的文档,文档里面一般都会有示例,直接将示例程序拷贝到你们的项目中看一下改改就好,好了我就不废话了,直接来看看怎么使用 view 视图容器 它类似于传统 html 中的 div,用于包裹各种元素内容...="default">default button primary button warn...">warn button // index.vue export default {} 显示效果...注意点: 默认情况下 UniApp 的内置组件已经做好了适配,运行在不同平台上会自动转换成对应平台的组件 所以虽然在 UniApp 中也可以直接编写 HTML 代码,使用 HTML 元素,但是 不推荐...,因为 HTML 元素 UniApp 是没有做适配的,可能在不同平台上运行会出现未知问题 所以你要用就用 UniApp 提供的组件,而不要去使用 HTML 元素 来看一下注意点的第一点,运行在不同平台上会自动转换成对应平台的组件

    74310

    前端常见vue面试题合集

    ,像 modals,toast 等这样的元素,如果我们嵌套在 Vue 的某个组件内部,那么处理嵌套组件的定位、z-index 和样式就会变得很困难通过Teleport,我们可以在组件的逻辑位置写模板代码... 没有特殊指令的标记 (v-if/else-if/else、v-for 或 v-slot) 现在被视为普通元素,并将生成原生的 元素,而不是渲染其内部内容。...写过自定义指令吗 原理是什么指令本质上是装饰器,是 vue 对 HTML 元素的扩展,给 HTML 元素增加自定义功能。vue 编译 DOM 时,会找到指令对象,执行指令的相关方法。...自定义指令有五个生命周期(也叫钩子函数),分别是 bind、inserted、update、componentUpdated、unbind1. bind:只调用一次,指令第一次绑定到元素时调用。...我们在 vue 项目中主要使用 v-model 指令在表单 input、textarea、select 等元素上创建双向数据绑定,我们知道 v-model 本质上不过是语法糖,v-model 在内部为不同的输入元素使用不同的属性并抛出不同的事件

    72740

    写过自定义指令吗,原理是什么?

    除了核心功能默认内置的指令 (v-model 和 v-show),Vue 也允许注册自定义指令。注意,在 Vue2.0 中,代码复用和抽象的主要形式是组件。...现在让我们用指令来实现这个功能:// 注册一个全局自定义指令 `v-focus`Vue.directive('focus', {// 当被绑定的元素插入到 DOM 中时…… inserted: function...,如下:指令内部提供的钩子函数一个指令定义对象可以提供如下几个钩子函数 (均为可选):bind: 只调用一次,指令第一次绑定到元素时调用。...unbind: 只调用一次,指令与元素解绑时调用。更多vue面试题解答参见 前端vue面试题详细解答钩子函数参数指令钩子函数会被传入以下参数:el: 指令所绑定的元素,可以用来直接操作 DOM 。...在没有下一步对源码进行分析之前,我们也能大概猜测出自定义指令是如何实现的。在模板编译阶段,从元素的属性中解析到指令属性,在不同生命周期元素阶段调用自定指令中不同的自定义逻辑。

    32710
    领券