Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DiDi
Chameleon
提交
fe1c7fc6
C
Chameleon
项目概览
DiDi
/
Chameleon
通知
13
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
Chameleon
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
fe1c7fc6
编写于
2月 21, 2019
作者:
J
JiM-W
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
增加支付宝,百度 component is 的功能
上级
226a420c
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
19 addition
and
33 deletion
+19
-33
packages/chameleon-template-parse/src/parser/parse-vue2wx.js
packages/chameleon-template-parse/src/parser/parse-vue2wx.js
+11
-5
packages/chameleon-template-parse/test/index.js
packages/chameleon-template-parse/test/index.js
+8
-28
未找到文件。
packages/chameleon-template-parse/src/parser/parse-vue2wx.js
浏览文件 @
fe1c7fc6
...
...
@@ -84,15 +84,21 @@ parseVue2Wx.tap('vue2wx-v-for', (args) => {
parseVue2Wx
.
tap
(
'
component-is
'
,
(
args
)
=>
{
let
{
path
,
node
,
type
,
options
}
=
args
;
let
lang
=
options
.
lang
;
let
conditionMap
=
{
wx
:
'
wx:if
'
,
alipay
:
'
a:if
'
,
baidu
:
'
s-if
'
}
let
usingComponents
=
(
options
.
usingComponents
||
[]).
map
(
item
=>
item
.
tagName
)
if
(
type
===
'
wx
'
&&
t
.
isJSXElement
(
node
))
{
if
(
(
type
===
'
wx
'
||
type
===
'
alipay
'
||
type
===
'
baidu
'
)
&&
t
.
isJSXElement
(
node
))
{
let
currentTag
=
node
.
openingElement
.
name
.
name
;
let
jsxElementChildren
=
node
.
children
||
[];
if
(
currentTag
===
'
component
'
)
{
let
attributes
=
utils
.
getJSXElementAttrKeyValue
(
path
);
let
shrink
Components
=
attributes
.
shrinkC
omponents
;
if
(
shrink
C
omponents
)
{
usingComponents
=
shrink
C
omponents
.
split
(
'
,
'
).
reduce
((
result
,
comp
)
=>
{
let
shrink
components
=
attributes
.
shrinkc
omponents
;
if
(
shrink
c
omponents
)
{
usingComponents
=
shrink
c
omponents
.
split
(
'
,
'
).
reduce
((
result
,
comp
)
=>
{
comp
=
utils
.
trim
(
comp
);
if
(
comp
)
{
result
.
push
(
comp
);
...
...
@@ -114,7 +120,7 @@ parseVue2Wx.tap('component-is', (args) => {
if
(
currentComp
&&
usingComponents
)
{
let
elementAttributes
=
path
.
node
.
openingElement
.
attributes
||
[]
usingComponents
.
forEach
((
comp
)
=>
{
let
openTag
=
t
.
jsxOpeningElement
(
t
.
jsxIdentifier
(
comp
),
[
t
.
jsxAttribute
(
t
.
jsxIdentifier
(
'
wx:if
'
),
t
.
stringLiteral
(
`{{
${
currentComp
}
=== '
${
comp
}
'}}`
))].
concat
(
elementAttributes
));
let
openTag
=
t
.
jsxOpeningElement
(
t
.
jsxIdentifier
(
comp
),
[
t
.
jsxAttribute
(
t
.
jsxIdentifier
(
`
${
conditionMap
[
type
]}
`
),
t
.
stringLiteral
(
`{{
${
currentComp
}
=== '
${
comp
}
'}}`
))].
concat
(
elementAttributes
));
let
closeTag
=
t
.
jsxClosingElement
(
t
.
jsxIdentifier
(
comp
))
let
insertNode
=
t
.
jsxElement
(
openTag
,
closeTag
,
jsxElementChildren
,
false
);
...
...
packages/chameleon-template-parse/test/index.js
浏览文件 @
fe1c7fc6
const
compileTemplate
=
require
(
'
../src/index.js
'
);
const
source
=
`<scroller :height="-1">
<view> <text>cpxtest</text> </view>
<view :style="'width:'+cpx+'cpx;'+'height:'+cpx2+'cpx;background-color:red'">cpx</view>
<view @click="handleClick">change-component-vue</view>
<view @click="handleClick(1,2,3)">change-component</view>
<component :is="currentComp" :image-src="chameleonSrc" title="this is title"></component>
<show v-show="show"></show>
<view v-text="message"></view>
<view :class="5 > 6 ? 'cls1':'cls2'" :style="5 < 6 ? 'width:300cpx':'height:300cpx'">
{{5 > 6?'5>6' : '5 < 6'}}</view>
<view v-if="false">c-if</view>
<view v-else-if="true">c-else-if</view>
<view v-else>c-else</view>
<demo-com :image-src="chameleonSrc" title="标题"></demo-com>
<view :style="computedStyle">computedStyle</view>
<view><text>v-model的使用</text></view>
<input type="text" v-model=" modelValueTest "/>
<text>{{modelValueTest}}</text>
<comp v-model=" modelValueTest2 " ></comp>
<view><text>组件使其改变{{modelValueTest2}}</text></view>
</scroller>`
const
source
=
`<view>
<view style="width:200cpx;height:100cpx;backgrounnd-color:green">static style</view>
<view style="{{'width:'+cpx+'cpx;'+'height:'+cpx2+'cpx;background-color:red'}}"></view>
<view style="width:{{cpx}}cpx;{{'height:'+cpx2+'cpx'}};background-color:green">ccc</view></view>`
// <view><text :class="{{true? 'bg-green':''}}" >fafafa</text></view>
// <view><text :class="true? 'bg-green':''" >fafafa</text></view>
//
// let result = compileTemplate(source,'web');
let
options
=
{
lang
:
'
vue
'
,
let
options
=
{
lang
:
'
cml
'
,
filePath
:
'
/Users/didi/components.cml
'
,
buildInComponents
:
{
button
:
"
cml-buildin-button
"
},
cmss
:
{
...
...
@@ -56,12 +36,12 @@ let options = {lang: 'vue',
}]
};
console
.
log
(
'
before-compile
'
,
source
);
//
let result_web = compileTemplate(source, 'web', options);
let
result_web
=
compileTemplate
(
source
,
'
web
'
,
options
);
let
result_wx
=
compileTemplate
(
source
,
'
wx
'
,
options
);
// let result_baidu = compileTemplate(source, 'wx', options);
// let result_alipay = compileTemplate(source, 'alipay', options);
// let result_alipay = compileTemplate(source,'alipay',{lang:'cml'});
//
console.log('result_web', result_web)
//
console.log('result_wx', result_wx)
console
.
log
(
'
result_web
'
,
result_web
)
console
.
log
(
'
result_wx
'
,
result_wx
)
// console.log('result_alipay', result_alipay)
// console.log('result_baidu', result_baidu)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录