Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
MuGuiLin
uni-app
提交
1862086f
U
uni-app
项目概览
MuGuiLin
/
uni-app
与 Fork 源项目一致
Fork自
DCloud / uni-app
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
1862086f
编写于
10月 27, 2021
作者:
fxy060608
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(ssr): support teleport head meta
上级
1fa3c412
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
22 addition
and
3 deletion
+22
-3
packages/uni-h5-vite/lib/ssr/entry-server.js
packages/uni-h5-vite/lib/ssr/entry-server.js
+19
-2
packages/vite-plugin-uni/src/cli/server.ts
packages/vite-plugin-uni/src/cli/server.ts
+3
-1
未找到文件。
packages/uni-h5-vite/lib/ssr/entry-server.js
浏览文件 @
1862086f
...
...
@@ -24,7 +24,7 @@ export async function render(url, manifest = {}) {
// itself on ctx.modules. After the render, ctx.modules would contain all the
// components that have been instantiated during this render call.
const
ctx
=
{}
const
h
tml
=
await
renderToString
(
app
,
ctx
)
const
appH
tml
=
await
renderToString
(
app
,
ctx
)
// the SSR manifest generated by Vite contains module -> chunk/asset mapping
// which we can then use to determine what files need to be preloaded for this
...
...
@@ -40,7 +40,15 @@ export async function render(url, manifest = {}) {
__uniSSR
[
UNI_SSR_STORE
]
=
store
.
state
}
const
appContext
=
renderAppContext
(
ctx
)
return
[
html
,
preloadLinks
,
appContext
,
ctx
[
UNI_SSR_TITLE
]
||
''
]
const
title
=
ctx
[
UNI_SSR_TITLE
]
||
''
const
headMeta
=
renderHeadMeta
(
ctx
)
return
{
title
,
headMeta
,
preloadLinks
,
appHtml
,
appContext
,
}
}
function
renderPreloadLinks
(
modules
,
manifest
)
{
...
...
@@ -74,3 +82,12 @@ function renderPreloadLink(file) {
function
renderAppContext
(
ctx
)
{
return
`<script>window.__uniSSR =
${
JSON
.
stringify
(
ctx
[
UNI_SSR
])}
</script>`
}
function
renderHeadMeta
(
ctx
)
{
if
(
!
ctx
.
__teleportBuffers
||
!
ctx
.
__teleportBuffers
.
__head__
)
{
return
''
}
return
ctx
.
__teleportBuffers
.
__head__
.
map
((
buffer
)
=>
buffer
.
toString
())
.
join
(
'
\n
'
)
}
packages/vite-plugin-uni/src/cli/server.ts
浏览文件 @
1862086f
...
...
@@ -81,7 +81,8 @@ export async function createSSRServer(
)
).
render
const
[
appHtml
,
preloadLinks
,
appContext
,
title
]
=
await
render
(
url
)
const
{
title
,
headMeta
,
preloadLinks
,
appHtml
,
appContext
}
=
await
render
(
url
)
const
icon
=
template
.
includes
(
'
rel="icon"
'
)
?
''
...
...
@@ -89,6 +90,7 @@ export async function createSSRServer(
const
html
=
template
.
replace
(
/<title>
(
.*
?)
<
\/
title>/
,
`
${
icon
}
<title>
${
title
}
</title>`
)
.
replace
(
`<!--head-meta-->`
,
headMeta
)
.
replace
(
`<!--preload-links-->`
,
preloadLinks
)
.
replace
(
`<!--app-html-->`
,
appHtml
)
.
replace
(
`<!--app-context-->`
,
appContext
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录