5
5
// a node is not optimizable it simply falls back to the default codegen.
6
6
7
7
// import * as directives from './directives'
8
- import { FULL , PARTIAL , CHILDREN } from './optimizer'
8
+ import { FULL , SELF , PARTIAL , CHILDREN } from './optimizer'
9
9
10
10
import {
11
11
genIf ,
12
12
genFor ,
13
13
genData ,
14
+ genText ,
14
15
genElement ,
15
16
genChildren ,
16
17
CodegenState
@@ -54,13 +55,16 @@ function genSSRElement (el: ASTElement, state: SSRCodegenState): string {
54
55
switch ( el . ssrOptimizability ) {
55
56
case FULL :
56
57
// stringify whole tree
57
- return genStringNode ( el , state , true )
58
- case PARTIAL :
58
+ return genStringElement ( el , state , true )
59
+ case SELF :
59
60
// stringify self and check children
60
- return genStringNode ( el , state , false )
61
+ return genStringElement ( el , state , false )
61
62
case CHILDREN :
63
+ // generate self as VNode and stringify children
64
+ return genNormalElement ( el , state , true )
65
+ case PARTIAL :
62
66
// generate self as VNode and check children
63
- return genVNode ( el , state )
67
+ return genNormalElement ( el , state , false )
64
68
default :
65
69
// bail whole tree
66
70
return genElement ( el , state )
@@ -70,29 +74,29 @@ function genSSRElement (el: ASTElement, state: SSRCodegenState): string {
70
74
function genSSRNode ( el , state ) {
71
75
return el . type === 1
72
76
? genSSRElement ( el , state )
73
- : genStringNode ( el , state )
77
+ : genText ( el , state )
74
78
}
75
79
76
80
function genSSRChildren ( el , state , checkSkip ) {
77
81
return genChildren ( el , state , checkSkip , genSSRElement , genSSRNode )
78
82
}
79
83
80
- function genVNode ( el , state ) {
81
- let code
84
+ function genNormalElement ( el , state , stringifyChildren ) {
82
85
const data = el . plain ? undefined : genData ( el , state )
83
- const children = el . inlineTemplate ? null : genSSRChildren ( el , state , true )
84
- code = `_c('${ el . tag } '${
86
+ const children = stringifyChildren
87
+ ? genStringChildren ( el , state )
88
+ : genSSRChildren ( el , state , true )
89
+ return `_c('${ el . tag } '${
85
90
data ? `,${ data } ` : '' // data
86
91
} ${
87
92
children ? `,${ children } ` : '' // children
88
93
} )`
89
- // module transforms
90
- for ( let i = 0 ; i < state . transforms . length ; i ++ ) {
91
- code = state . transforms [ i ] ( el , code )
92
- }
93
- return code
94
94
}
95
95
96
- function genStringNode ( el , state , includeChildren ) {
97
- return '!!!'
96
+ function genStringElement ( el , state , stringifyChildren ) {
97
+ return '"string element"'
98
+ }
99
+
100
+ function genStringChildren ( el , state ) {
101
+ return '"string children"'
98
102
}
0 commit comments