From fe1c7fc60d69c22b019a25c14462b3faa81583f6 Mon Sep 17 00:00:00 2001
From: JiM-W <550116990@qq.com>
Date: Thu, 21 Feb 2019 17:14:20 +0800
Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=94=AF=E4=BB=98=E5=AE=9D,?=
=?UTF-8?q?=E7=99=BE=E5=BA=A6=20component=20is=20=E7=9A=84=E5=8A=9F?=
=?UTF-8?q?=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/parser/parse-vue2wx.js | 16 ++++++---
.../chameleon-template-parse/test/index.js | 36 +++++--------------
2 files changed, 19 insertions(+), 33 deletions(-)
diff --git a/packages/chameleon-template-parse/src/parser/parse-vue2wx.js b/packages/chameleon-template-parse/src/parser/parse-vue2wx.js
index 824b9a8f..36b8ec6a 100644
--- a/packages/chameleon-template-parse/src/parser/parse-vue2wx.js
+++ b/packages/chameleon-template-parse/src/parser/parse-vue2wx.js
@@ -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 shrinkComponents = attributes.shrinkComponents;
- if (shrinkComponents) {
- usingComponents = shrinkComponents.split(',').reduce((result, comp) => {
+ let shrinkcomponents = attributes.shrinkcomponents;
+ if (shrinkcomponents) {
+ usingComponents = shrinkcomponents.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);
diff --git a/packages/chameleon-template-parse/test/index.js b/packages/chameleon-template-parse/test/index.js
index 224ca226..7ba2ea0c 100644
--- a/packages/chameleon-template-parse/test/index.js
+++ b/packages/chameleon-template-parse/test/index.js
@@ -1,33 +1,13 @@
const compileTemplate = require('../src/index.js');
-const source = `
- cpxtest
-cpx
-change-component-vue
-change-component
-
-
-
-
- {{5 > 6?'5>6' : '5 < 6'}}
- c-if
- c-else-if
- c-else
-
-
- computedStyle
- v-model的使用
-
- {{modelValueTest}}
-
-
- 组件使其改变{{modelValueTest2}}
-
-`
+const source = `
+static style
+
+ccc`
// fafafa
// fafafa
//
// 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)
--
GitLab