Преглед изворни кода

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

Co-authored-by: 三咲智子 Kevin Deng <sxzz@sxzz.moe>
Rizumu Ayaka пре 1 година
родитељ
комит
be332dc5a8
1 измењених фајлова са 8 додато и 3 уклоњено
  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
 }