Sfoglia il codice sorgente

perf(runtime-vapor): `children` helper (#263)

Co-authored-by: 三咲智子 Kevin Deng <sxzz@sxzz.moe>
Rizumu Ayaka 1 anno fa
parent
commit
be332dc5a8
1 ha cambiato i file con 8 aggiunte e 3 eliminazioni
  1. 8 3
      packages/runtime-vapor/src/dom/template.ts

+ 8 - 3
packages/runtime-vapor/src/dom/template.ts

@@ -13,9 +13,14 @@ export function template(html: string) {
 /*! #__NO_SIDE_EFFECTS__ */
 export function children(node: Node, ...paths: number[]): Node {
   for (const idx of paths) {
-    for (let i = 0; i <= idx; i++) {
-      node = node[i === 0 ? 'firstChild' : 'nextSibling']!
-    }
+    // In various situations, select the quickest approach.
+    // See https://github.com/vuejs/core-vapor/pull/263
+    node =
+      idx === 0
+        ? node.firstChild!
+        : idx === 1
+          ? node.firstChild!.nextSibling!
+          : node.childNodes[idx]
   }
   return node
 }