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

adjust ssr API so that user can provide server-side implementations for custom directives

Evan You 10 лет назад
Родитель
Сommit
4191f251af
4 измененных файлов с 29 добавлено и 14 удалено
  1. 3 1
      circle.yml
  2. 20 11
      src/entries/web-server-renderer.js
  3. 2 1
      test/ssr/ssr.stream.spec.js
  4. 4 1
      test/ssr/ssr.sync.spec.js

+ 3 - 1
circle.yml

@@ -9,4 +9,6 @@ general:
 
 test:
   override:
-    - npm run test:cover # only run unit tets for now before we setup SauceLabs
+    - npm run lint
+    - npm run test:cover # only run unit tests in Phantom for now before we setup SauceLabs
+    - npm run test:ssr

+ 20 - 11
src/entries/web-server-renderer.js

@@ -5,14 +5,23 @@ import style from 'web/server/modules/style'
 import show from 'web/server/directives/show'
 import { isUnaryTag } from 'web/util/index'
 
-export default createRenderer({
-  isUnaryTag,
-  modules: [
-    attrs,
-    klass,
-    style
-  ],
-  directives: {
-    show
-  }
-})
+const modules = [
+  attrs,
+  klass,
+  style
+]
+
+const baseDirectives = {
+  show
+}
+
+export default function publicCreateRenderer (options = {}) {
+  // user can provide server-side implementations for custom directives
+  // when creating the renderer.
+  const directives = Object.assign(baseDirectives, options.directives)
+  return createRenderer({
+    isUnaryTag,
+    modules,
+    directives
+  })
+}

+ 2 - 1
test/ssr/ssr.stream.spec.js

@@ -1,6 +1,7 @@
 import Vue from '../../dist/vue.common.js'
 import { compileToFunctions } from '../../dist/compiler.common.js'
-import { renderToStream } from '../../dist/server-renderer.js'
+import createRenderer from '../../dist/server-renderer.js'
+const { renderToStream } = createRenderer()
 
 describe('SSR: renderToStream', () => {
   it('should render to a stream', done => {

+ 4 - 1
test/ssr/ssr.sync.spec.js

@@ -1,6 +1,9 @@
 import Vue from '../../dist/vue.common.js'
 import { compileToFunctions } from '../../dist/compiler.common.js'
-import { renderToString } from '../../dist/server-renderer.js'
+import createRenderer from '../../dist/server-renderer.js'
+const { renderToString } = createRenderer()
+
+// TODO: test custom server-side directives
 
 describe('SSR: renderToString', () => {
   it('static attributes', () => {