提交 f3901790 编写于 作者: 雪洛's avatar 雪洛

feat: page-meta-head

上级 3ab5bf88
......@@ -2,8 +2,8 @@ import { NodeTransform } from '@vue/compiler-core'
import { checkElementNodeTag } from '../../utils'
export const transformPageHead: NodeTransform = (node, context) => {
// 发现是page-meta下的page-meta-head,直接remove该节点
checkElementNodeTag(node, 'page-meta-head') &&
// 发现是page-meta下的head,直接remove该节点
checkElementNodeTag(node, 'head') &&
checkElementNodeTag(context.parent, 'page-meta') &&
context.removeNode(node)
}
<template>
<teleport to="__head__">
<teleport to="head">
<slot />
</teleport>
</template>
......
......@@ -84,10 +84,10 @@ function renderAppContext(ctx) {
}
function renderHeadMeta(ctx) {
if (!ctx.__teleportBuffers || !ctx.__teleportBuffers.__head__) {
if (!ctx.__teleportBuffers || !ctx.__teleportBuffers.head) {
return ''
}
return ctx.__teleportBuffers.__head__
return ctx.__teleportBuffers.head
.map((buffer) => buffer.toString())
.join('\n')
}
......@@ -10,6 +10,7 @@ import {
} from '@dcloudio/uni-cli-shared'
import { createHandleHotUpdate } from './handleHotUpdate'
import { createTransformIndexHtml } from './transformIndexHtml'
import { transformPageHead } from './transforms/transformPageHead'
import { createDefine } from '../utils/features'
import { isSsr } from '../utils'
import { esbuildPrePlugin } from './esbuild/esbuildPrePlugin'
......@@ -25,7 +26,11 @@ export const UniH5Plugin: UniVitePlugin = {
compilerOptions: {
isNativeTag: isH5NativeTag,
isCustomElement: isH5CustomElement,
nodeTransforms: [transformTapToClick, transformMatchMedia],
nodeTransforms: [
transformTapToClick,
transformMatchMedia,
transformPageHead,
],
},
},
config(config, env) {
......
import { NodeTransform, ElementNode, ElementTypes } from '@vue/compiler-core'
import { checkElementNodeTag } from '@dcloudio/uni-cli-shared'
export const transformPageHead: NodeTransform = (node, context) => {
// 发现是page-meta下的head,替换为page-meta-head
checkElementNodeTag(node, 'head') &&
checkElementNodeTag(context.parent, 'page-meta') &&
(((node as ElementNode).tag = 'page-meta-head'),
((node as ElementNode).tagType = ElementTypes.COMPONENT))
}
......@@ -76,7 +76,11 @@ export function isH5CustomElement(tag: string) {
}
export function isH5NativeTag(tag: string) {
return (isHTMLTag(tag) || isSVGTag(tag)) && !isBuiltInComponent(tag)
return (
tag !== 'head' &&
(isHTMLTag(tag) || isSVGTag(tag)) &&
!isBuiltInComponent(tag)
)
}
export function isNativeTag(tag: string) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册