From 701bedc1705b9944d9ce988acbed8b1dc680553c Mon Sep 17 00:00:00 2001 From: Declan de Wet Date: Wed, 2 Nov 2016 23:11:28 +0200 Subject: [PATCH] logically group modules into folders --- src/{ => client}/updateClientMetaInfo.js | 6 ++-- .../updaters}/updateTagAttributes.js | 2 +- src/{ => client/updaters}/updateTitle.js | 0 src/index.js | 36 ++----------------- src/{ => server}/$meta.js | 0 src/{ => server}/generateServerInjector.js | 4 +-- src/{ => server/generators}/attrsGenerator.js | 2 +- src/{ => server/generators}/titleGenerator.js | 2 +- src/{ => server}/inject.js | 2 +- src/{ => shared}/constants.js | 0 src/{ => shared}/getComponentOption.js | 0 src/{ => shared}/getMetaInfo.js | 0 src/shared/plugin.js | 35 ++++++++++++++++++ 13 files changed, 46 insertions(+), 43 deletions(-) rename src/{ => client}/updateClientMetaInfo.js (84%) rename src/{ => client/updaters}/updateTagAttributes.js (94%) rename src/{ => client/updaters}/updateTitle.js (100%) rename src/{ => server}/$meta.js (100%) rename src/{ => server}/generateServerInjector.js (80%) rename src/{ => server/generators}/attrsGenerator.js (92%) rename src/{ => server/generators}/titleGenerator.js (85%) rename src/{ => server}/inject.js (93%) rename src/{ => shared}/constants.js (100%) rename src/{ => shared}/getComponentOption.js (100%) rename src/{ => shared}/getMetaInfo.js (100%) create mode 100644 src/shared/plugin.js diff --git a/src/updateClientMetaInfo.js b/src/client/updateClientMetaInfo.js similarity index 84% rename from src/updateClientMetaInfo.js rename to src/client/updateClientMetaInfo.js index efdee2a..bc4906e 100644 --- a/src/updateClientMetaInfo.js +++ b/src/client/updateClientMetaInfo.js @@ -1,6 +1,6 @@ -import updateTitle from './updateTitle' -import updateTagAttributes from './updateTagAttributes' -import { SERVER_RENDERED_ATTRIBUTE } from './constants' +import updateTitle from './updaters/updateTitle' +import updateTagAttributes from './updaters/updateTagAttributes' +import { SERVER_RENDERED_ATTRIBUTE } from '../shared/constants' if (typeof window !== 'undefined' && window !== null) { var htmlTag = document.getElementsByTagName('html')[0] diff --git a/src/updateTagAttributes.js b/src/client/updaters/updateTagAttributes.js similarity index 94% rename from src/updateTagAttributes.js rename to src/client/updaters/updateTagAttributes.js index 728da8b..cf19641 100644 --- a/src/updateTagAttributes.js +++ b/src/client/updaters/updateTagAttributes.js @@ -1,4 +1,4 @@ -import { VUE_META_ATTRIBUTE } from './constants' +import { VUE_META_ATTRIBUTE } from '../../shared/constants' /** * updates the document's html tag attributes diff --git a/src/updateTitle.js b/src/client/updaters/updateTitle.js similarity index 100% rename from src/updateTitle.js rename to src/client/updaters/updateTitle.js diff --git a/src/index.js b/src/index.js index fea3bd2..f72805c 100644 --- a/src/index.js +++ b/src/index.js @@ -1,35 +1,3 @@ -import $meta from './$meta' -import getMetaInfo from './getMetaInfo' -import updateClientMetaInfo from './updateClientMetaInfo' +import install from './shared/plugin' -// automatic install -if (typeof Vue !== 'undefined') { - Vue.use(VueMeta) -} - -/** - * Plugin install function. - * @param {Function} Vue - the Vue constructor. - */ -export default function VueMeta (Vue) { - // bind the $meta method to this component instance - Vue.prototype.$meta = $meta - - // store an id to keep track of DOM updates - let requestId = null - - // watch for client side component updates - Vue.mixin({ - beforeMount () { - // batch potential DOM updates to prevent extraneous re-rendering - window.cancelAnimationFrame(requestId) - - requestId = window.requestAnimationFrame(() => { - requestId = null - - // update the meta info - updateClientMetaInfo(getMetaInfo(this.$root), this.$root) - }) - } - }) -} +export default install diff --git a/src/$meta.js b/src/server/$meta.js similarity index 100% rename from src/$meta.js rename to src/server/$meta.js diff --git a/src/generateServerInjector.js b/src/server/generateServerInjector.js similarity index 80% rename from src/generateServerInjector.js rename to src/server/generateServerInjector.js index 72c74b7..d77e4ba 100644 --- a/src/generateServerInjector.js +++ b/src/server/generateServerInjector.js @@ -1,5 +1,5 @@ -import titleGenerator from './titleGenerator' -import attrsGenerator from './attrsGenerator' +import titleGenerator from './generators/titleGenerator' +import attrsGenerator from './generators/attrsGenerator' /** * Converts a meta info property to one that can be stringified on the server diff --git a/src/attrsGenerator.js b/src/server/generators/attrsGenerator.js similarity index 92% rename from src/attrsGenerator.js rename to src/server/generators/attrsGenerator.js index 6a0d562..6564e78 100644 --- a/src/attrsGenerator.js +++ b/src/server/generators/attrsGenerator.js @@ -1,4 +1,4 @@ -import { VUE_META_ATTRIBUTE } from './constants' +import { VUE_META_ATTRIBUTE } from '../../shared/constants' /** * Generates tag attributes for use on the server. diff --git a/src/titleGenerator.js b/src/server/generators/titleGenerator.js similarity index 85% rename from src/titleGenerator.js rename to src/server/generators/titleGenerator.js index dc8b440..6886e9d 100644 --- a/src/titleGenerator.js +++ b/src/server/generators/titleGenerator.js @@ -1,4 +1,4 @@ -import { VUE_META_ATTRIBUTE } from './constants' +import { VUE_META_ATTRIBUTE } from '../../shared/constants' /** * Generates title output for the server diff --git a/src/inject.js b/src/server/inject.js similarity index 93% rename from src/inject.js rename to src/server/inject.js index 9e7f0e0..d42e59e 100644 --- a/src/inject.js +++ b/src/server/inject.js @@ -1,4 +1,4 @@ -import getMetaInfo from './getMetaInfo' +import getMetaInfo from '../shared/getMetaInfo' import generateServerInjector from './generateServerInjector' /** diff --git a/src/constants.js b/src/shared/constants.js similarity index 100% rename from src/constants.js rename to src/shared/constants.js diff --git a/src/getComponentOption.js b/src/shared/getComponentOption.js similarity index 100% rename from src/getComponentOption.js rename to src/shared/getComponentOption.js diff --git a/src/getMetaInfo.js b/src/shared/getMetaInfo.js similarity index 100% rename from src/getMetaInfo.js rename to src/shared/getMetaInfo.js diff --git a/src/shared/plugin.js b/src/shared/plugin.js new file mode 100644 index 0000000..a74579f --- /dev/null +++ b/src/shared/plugin.js @@ -0,0 +1,35 @@ +import getMetaInfo from './getMetaInfo' +import $meta from '../server/$meta' +import updateClientMetaInfo from '../client/updateClientMetaInfo' + +// automatic install +if (typeof Vue !== 'undefined') { + Vue.use(VueMeta) +} + +/** + * Plugin install function. + * @param {Function} Vue - the Vue constructor. + */ +export default function VueMeta (Vue) { + // bind the $meta method to this component instance + Vue.prototype.$meta = $meta + + // store an id to keep track of DOM updates + let requestId = null + + // watch for client side component updates + Vue.mixin({ + beforeMount () { + // batch potential DOM updates to prevent extraneous re-rendering + window.cancelAnimationFrame(requestId) + + requestId = window.requestAnimationFrame(() => { + requestId = null + + // update the meta info + updateClientMetaInfo(getMetaInfo(this.$root), this.$root) + }) + } + }) +}