@@ -17,22 +17,29 @@ import {
17
17
isRenderableAttr
18
18
} from 'web/server/util'
19
19
20
+ const ssrHelpers = {
21
+ _ssrEscape : escape ,
22
+ _ssrNode : renderStringNode ,
23
+ _ssrList : renderStringList ,
24
+ _ssrAttr : renderAttr ,
25
+ _ssrAttrs : renderAttrs ,
26
+ _ssrDOMProps : renderDOMProps ,
27
+ _ssrClass : renderSSRClass ,
28
+ _ssrStyle : renderSSRStyle
29
+ }
30
+
20
31
export function installSSRHelpers ( vm : Component ) {
21
- if ( vm . _ssrNode ) return
22
- let Ctor = vm . constructor
23
- while ( Ctor . super ) {
24
- Ctor = Ctor . super
32
+ if ( vm . _ssrNode ) {
33
+ return
34
+ }
35
+ let Vue = vm . constructor
36
+ while ( Vue . super ) {
37
+ Vue = Vue . super
38
+ }
39
+ extend ( Vue . prototype , ssrHelpers )
40
+ if ( Vue . FunctionalRenderContext ) {
41
+ extend ( Vue . FunctionalRenderContext . prototype , ssrHelpers )
25
42
}
26
- extend ( Ctor . prototype , {
27
- _ssrEscape : escape ,
28
- _ssrNode : renderStringNode ,
29
- _ssrList : renderStringList ,
30
- _ssrAttr : renderAttr ,
31
- _ssrAttrs : renderAttrs ,
32
- _ssrDOMProps : renderDOMProps ,
33
- _ssrClass : renderSSRClass ,
34
- _ssrStyle : renderSSRStyle
35
- } )
36
43
}
37
44
38
45
class StringNode {
0 commit comments