前端小程序介绍

555 阅读3分钟

360前端星计划day5

简介

小程序解决了什么问题

  • 技术方面
    • h5开发速度快,但是白屏时间长,系统接口访问有局限
    • app体验有优势,但是开发成本高,ios和android差异化
    • 小程序在两者之间找到均衡点,除了第一次其他页面都从本地加载,有效降低开发成本,各个平台可以使用统一技术栈
  • 非技术方面
    • 审核保证质量
    • 头部app保证流量,运营工具丰富

相关技术栈

  • HTML/CSS/JavaScript
  • NodeJS
  • 移动适配
  • HTTP协议/HTTPS
  • OAuth2等认证方案
  • GIT

主要的小程序平台

  • 微信小程序
  • 支付宝小程序
  • 百度小程序
  • 字节跳动小程序
  • 京东小程序
  • 快应用
  • 钉钉小程序
  • 360小程序

类似小程序的技术

  • Cordova:通过webview渲染,通过插件调用系统服务
  • PWA:service worker和push api
  • React Native/weex
  • Flutter:Dart直接与独立系统的UI库进行交互

小程序技术架构

文件结构及含义

  • JSON
    • app.json:配置文件,页面路径、网络超时、底部tab等
      • pages:描述路径,知道当前小程序定义在哪个目录
      • window:所有页面的顶部、背景颜色、文字颜色等
    • project.config.json:开发者工具的样式和行为
    • 每个page下的json:页面个性化,覆盖app.json中的window
    • sitemap.json:指导搜索引擎
  • WXML:本质是HTML,有特定标签,接管一些简单的逻辑判断(wx:if),JS不直接操作DOM,只负责set数据
  • WXSS:定义样式,提供rpx单位(屏幕宽度和750的比值,类似vw),精简的CSS,提供了全局或者局部的CSS,允许局部覆盖全局
  • JS:负责逻辑交互,APPPageComponent三个构造函数,可调用系统API

双线程模型

运行环境:分为渲染层和逻辑层

  • 渲染层:Webview线程,每个页面一个webview,负责WXMLWXSS
  • 逻辑层:JsCore线程
  • 没有dombom,规避了安全和性能问题
  • 数据传递通过线程,通信都是异步的,对传统web库需要定制。同步界面双线程发消息实现,效率有一定折损,不提倡过多setData,比如定时等

生命周期

组件

  • 官方组件:容器,基础内容,表单组件,导航,地图,画布
  • 原生组件
  • 自定义组件:Component构造器,引入usingComponentpropertiesdataobserversbehaviorslifetimespageLifetimes

其他

  • 插件机制,规范第三方扩展的引用
  • 元端函数,开发者使用accesstoken获取权限
  • 小游戏,独立于小程序,没有双线程形式

开发发布流程

  • 注册:注册AppID,没有绑定过小程序的邮箱
  • 微信自带git版本管理
  • 不同的调试方式
  • 上传,在管理页面发布体验版本和正式版本

小程序的发展

多端同构框架

  • 意义:一次编写适配多端,一次迭代各端同步
  • 利用Web的优点,以及对各个平台进行动态适配
  • uni-app:兼容vue
  • Taro:兼容React
  • KBone:基于vue,也有基于react的版本,抹平web和小程序的差异

KBone

通过不同入口进入不同端(Web或小程序),使用相同页面;webpack分为两类,对应两端

自动化

微信官方提供自动化框架,可以完成以下功能的自动化:

  • 控制小程序跳转到指定页面
  • 获取小程序页面数据
  • 获取小程序页面元素状态
  • 触发小程序元素绑定事件
  • 往AppService注入代码片段
  • 调用wx对象上任意接口

硬件框架

WMPF架构,能让硬件在脱离微信的情况下运行小程序,设备上搭建微信虚拟环境,通过服务器与客户端的调用对小程序发出指令

云IDE

支付宝小程序云端的IDE,使开发者代码在任何设备上开发

W3C小程序工作组

W3C小程序和快应用草案:URI Schema,Widget,Manifest,Lifecycle,Packaging等方面