解析各平台小程序与⼩程序开发框架对比

本文涉及的产品
云解析DNS,个人版 1个月
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: 各平台小程序与⼩程序开发框架对比

微信⼩程序 vs ⽀付宝⼩程序 vs 百度⼩程序

各家⼩程序之间有很多相似的地⽅,例如相似的开发环境,相似的运⾏时渲染内容。

文档索引

微信⽂档:https://developers.weixin.qq.com/miniprogram/dev/api/

百度⽂档:https://smartprogram.baidu.com/docs/develop/api/apilist/

⽀付宝⽂档:https://opendocs.alipay.com/mini/api

相似内容:

  • 均有原⽣组件和 webview 中渲染的组件
  • ⼤部分配置和项⽬结构(app.json/app.js)都相同, 甚⾄之前出现了⽀付宝⼩程序⽂档直接拷⻉微信⼩程序⽂档的情况。
  • 他们都⽀持第三⽅平台,来对⽤户授权的⼩程序进⾏操作。

不同之处:

  • 部分 API 内容互不相同(wx/swan/my)
  • 不同平台侧重的能⼒不同,⽀付宝侧重商家,百度⼩程序更侧重流量相关获取,微信⼩程序更侧重基础能⼒。
  • 只有微信⼩程序⽀持个⼈申请使⽤,百度/⽀付宝仅⽀持企业使⽤。
  • 百度的 API ⽂档中,出现了很多 AI 相关的⼩程序 API 来调⽤。

image.png

⼩程序之间的差异具体体现在 api 的差异当中,⽬前各家的⼩程序在运⾏时的差异已经⾮常⼩了,底层功能都已经⾮常稳定。书写⼩程序代码的过程中只需要注意对应 API 的使⽤即可。

wepy 、 mpVue 、 remax 、 taro

他们本质都是让⼩程序开发更加友好,或是在⼩程序同构中展示对应的能⼒。

wepy

wepy[]() []()是⼀个专注于⼩程序开发的开发框架,通过它我们能更好的组织我们的⼩程序代码。


特点:

类 Vue 开发⻛格

  • ⽀持⾃定义组件开发
  • ⽀持引⼊ NPM 包
  • ⽀持 Promise
  • ⽀持 ES2015+ 特性,如 async Functions
  • ⽀持多种编译器,Less/Sass/Stylus/PostCSS、Babel/Typescript、Pug
  • ⽀持多种插件处理,⽂件压缩,图⽚压缩,内容替换等
  • ⽀持 Sourcemap,ESLint 等
  • 对⼩程序细节优化,如请求列队,事件优化等
<style lang="less"> @color: #4D926F;
.num {
  color: @color;
}
</style>
<template>
  <div class="container">
    <div class="num" @tap="num++">
      {{num}}
    </div>
    <div>{{text}}</div>
    <input v-model="text"></input>
  </div>
</template>
<config>
{
  usingComponents: { customCompoent:'@/components/customComponent'},
  vendorComponent: 'module:vendorComponent'
}
</config>

总结:

  • 使⽤内部的约束来开发⼩程序,最终静态编译为⼩程序⽬录结构
  • vue ⻛格,只⽀持微信⼩程序,后期如果想换框架则迁移困难
  • v2之后的版本较v1的开发体验有明显提升

源码:

通过 bin/wepy-build.js 执⾏编译,通过⽂件名称判断不同的编译⽅式,不同编译⽅式注册的回调函数core/plugins/parser/ 注册。

mpvue

mpvue 是⼀个通过 vue 进⾏开发,同时⽀持多端的框架。⽬前⽀持 微信、百度、头条和⽀付宝⼩程序。
它与 wepy 虽然同是 vue 进⾏开发,但是之间还是有些区别的,主要体现在它在运⾏时还依赖了部分vue.runtime.js 的代码。


特点

  • 保留了 vue.runtime 核⼼⽅法,⽆缝继承了的基础能⼒
  • 提供了将 vue 的模板语法转换到⼩程序的 wxml 语法的能⼒
  • 修改了 vue 的建构配置,使之构建出符合⼩程序项⽬结构的代码格式: json/wxml/wxss/js ⽂件

源码

mpvue 的源码中,vue 的作者也写了很多,主要也因为这个项⽬也⽤到了很多 vue 运⾏时的东⻄,所以不同于wepy 的编译型, mpvue 除了基本的静态编译,运⾏时还是加⼊了⼀些 vue.runtime.js 中的元素的,在项⽬迁移时会稍稍容易些。

例如在 platforms/mp/compiler/wx 中,加⼊了编译和解析微信⼩程序部分的⽅法。

在旁边的 runtime 中,实现了⼀系列的 diff/events/⽣命周期等等功能。

总结

注意:目前mpvue由于遗留问题太多,并且长期处于不维护状态,已不太推荐使用,开源社区基本已经放弃了该框架。

remax

remax 是由阿⾥推出的⼀款⼩程序制作框架,能同时运⾏在微信⼩程序/⽀付宝⼩程序/字节跳动⼩程序当中。


特性:

  • 使⽤ react 的⻛格和⽅式来进⾏⼩程序的开发使⽤
  • Remax 把代码转换到多个⼩程序平台。
  • 完整的 TypeScript ⽀持。
export default class IndexPage extends React.Component {
  // ⻚⾯组件的 didMount 触发时机是在 onLoad 的时候
  componentDidMount() {
    console.log('IndexPage load')
  }

  onShow() {
    console.log('IndexPage show')
  }

  render() {
    return <View>Hello world!</View>
  }
}

源码

相⽐于其他框架,remax 使⽤静态编译的部分就⽐较少,他主要应对的就是运⾏时的⼯作。

假如使⽤其他静态编译类型的框架,对于以下情况就会有⼼⽆⼒:

render() {
    const child = <View>Hello remax!</View>;
    return <View>Hello world! {child} </View>;
}

render() {
    return <View>Hello world! <View>Hello remax!</View> </View>;
}

因为这⾥的内部 child 是通过 js 来控制的,静态编译⼤部分情况下不会分析到具体组件和 UI 与变量之间的联系,⼤部分框架只是使⽤⼀个简单的 xml 库来结构分析,所以这种变量在运⾏时决定 UI 就⽆法实现。

remax 不会有这样的问题,他在运⾏时实现了⼀套类似react-dom ,唯⼀有区别的是把 react-dom ⾥⾯与document,window 有关的内容都替换成了⼩程序⾥已有的内容,这样实现了⼀套 react-reconciler。

import ReactReconciler from 'react-reconciler'
let reconciler = ReactReconciler({
  createInstance(type) {
    return document.createElement(type)
    // 替换为⼩程序内部⽅法即可实现实例的创建
  },
  appendChild(parent, child) {
    parent.appendChild(child)
  },
  removeChild(parent, child) {
    parent.removeChild(child)
  },
  insertBefore(parent, child, before) {
    parent.insertBefore(child, before)
  },
})

taro

taro可谓是大名鼎鼎的小程序开发框架,⽬前⽀持微信/百度/⽀付宝/百度⼩程序和 h5,⽬前⽀持的平台最多,也在持续维护的⼀个框架平台。它也是⼀套遵循 React语法规范的 多端开发解决⽅案。通过 Taro 的编译⼯具,将源代码分别编译出可以在不同端(微信/百度/⽀付宝/字节跳动/QQ/京东⼩程序、快应⽤、H5、React-Native 等)运⾏的代码。


特性

  • ⽀持使⽤ npm/yarn 安装管理第三⽅依赖
  • ⽀持使⽤ ES7/ES8 甚⾄更新的 ES []()规范,⼀切都可⾃⾏配置
  • ⽀持使⽤ CSS 预编译器,例如 Sass 等
  • ⽀持使⽤ Redux 进⾏状态管理
  • ⽀持使⽤ MobX 进⾏状态管理
  • ⼩程序 API 优化,异步 API Promise 化等等

源码

它是⼀个静态编译的框架,所以也就是说我们最终的代码都是已经编译为能直接在平台中运⾏的了,所以主要的⼯作对于 taro 来说是在编译阶段进⾏。

对于微信⼩程序的转译,我们只需要关注 taro- tarnsformer-wx 即可,在 index.ts 中,通过 ts 和 babel 将编译的结果进⾏分析,将分析到的 AST 结构进⾏处理, 通过不同的 AST 结果执⾏不同的操作。

执⾏完成之后,通过 parseJSXChildren 等解析⽅法,将 jsx 转化为 wxml。

相关文章
|
19天前
|
开发框架 前端开发 Android开发
安卓与iOS开发中的跨平台框架解析
在移动应用开发的广阔舞台上,安卓和iOS一直是两大主角。随着技术的进步,开发者们渴望能有一种方式,让他们的应用能同时在这两大平台上运行,而不必为每一个平台单独编写代码。这就是跨平台框架诞生的背景。本文将探讨几种流行的跨平台框架,包括它们的优势、局限性,以及如何根据项目需求选择合适的框架。我们将从技术的深度和广度两个维度,对这些框架进行比较分析,旨在为开发者提供一个清晰的指南,帮助他们在安卓和iOS的开发旅程中,做出明智的选择。
|
5天前
|
安全 Java 数据库连接
后端框架的学习----mybatis框架(3、配置解析)
这篇文章详细介绍了MyBatis框架的核心配置文件解析,包括环境配置、属性配置、类型别名设置、映射器注册以及SqlSessionFactory和SqlSession的生命周期和作用域管理。
后端框架的学习----mybatis框架(3、配置解析)
|
4天前
|
小程序 开发者
第一个微信小程序的初始化过程、小程序微信开发平台的下载、如何注册一个微信小程序的账号
这篇文章介绍了微信小程序的初始化过程,包括如何注册微信小程序账号、下载微信小程序开发者平台,并指导了新建小程序的详细步骤。
第一个微信小程序的初始化过程、小程序微信开发平台的下载、如何注册一个微信小程序的账号
|
1月前
|
小程序 前端开发 物联网
无人桌球室小程序平台系统定制开发方案
【项目摘要】随着社会进步和科技发展,无人桌球室小程序应运而生,解决传统桌球室管理难题。提供在线预订、自动计分、赛事查询及会员管理功能,采用微信小程序前端、微服务后端及物联网智能设备技术实现。市场推广结合社交媒体、线下活动及口碑营销。需开发支持,请联系小编。
|
1月前
|
测试技术 PHP 数据库
深入解析PHP框架:Symfony框架详解与应用
📚 Symfony框架深度解析:模块化设计提升开发效率,性能优越,灵活性高,支持MVC模式。探索控制器、路由、模板(如Twig)、服务容器、事件调度器等核心概念。还包括表单处理、数据库集成( Doctrine ORM)、安全组件、国际化支持及调试工具。使用Symfony CLI快速创建应用,内置PHPUnit测试支持。开始你的高质量Web开发之旅吧!
20 2
|
1月前
|
编解码 前端开发 图形学
【技术深度解析】多平台适配下的UI适配难题:U3D游戏UI错乱的终极解决方案
【7月更文第12天】随着移动设备市场的多元化,Unity游戏开发者面临的一大挑战是如何在不同分辨率和屏幕尺寸的设备上保持UI的一致性和美观性。游戏在高分辨率平板与低分辨率手机上呈现出的UI布局混乱、按钮错位等问题,严重影响玩家体验。本文旨在探讨Unity UI(UGUI)在多平台适配中的最佳实践,通过优化Canvas Scaler设置、灵活运用RectTransform和Anchor Points,以及高效利用设计工具,确保UI的完美适配。
101 1
|
1月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的新冠抗原自测平台小程序附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的新冠抗原自测平台小程序附带文章源码部署视频讲解等
16 2
|
30天前
|
中间件 数据库 开发者
解析Python Web框架的四大支柱:模板、ORM、中间件与路由
【7月更文挑战第20天】Python Web框架如Django、Flask、FastAPI的核心包括模板(如Django的DTL和Flask的Jinja2)、ORM(Django的内置ORM与Flask的SQLAlchemy)、中间件(Django的全局中间件与Flask的装饰器实现)和路由(Django的urls.py配置与Flask的@app.route()装饰器)。这些组件提升了代码组织和数据库操作的便捷性,确保了Web应用的稳定性和可扩展性。
32 0
|
1月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的童装购买平台微信小程序的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的童装购买平台微信小程序的详细设计和实现(源码+lw+部署文档+讲解等)
|
1月前
|
小程序
美团买菜小程序平台开发:搭建便捷的线上买菜渠道
随着时代的发展和人们生活水平的提高,网上购物已经成为更多人的首选。在此背景下,类似美团买菜小程序平台开发应运而生,为消费者提供方便快捷的网上购物体验。下面我们将详细讲解美团买菜小程序平台开发的功能特点和优势。

热门文章

最新文章

推荐镜像

更多