# 如何开发一个兼容微信小程序的外部组件
如果有任何使用上的问题,请联系zhangyan19
# 使用
x-cli miniProgram // 本地预览
x-cli publish online/test/dev // 发布,发布时选择h5和miniProgram
x-cli create <projectName> // 初始化微信小程序模板
如果想要调试从编辑平台创建的小程序,可在本地调试外部组件开启微信开发者工具时,启动参数加上对应项目id(p=xxxx),如同所示:

# 小程序参数
p
项目ID 前8位
env
集团用户中心SDK环境默认生产 登录接口(后端接口调用测试环境的接口时,请设置:env=sandbox)
- production
- sandbox
penv
编辑平台项目发布环境默认正式发布
- production 正式发布(线上编辑平台点击正式发布)
- sandbox 测试发布(线上编辑平台点击测试发布)
- local 本地编辑平台点击正式发布
- test 测试环境编辑平台点击正式发布
- gray 灰度编辑平台点击正式发布
# 按钮功能
如果想用小程序的button各个button功能,添加一个button按钮,设置buttonType
- getPhoneNumber 获取手机号码
- contact 会话
- share 分享
- getUserInfo 获取用户信息
其他相关参数,请使用驼峰式传进来,例如:
<button
className="button contact-button"
buttonType="contact"
sessionFrom={v.sessionFrom}
sendMessageImg={v.sendMessageImg}
sendMessageTitle={v.sendMessageTitle}
showMessageCard={v.showMessageCard}
sendMessagePath={v.sessionFrom}
onClick={this.doTask.bind(this, ctx, v)}
>
{v.operationName}
</button>
# 开发注意:
# 一、条件编译:
当我们遇到了h5和小程序执行不同的代码,则使用
/*IFTRUE_isWebPlatform*/
这里是h5执行的逻辑
/*FITRUE_isWebPlatform*/
/*IFTRUE_isWxPlatform*/
这里是微信执行的逻辑
/*FITRUE_isWxPlatform*/
# 二、dom结构如何书写
正常按照react的jsx语法写就可以,其中有一些不支持的规则下面提前说明一下: **1、不支持嵌套组件的写法,**例如:
let a = (<div>ss</div>)
return (<div>{a}</div>)
目前我们没有办法解析dom之间的上下文关系
2、不支持在map内使用三目运算
<ul className='pancel_content' block='true'>
{
dataMap.map(item => (
item.desc.length < 5 ? (<li>11</li>) : (<li>22</li>)
))
}
</ul>
3、不支持forEach前面定义一个变量存放dom数组,后面dom结构中使用该变量
4、不支持使用伪元素和伪类元素
5、不支持在index.js内嵌套其他react子组件
# 日志数据查看
# 小程序添加的特殊日志字段:
小程序的eventid和h5保持一致:设置的是啥就是啥,没有设置就是项目id 区分小程序和h5的字段: wxmini: "true"
# 性能日志数据查看:
appid: 1001128
所有相关日志全部查看b.gif
日志公共字段:
fromedit: "true"
wxmini: "true"
首屏渲染时间获取: eventid和clickname="wx-onrender" 来获取duration
图片load时间获取:
1、拿到指定图片的路径例如:imgurl = "//activity.xueersi.com/oss/resource/精品课头图-65b95.png"
2、clickname = "img-render-time"
3、eventid
获取对应的duration的时间
← 配置 如何在外部组件中引入 vue 组件 →