From 1fa3c412981a1d30b4696305ba20663d6374e7b6 Mon Sep 17 00:00:00 2001 From: fxy060608 Date: Wed, 27 Oct 2021 14:39:23 +0800 Subject: [PATCH] wip(ssr): add tranform --- packages/uni-cli-shared/src/index.ts | 2 + packages/uni-cli-shared/src/mp/template.ts | 39 +------------------ .../src/vue/transforms/index.ts | 2 + .../src/vue/transforms/transformComponent.ts | 38 ++++++++++++++++++ .../src/vue/transforms/transformPageHead.ts | 5 +++ packages/uni-h5-vite/src/plugin/index.ts | 2 + .../plugin/transforms/transformPageHead.ts | 7 ++++ 7 files changed, 57 insertions(+), 38 deletions(-) create mode 100644 packages/uni-cli-shared/src/vue/transforms/index.ts create mode 100644 packages/uni-cli-shared/src/vue/transforms/transformComponent.ts create mode 100644 packages/uni-cli-shared/src/vue/transforms/transformPageHead.ts create mode 100644 packages/uni-h5-vite/src/plugin/transforms/transformPageHead.ts diff --git a/packages/uni-cli-shared/src/index.ts b/packages/uni-cli-shared/src/index.ts index d26584a449..09f2654dec 100644 --- a/packages/uni-cli-shared/src/index.ts +++ b/packages/uni-cli-shared/src/index.ts @@ -15,6 +15,8 @@ export * from './preprocess' export * from './postcss' export * from './filter' export * from './esbuild' + +export * from './vue/transforms' export { M } from './messages' export * from './exports' diff --git a/packages/uni-cli-shared/src/mp/template.ts b/packages/uni-cli-shared/src/mp/template.ts index 5d1686f522..f01b9a74f9 100644 --- a/packages/uni-cli-shared/src/mp/template.ts +++ b/packages/uni-cli-shared/src/mp/template.ts @@ -1,16 +1,6 @@ import path from 'path' import { EmittedAsset } from 'rollup' -import { isComponentTag, LINEFEED } from '@dcloudio/uni-shared' -import { - createSimpleExpression, - ElementTypes, - isCoreComponent, - locStub, - NodeTypes, - RootNode, - TemplateChildNode, - TransformContext, -} from '@vue/compiler-core' +import { LINEFEED } from '@dcloudio/uni-shared' import { normalizeMiniProgramFilename } from '../utils' export interface MiniProgramCompilerOptions { @@ -110,30 +100,3 @@ export function addMiniProgramTemplateFilter( templateFiltersCache.set(filename, [filter]) } } - -export function addComponentBindLink( - node: RootNode | TemplateChildNode, - context: TransformContext -) { - if ( - node.type === NodeTypes.ELEMENT && - node.tagType === ElementTypes.COMPONENT - ) { - const { tag } = node - if ( - isComponentTag(tag) || - isCoreComponent(tag) || - context.isBuiltInComponent(tag) - ) { - return - } - node.props.push({ - type: NodeTypes.DIRECTIVE, - name: 'on', - modifiers: [], - loc: locStub, - arg: createSimpleExpression('__l', true), - exp: createSimpleExpression('__l', true), - }) - } -} diff --git a/packages/uni-cli-shared/src/vue/transforms/index.ts b/packages/uni-cli-shared/src/vue/transforms/index.ts new file mode 100644 index 0000000000..27ab8ef2a7 --- /dev/null +++ b/packages/uni-cli-shared/src/vue/transforms/index.ts @@ -0,0 +1,2 @@ +export * from './transformComponent' +export * from './transformPageHead' diff --git a/packages/uni-cli-shared/src/vue/transforms/transformComponent.ts b/packages/uni-cli-shared/src/vue/transforms/transformComponent.ts new file mode 100644 index 0000000000..65cb7c110f --- /dev/null +++ b/packages/uni-cli-shared/src/vue/transforms/transformComponent.ts @@ -0,0 +1,38 @@ +import { isComponentTag } from '@dcloudio/uni-shared' +import { + createSimpleExpression, + ElementTypes, + isCoreComponent, + locStub, + NodeTypes, + RootNode, + TemplateChildNode, + TransformContext, +} from '@vue/compiler-core' + +export function addComponentBindLink( + node: RootNode | TemplateChildNode, + context: TransformContext +) { + if ( + node.type === NodeTypes.ELEMENT && + node.tagType === ElementTypes.COMPONENT + ) { + const { tag } = node + if ( + isComponentTag(tag) || + isCoreComponent(tag) || + context.isBuiltInComponent(tag) + ) { + return + } + node.props.push({ + type: NodeTypes.DIRECTIVE, + name: 'on', + modifiers: [], + loc: locStub, + arg: createSimpleExpression('__l', true), + exp: createSimpleExpression('__l', true), + }) + } +} diff --git a/packages/uni-cli-shared/src/vue/transforms/transformPageHead.ts b/packages/uni-cli-shared/src/vue/transforms/transformPageHead.ts new file mode 100644 index 0000000000..f18a4c1917 --- /dev/null +++ b/packages/uni-cli-shared/src/vue/transforms/transformPageHead.ts @@ -0,0 +1,5 @@ +import { NodeTransform } from '@vue/compiler-core' + +export const transformPageHead: NodeTransform = (_node, _context) => { + // 发现是page-meta下的page-head,直接remove该节点 +} diff --git a/packages/uni-h5-vite/src/plugin/index.ts b/packages/uni-h5-vite/src/plugin/index.ts index 0448e836f7..4577d6f124 100644 --- a/packages/uni-h5-vite/src/plugin/index.ts +++ b/packages/uni-h5-vite/src/plugin/index.ts @@ -13,6 +13,7 @@ import { isSsr } from '../utils' import { esbuildPrePlugin } from './esbuild/esbuildPrePlugin' import { external } from './configureServer/ssr' import { createConfigureServer } from './configureServer' +import { transformPageHead } from './transforms/transformPageHead' export const UniH5Plugin: UniVitePlugin = { name: 'vite:uni-h5', @@ -26,6 +27,7 @@ export const UniH5Plugin: UniVitePlugin = { compilerOptions: { isNativeTag: isH5NativeTag, isCustomElement: isH5CustomElement, + nodeTransforms: [transformPageHead], }, }, config(config, env) { diff --git a/packages/uni-h5-vite/src/plugin/transforms/transformPageHead.ts b/packages/uni-h5-vite/src/plugin/transforms/transformPageHead.ts new file mode 100644 index 0000000000..f0769c4677 --- /dev/null +++ b/packages/uni-h5-vite/src/plugin/transforms/transformPageHead.ts @@ -0,0 +1,7 @@ +import { NodeTransform } from '@vue/compiler-core' + +export const transformPageHead: NodeTransform = (node, context) => { + if (!context.ssr) { + return + } +} -- GitLab