Evan You vor 9 Jahren
Ursprung
Commit
5519c5beb0

+ 6 - 1
src/server/optimizing-compiler/codegen.js

@@ -175,7 +175,12 @@ function elementToOpenTagSegments (el, state): Array<StringSegment> {
   if (el.staticStyle || el.styleBinding || el.attrsMap['v-show']) {
     segments.push.apply(
       segments,
-      genStyleSegments(el.staticStyle, el.styleBinding, el.attrsMap['v-show'])
+      genStyleSegments(
+        el.attrsMap.style,
+        el.staticStyle,
+        el.styleBinding,
+        el.attrsMap['v-show']
+      )
     )
   }
   // console.log(segments)

+ 17 - 1
src/server/optimizing-compiler/modules.js

@@ -86,8 +86,24 @@ export function genClassSegments (
 
 export function genStyleSegments (
   staticStyle: ?string,
+  parsedStaticStyle: ?string,
   styleBinding: ?string,
   vShowExpression: ?string
 ): Array<StringSegment> {
-  return []
+  if (staticStyle && !styleBinding && !vShowExpression) {
+    return [{ type: RAW, value: ` style=${JSON.stringify(staticStyle)}` }]
+  } else {
+    return [{
+      type: EXPRESSION,
+      value: `_ssrStyle(${
+        parsedStaticStyle || 'null'
+      },${
+        styleBinding || 'null'
+      }, ${
+        vShowExpression
+          ? `{ display: (${vShowExpression}) ? '' : 'none' }`
+          : 'null'
+      })`
+    }]
+  }
 }

+ 8 - 3
src/server/optimizing-compiler/runtime-helpers.js

@@ -1,10 +1,11 @@
 /* @flow */
 
 import { escape } from 'web/server/util'
-import { isObject } from 'shared/util'
+import { isObject, extend } from 'shared/util'
 import { renderAttr } from 'web/server/modules/attrs'
 import { renderClass } from 'web/util/class'
 import { genStyle } from 'web/server/modules/style'
+import { normalizeStyleBinding } from 'web/util/style'
 
 import {
   propsToAttrMap,
@@ -104,6 +105,10 @@ function renderSSRStyle (
   dynamic: any,
   extra: ?Object
 ): string {
-  // TODO
-  return genStyle({})
+  const style = {}
+  if (staticStyle) extend(style, staticStyle)
+  if (dynamic) extend(style, normalizeStyleBinding(dynamic))
+  if (extra) extend(style, extra)
+  const res = genStyle(style)
+  return res === '' ? res : ` style=${JSON.stringify(escape(res))}`
 }