写在前面
还是自用的RSSHelper,本来想通过小程序跨平台,丢弃ionic的,后来发现上不了线

零.注意事项
如果准备做个想上线的小程序,务必先仔细确认以下几点:

1.内容能否通过类目审核
一级分类是快递邮政、教育、出行、生活服务、餐饮、旅游、工具、商业服务、体育,向下更细,然后发现竟然没有合适的分类…

所以尽早出DEMO提交审核确认内容是否合法,不要吭哧吭哧干了一个月,最后发现无法上线

2.功能及交互能否满足需求
比如取用户信息、定位、音频视频、文件、罗盘蓝牙加速器等等,提到的这些都支持,但支持到什么程度,存在什么限制,都需要通过文档了解,甚至DEMO验证

做到一半发现不支持XXX功能,就麻烦了

比如目前不支持展示H5页面,不能通过小程序直接展示(嵌webview之类的),也不能跳转浏览器打开,对于资讯类App,就是极大的限制

如果想做个自用的小程序,也要考虑上面的问题,因为不上线连自用都不允许(预览有过期限制,半小时吧)

一.限制
1.接口
小程序接口强制要求HTTPS:

设置/服务器域名request合法域名socket合法域名uploadFile合法域名downloadFile合法域名

服务接口白名单只能是HTTPS域名,否则IDE开发环境都发不出去请求。如果接口还是HTTP,只能临时走假数据,本地mock服务也不行,因为有严格域名校验

所以第一件事是确认接口支持HTTPS,如果不支持,尽快把服务搬过去,否则需要假数据模拟各种接口,比较麻烦,而且毕竟与真实请求不同,不利于及早发现问题

P.S.关于免费HTTPS,可以参考nginx HTTPS反向代理

2.bundle大小
源码及资源打包后大小不能超过2M,对于图片资源不多的纯手工项目还好,如果:

图片资源很多

依赖一些第三方lib

项目规模较大(代码量)

一级页首屏图片资源非常多的话,除了压缩没有更好的方法,非一级页首屏图片可以放到服务端去。第三方lib尽量少用,2M限制下,引入第三方lib就必须要仔细考虑了。项目本身非常庞大,比如几十万行代码量的话,gg,这算大程序

P.S.bundle大小超出2M的话,无法提交编译包,提示删除文件重试

3.账号类型及认证
与公众号管理方式一样,区分个人号、企业号、认证与否等等:

卡券接口 要求认证开放平台绑定小程序 要求开发者资质认证

P.S.无论个人公众号还是个人小程序,都无法认证,交钱的机会都不给

相对订阅号与企业号的差别,小程序的限制少了一些,仅卡券API有限制。对于公众号绑定小程序,

另外,个人公众号无法注册小程序(可以关联小程序,提供入口),所以迫不得已又弄了个邮箱

暂不支持个人/媒体/政府/其他组织快速创建小程序,请按照普通流程完成注册。

4.内容审核
分为2部分,类目审核与功能审核

上线难最主要的原因就是类目审核,目前仅支持一部分App类型,限制远比想象的要大,目前似乎集中在信息查询、订单等方面

类目审核没的商量,如果审核结果明确指出暂不开放该类目,只能先放弃

功能审核就是提测,交互不友好、功能不可用、太过简单等等都可能是被拍回来的理由,但能通过改代码解决的问题自然不是问题

5.不支持递归模版
声明并引用模版:

<template name="node">  <text>{{node.text}}</text>  <block wx:for="{{node.children}}">    <template is="node" data="{{item}}"></template>  </block></template><template is="node" data="{{node}}"></template>

希望展示树形数据:

node: {  text: 1,  children: [{    text: 2  }, {    text: 3,    children: [{      text: 4    }]  }]}

结果只展示了1,没有递归向下,无法满足需要展示无限层次结构的场景

为了解决解析渲染HTML的问题,有人想了一个笨办法,复制n个模版,顺序嵌套:

<template name="node-level0">  <text>{{node.text}}</text>  <block wx:for="{{node.children}}">    <template is="node-level1" data="{{item}}"></template>  </block></template>// copy node-level1// copy node-level2// copy node-level3// ...

这样复制多少份,就能支持多少层,缺点是模版文件会巨大无比,维护也是个问题,但目前还没有更好的办法

二.项目Demo
尝试之后采用这样的结构:

common/  cache/        内存缓存、持久缓存  components/   共用组件  pages/        公用页面    detail/    list/  request.js    接口包装config/         常量配置image/pages/          各独立页面  tab1/  tab2/utils/<3rdLib>/       第三方依赖app.js          入口app.json        应用级配置app.wxss        应用级样式

需要注意页面声明问题:

所有独立页面,都必须在app.json的pages里声明路径

pages第一项是首页,后续增减页面都要修改pages配置

tabBar的第一项必须与首页一致,否则tabBar不显示也不报错

配置相关的一些问题,没有任何报错,很难排查

用到了一个HTML支持库(999颗星了,说明HTML展示需求很旺盛),负责解析HTML,转化成小程序原生组件展示

目前不是很完善,解析结果标签数量很大(iOS上没有发现太明显的性能问题,但肯定有优化空间),另外,对于pre, code, span等的支持效果比较差,代码展示效果不好。可以服务把代码转图片,一劳永逸,或者手动完善该库(结构非常简单,很容易扩展)

接口做好HTTPS之后,3天开发完毕,靓照如下:

上不了线的小程序

wx_RSSHelper_1

上不了线的小程序

wx_RSSHelper_2

三.开发体验
优点:

整套开发调试工具很完备(调试体验很好)

CSS支持性非常好(从H5扒下来的样式,基本可以直接用)

ES6开发环境

业务框架容易让人接受(数据绑定等模版语法与vue类似)

缺点:

IDE很难用

文档不全(按下态样式如何实现之类的,完全没有文档)

上线难(奇怪的类目审核,很难找到准确的类目,审核效率一般)

配置化太高不灵活(一些功能只能通过配置项来完成,比如tab条,比较费劲)

更多相关文章

  1. 中年程序员的困惑
  2. 嵌入式:我不是针对谁,我是说在座的Javaer都是弟弟,尤其程序羊
  3. 程序员专业被娃溜...
  4. 导致并发程序出问题的根本原因是什么?
  5. 快速测试 API 接口的新技能
  6. 作为一个Java程序员必须要知道的单元测试框架Junit详解
  7. 「Jenkins」- 使用接口批量创建任务
  8. Android 应用程序构建实战+原理精讲
  9. SpringBoot 在线协同办公小程序开发 全栈式项目实战

随机推荐

  1. Android原生运行uniapp使用5+app创建项目
  2. Android音频介绍
  3. android sdk content loader 一直显示0%
  4. [android] PhoneGap 在 android 下的实现
  5. 一键解决Ubuntu下安装Eclipse Android/C/
  6. android 中的xml解析
  7. android stuio eclipse映射下的快捷键
  8. Android使用FFmpeg(三)--ffmpeg实现视频
  9. Android笔记-3
  10. 安卓第三天---ViewPager控件实现滑动切换