Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
uni-app
提交
687a1e74
U
uni-app
项目概览
DCloud
/
uni-app
3 个月 前同步成功
通知
725
Star
38705
Fork
3642
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
7
列表
看板
标记
里程碑
合并请求
1
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
7
Issue
7
列表
看板
标记
里程碑
合并请求
1
合并请求
1
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
687a1e74
编写于
12月 17, 2021
作者:
fxy060608
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(mp): transform html tags (#3085)
上级
cb8b95c3
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
159 addition
and
1 deletion
+159
-1
packages/uni-cli-shared/src/mp/index.ts
packages/uni-cli-shared/src/mp/index.ts
+1
-0
packages/uni-cli-shared/src/mp/tags.ts
packages/uni-cli-shared/src/mp/tags.ts
+122
-0
packages/uni-mp-compiler/__tests__/tag.spec.ts
packages/uni-mp-compiler/__tests__/tag.spec.ts
+16
-0
packages/uni-mp-compiler/__tests__/transformElement.spec.ts
packages/uni-mp-compiler/__tests__/transformElement.spec.ts
+1
-1
packages/uni-mp-compiler/src/compile.ts
packages/uni-mp-compiler/src/compile.ts
+2
-0
packages/uni-mp-compiler/src/transforms/transformTag.ts
packages/uni-mp-compiler/src/transforms/transformTag.ts
+17
-0
未找到文件。
packages/uni-cli-shared/src/mp/index.ts
浏览文件 @
687a1e74
...
@@ -3,5 +3,6 @@ export * from './event'
...
@@ -3,5 +3,6 @@ export * from './event'
export
*
from
'
./style
'
export
*
from
'
./style
'
export
*
from
'
./template
'
export
*
from
'
./template
'
export
*
from
'
./constants
'
export
*
from
'
./constants
'
export
{
HTML_TO_MINI_PROGRAM_TAGS
}
from
'
./tags
'
export
{
copyMiniProgramPluginJson
}
from
'
./plugin
'
export
{
copyMiniProgramPluginJson
}
from
'
./plugin
'
export
{
transformVueComponentImports
}
from
'
./transformImports
'
export
{
transformVueComponentImports
}
from
'
./transformImports
'
packages/uni-cli-shared/src/mp/tags.ts
0 → 100644
浏览文件 @
687a1e74
export
const
HTML_TO_MINI_PROGRAM_TAGS
:
Record
<
string
,
string
>
=
{
br
:
'
view
'
,
hr
:
'
view
'
,
p
:
'
view
'
,
h1
:
'
view
'
,
h2
:
'
view
'
,
h3
:
'
view
'
,
h4
:
'
view
'
,
h5
:
'
view
'
,
h6
:
'
view
'
,
abbr
:
'
view
'
,
address
:
'
view
'
,
b
:
'
view
'
,
bdi
:
'
view
'
,
bdo
:
'
view
'
,
blockquote
:
'
view
'
,
cite
:
'
view
'
,
code
:
'
view
'
,
del
:
'
view
'
,
ins
:
'
view
'
,
dfn
:
'
view
'
,
em
:
'
view
'
,
strong
:
'
view
'
,
samp
:
'
view
'
,
kbd
:
'
view
'
,
var
:
'
view
'
,
i
:
'
view
'
,
mark
:
'
view
'
,
pre
:
'
view
'
,
q
:
'
view
'
,
ruby
:
'
view
'
,
rp
:
'
view
'
,
rt
:
'
view
'
,
s
:
'
view
'
,
small
:
'
view
'
,
sub
:
'
view
'
,
sup
:
'
view
'
,
time
:
'
view
'
,
u
:
'
view
'
,
wbr
:
'
view
'
,
// 表单元素
// form: 'form',
// input: 'input',
// textarea: 'textarea',
// button: 'button',
select
:
'
picker
'
,
option
:
'
view
'
,
optgroup
:
'
view
'
,
// label: 'label',
fieldset
:
'
view
'
,
datalist
:
'
picker
'
,
legend
:
'
view
'
,
output
:
'
view
'
,
// 框架
iframe
:
'
view
'
,
// 图像
img
:
'
image
'
,
// canvas: 'canvas',
figure
:
'
view
'
,
figcaption
:
'
view
'
,
// 音视频
// audio: 'audio',
source
:
'
audio
'
,
// video: 'video',
track
:
'
video
'
,
// 链接
a
:
'
navigator
'
,
nav
:
'
view
'
,
link
:
'
navigator
'
,
// 列表
ul
:
'
view
'
,
ol
:
'
view
'
,
li
:
'
view
'
,
dl
:
'
view
'
,
dt
:
'
view
'
,
dd
:
'
view
'
,
menu
:
'
view
'
,
command
:
'
view
'
,
// 表格table
table
:
'
view
'
,
caption
:
'
view
'
,
th
:
'
view
'
,
td
:
'
view
'
,
tr
:
'
view
'
,
thead
:
'
view
'
,
tbody
:
'
view
'
,
tfoot
:
'
view
'
,
col
:
'
view
'
,
colgroup
:
'
view
'
,
// 样式 节
div
:
'
view
'
,
main
:
'
view
'
,
span
:
'
label
'
,
header
:
'
view
'
,
footer
:
'
view
'
,
section
:
'
view
'
,
article
:
'
view
'
,
aside
:
'
view
'
,
details
:
'
view
'
,
dialog
:
'
view
'
,
summary
:
'
view
'
,
// progress: 'progress',
meter
:
'
progress
'
,
// todo
head
:
'
view
'
,
// todo
meta
:
'
view
'
,
// todo
base
:
'
text
'
,
// todo
// 'map': 'image', // TODO不是很恰当
area
:
'
navigator
'
,
// j结合map使用
script
:
'
view
'
,
noscript
:
'
view
'
,
embed
:
'
view
'
,
object
:
'
view
'
,
param
:
'
view
'
,
}
packages/uni-mp-compiler/__tests__/tag.spec.ts
0 → 100644
浏览文件 @
687a1e74
import
{
HTML_TO_MINI_PROGRAM_TAGS
}
from
'
@dcloudio/uni-cli-shared
'
import
{
assert
}
from
'
./testUtils
'
describe
(
'
compiler: transform tag
'
,
()
=>
{
test
(
'
html
'
,
()
=>
{
Object
.
keys
(
HTML_TO_MINI_PROGRAM_TAGS
).
forEach
((
htmlTag
)
=>
{
assert
(
`<
${
htmlTag
}
/>`
,
`<
${
HTML_TO_MINI_PROGRAM_TAGS
[
htmlTag
]}
/>`
,
`(_ctx, _cache) => {
return {}
}`
)
})
})
})
packages/uni-mp-compiler/__tests__/transformElement.spec.ts
浏览文件 @
687a1e74
...
@@ -262,7 +262,7 @@ export function render(_ctx, _cache) {
...
@@ -262,7 +262,7 @@ export function render(_ctx, _cache) {
test
(
'
v-is
'
,
()
=>
{
test
(
'
v-is
'
,
()
=>
{
const
onError
=
jest
.
fn
()
const
onError
=
jest
.
fn
()
parseWithElementTransform
(
`<
div
v-is="'foo'" />`
,
{
parseWithElementTransform
(
`<
view
v-is="'foo'" />`
,
{
onError
,
onError
,
})
})
expect
(
onError
).
toHaveBeenCalledTimes
(
1
)
expect
(
onError
).
toHaveBeenCalledTimes
(
1
)
...
...
packages/uni-mp-compiler/src/compile.ts
浏览文件 @
687a1e74
...
@@ -16,6 +16,7 @@ import { transformBind } from './transforms/vBind'
...
@@ -16,6 +16,7 @@ import { transformBind } from './transforms/vBind'
import
{
transformComponent
}
from
'
./transforms/transformComponent
'
import
{
transformComponent
}
from
'
./transforms/transformComponent
'
import
{
transformSlot
}
from
'
./transforms/vSlot
'
import
{
transformSlot
}
from
'
./transforms/vSlot
'
import
{
transformRoot
}
from
'
./transforms/transformRoot
'
import
{
transformRoot
}
from
'
./transforms/transformRoot
'
import
{
transformTag
}
from
'
./transforms/transformTag
'
export
type
TransformPreset
=
[
export
type
TransformPreset
=
[
NodeTransform
[],
NodeTransform
[],
...
@@ -32,6 +33,7 @@ export function getBaseTransformPreset({
...
@@ -32,6 +33,7 @@ export function getBaseTransformPreset({
// order is important
// order is important
const
nodeTransforms
=
[
const
nodeTransforms
=
[
transformRoot
,
transformRoot
,
transformTag
,
transformIf
,
transformIf
,
transformFor
,
transformFor
,
transformSlot
,
transformSlot
,
...
...
packages/uni-mp-compiler/src/transforms/transformTag.ts
0 → 100644
浏览文件 @
687a1e74
import
{
HTML_TO_MINI_PROGRAM_TAGS
,
isElementNode
,
}
from
'
@dcloudio/uni-cli-shared
'
import
{
ElementTypes
}
from
'
@vue/compiler-core
'
import
{
NodeTransform
}
from
'
../transform
'
export
const
transformTag
:
NodeTransform
=
(
node
,
context
)
=>
{
if
(
!
isElementNode
(
node
))
{
return
}
const
newTag
=
HTML_TO_MINI_PROGRAM_TAGS
[
node
.
tag
]
if
(
newTag
)
{
node
.
tag
=
newTag
node
.
tagType
=
ElementTypes
.
ELEMENT
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录