Snabbdom(虚拟dom-3-vnode函数)

37 篇文章 3 订阅
16 篇文章 1 订阅
import { AttachData } from "./helpers/attachto";
import { Hooks } from "./hooks";
import { Attrs } from "./modules/attributes";
import { Classes } from "./modules/class";
import { Dataset } from "./modules/dataset";
import { On } from "./modules/eventlisteners";
import { Props } from "./modules/props";
import { VNodeStyle } from "./modules/style";
// 导入的依赖模块

// 定义一些type / interface
export type Key = string | number | symbol;

export interface VNode {
  sel: string | undefined; // 选择器
  data: VNodeData | undefined; // 节点数据:属性/样式/事件等
  children: Array<VNode | string> | undefined; // zi 节点,和text 互斥
  elm: Node | undefined; // 记录 vnode 对应的真实DOM
  text: string | undefined; // 节点中的内容,和children 互斥
  key: Key | undefined; // 优化使用
}

export interface VNodeData {
  props?: Props;
  attrs?: Attrs;
  class?: Classes;
  style?: VNodeStyle;
  dataset?: Dataset;
  on?: On;
  attachData?: AttachData;
  hook?: Hooks;
  key?: Key;
  ns?: string; // for SVGs
  fn?: () => VNode; // for thunks
  args?: any[]; // for thunks
  is?: string; // for custom elements v1
  [key: string]: any; // for any other 3rd party module
}

export function vnode(
  sel: string | undefined,
  data: any | undefined,
  children: Array<VNode | string> | undefined,
  text: string | undefined,
  elm: Element | Text | undefined
): VNode {
  const key = data === undefined ? undefined : data.key;
  return { sel, data, children, text, elm, key };
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值