Просмотр исходного кода

refactor(compiler-vapor): register effect argument

三咲智子 Kevin Deng 2 лет назад
Родитель
Сommit
9b5d23c3e2

+ 2 - 2
packages/compiler-vapor/src/transform.ts

@@ -86,7 +86,7 @@ export interface TransformContext<T extends AllNode = AllNode> {
   registerTemplate(customTemplate?: string): number
   registerEffect(
     expressions: SimpleExpressionNode[],
-    operation: OperationNode[],
+    ...operation: OperationNode[]
   ): void
   registerOperation(...operations: OperationNode[]): void
 }
@@ -159,7 +159,7 @@ function createRootContext(
       this.dynamic.flags |= DynamicFlag.REFERENCED
       return (this.dynamic.id = this.increaseId())
     },
-    registerEffect(expressions, operations) {
+    registerEffect(expressions, ...operations) {
       expressions = expressions.filter(exp => !isConstantExpression(exp))
       if (this.inVOnce || expressions.length === 0) {
         return this.registerOperation(...operations)

+ 16 - 21
packages/compiler-vapor/src/transforms/transformElement.ts

@@ -135,13 +135,11 @@ function transformNativeElement(
 
   if (propsResult[0] /* dynamic props */) {
     const [, dynamicArgs, expressions] = propsResult
-    context.registerEffect(expressions, [
-      {
-        type: IRNodeTypes.SET_DYNAMIC_PROPS,
-        element: context.reference(),
-        props: dynamicArgs,
-      },
-    ])
+    context.registerEffect(expressions, {
+      type: IRNodeTypes.SET_DYNAMIC_PROPS,
+      element: context.reference(),
+      props: dynamicArgs,
+    })
   } else {
     for (const prop of propsResult[1]) {
       const { key, values } = prop
@@ -149,13 +147,11 @@ function transformNativeElement(
         template += ` ${key.content}`
         if (values[0].content) template += `="${values[0].content}"`
       } else {
-        context.registerEffect(values, [
-          {
-            type: IRNodeTypes.SET_PROP,
-            element: context.reference(),
-            prop,
-          },
-        ])
+        context.registerEffect(values, {
+          type: IRNodeTypes.SET_PROP,
+          element: context.reference(),
+          prop,
+        })
       }
     }
   }
@@ -226,13 +222,12 @@ function buildProps(
           } else {
             context.registerEffect(
               [prop.exp],
-              [
-                {
-                  type: IRNodeTypes.SET_DYNAMIC_EVENTS,
-                  element: context.reference(),
-                  event: prop.exp,
-                },
-              ],
+
+              {
+                type: IRNodeTypes.SET_DYNAMIC_EVENTS,
+                element: context.reference(),
+                event: prop.exp,
+              },
             )
           }
         } else {

+ 5 - 7
packages/compiler-vapor/src/transforms/transformText.ts

@@ -65,13 +65,11 @@ function processTextLikeContainer(
   context: TransformContext<ElementNode>,
 ) {
   const values = children.map(child => createTextLikeExpression(child, context))
-  context.registerEffect(values, [
-    {
-      type: IRNodeTypes.SET_TEXT,
-      element: context.reference(),
-      values,
-    },
-  ])
+  context.registerEffect(values, {
+    type: IRNodeTypes.SET_TEXT,
+    element: context.reference(),
+    values,
+  })
 }
 
 function createTextLikeExpression(node: TextLike, context: TransformContext) {

+ 5 - 10
packages/compiler-vapor/src/transforms/vHtml.ts

@@ -18,14 +18,9 @@ export const transformVHtml: DirectiveTransform = (dir, node, context) => {
     context.childrenTemplate.length = 0
   }
 
-  context.registerEffect(
-    [exp],
-    [
-      {
-        type: IRNodeTypes.SET_HTML,
-        element: context.reference(),
-        value: exp,
-      },
-    ],
-  )
+  context.registerEffect([exp], {
+    type: IRNodeTypes.SET_HTML,
+    element: context.reference(),
+    value: exp,
+  })
 }

+ 1 - 1
packages/compiler-vapor/src/transforms/vOn.ts

@@ -84,5 +84,5 @@ export const transformVOn: DirectiveTransform = (dir, node, context) => {
     effect: !arg.isStatic,
   }
 
-  context.registerEffect([arg], [operation])
+  context.registerEffect([arg], operation)
 }

+ 5 - 10
packages/compiler-vapor/src/transforms/vText.ts

@@ -18,14 +18,9 @@ export const transformVText: DirectiveTransform = (dir, node, context) => {
     context.childrenTemplate.length = 0
   }
 
-  context.registerEffect(
-    [exp],
-    [
-      {
-        type: IRNodeTypes.SET_TEXT,
-        element: context.reference(),
-        values: [exp],
-      },
-    ],
-  )
+  context.registerEffect([exp], {
+    type: IRNodeTypes.SET_TEXT,
+    element: context.reference(),
+    values: [exp],
+  })
 }