百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

一文搞定小程序开发4个模式,9个框架

itomcoil 2025-02-28 16:10 19 浏览

在工作中,分别使用微信小程序官方原生语法和跨端框架完成了几个小程序的开发,从上线效果看基本都满足了预期目标。不同开发方式和不同框架各自有其优缺点,在实际项目开发过程中,应该根据实际的项目需求以及团队人员情况做综合选择。

本篇文章全面分析小程序相关框架和技术选型相关技术细节。

一、小程序概述

要对小程序有一个整体的了解,就需要了解移动互联网在国内的发展历程。从2007年移动互联网开始在国内发展,到2015年进入移动互联网产品广泛应用阶段,各种移动端开发技术层出不穷。

移动端开发经历了:原生APP(Native APP)、Web APP、混合APP(Hibernate APP)这几种开发方式,发展到目前这个阶段,混合APP开发占据主流。从某种角度看,微信小程序也属于混合APP开发模式。

早期移动端的战场上,web与app还在借助自己各自优势占据市场。腾讯于2017年1月9日推出一个很巧妙的方案,那就是介于web与app之间的小程序。

微信小程序是小程序的一种,英文名是Wechat Mini Program,是一种不需要下载安装即可使用的应用;小程序可以在微信内被便捷地获取和传播,同时具有出色的使用体验。

通常大家所说的小程序指微信小程序,实际上除了微信小程序外,还有支付宝、百度、头条、飞书、QQ、快手、钉钉、淘宝等个各种平台的小程序。

二、小程序开发方式

在微信小程序开发中,开发者可以根据自身情况和项目需要,选择不同的开发方式,包括:原生开发、WebView开发、框架开发和低代码开发等。

1、原生开发

每一种小程序官方都推出了对应的语法和开发工具。采用此种方式开发,同一个产品需要开发不同版本,比如你要实现一个外卖小程序,既要涵盖微信小程序又要涵盖支付宝小程序,那么需要根据各自平台的语法和工具来开发2个不同的版本。

以微信小程序为例,原生开发采用的是WXML、WXSS和JavaScript等技术。要进行微信小程序开发,首先,需要先去官网了解其语法、项目结构、发布流程等基本内容。

其次,需要下载微信开发者工具,在其中创建项目,选择原生开发模式。微信开发者工具提供了丰富的代码编辑器、调试工具和运行环境等,可以帮助开发者进行快速开发和调试。

原生开发方式优点:

  • 性能最优

启动,调试,打包,加载资源等,一切基本的编译,毫无疑问最快。因为相比其它方式,少了很多辅助性的编译时间。

  • 拥有微信功能第一资源

如可视化,热更新,性能检测等,这些都是其他方式无法享受的小程序福利

  • 调试清晰

无论是样式的定位,或者是具体js的代码定位,原生的更能快速定位到问题。


原生开发方式缺点:

  • 扩展能力弱
  • 不支持scss,自定义eslint等
  • 写法不友好
  • 单向绑定,没有双向绑定。而方式较独立,与常用的框架不一致。
  • 方法不支持直接传递参数。只能通过data-id的方式传递参数。写法跟常用前端框架不一致且相对较繁琐。
  • 文件较多

这里对比其他框架,无论vue还是react都可以用一个文件,解决html + js + css。而小程序需要4个文件来支持,有时候项目大了显得特别的繁琐。

2、WebView开发

此种模式采用原生语法搭建小程序项目框架,然后再页面中放置WebView用于渲染H5页面,其它页面逻辑通过H5页面实现。

优势:

  • 脱离微信体系
  • 这是一个很大的缺陷,同时也是一个很大的优势。脱离了微信的体系,那也意味着只是一个webview的展示。这时候也已经脱离了微信本身,不再受一些展示性的限制之类。
  • 动态发布

这点其实很香,直接越过了微信的审核。想什么时候上线,直接更新web服务器即可。

  • 开发调试脱离

此时也已经是H5页面,开发也可以直接在常规浏览器调试,无需依赖微信调试工具。


缺点:

  • 无法调用微信api
  • 已经脱离微信的体系,那也意味着小程序的一切功能,都无法使用。如分享,支付,统计等。
  • 首次加载较慢
  • 小程序是借助了微信本身内部的封装,而H5是完完全全自己的实现。所以,毫无疑问,同样的功能,H5文件是更大的。这也是为什么说首 次加载较慢。
  • 无法有原生功能

所有原生功能寄托在微信中间层上,将失效。如蓝牙,拍照,获取手机信息等

3、框架开发

除了原生开发,微信小程序还提供了一些框架来简化开发过程,这些框架都基于微信小程序原生开发技术,提供了更加便捷的开发方式。

这种开发模式,并不是小程序的出现才有的。随着技术的发展,hybird已不再有当年的火爆,他们很多都转战"小程序"。

这类框架包括:WePY、Mpvue、Taro、Uni-app、chameleon、Megalo、kbone、Remax等等(当然其中有些框架已经停更了,后续进行分析)。

这类框架要么是通过大家熟悉的语法对原生语法进行包装减低上手难度;要么是通过跨端技术,一次开发编译到多平台发布,提升开发效率。

优势:

  • 学习成本低

如react生态低成本进入taro,vue生态低成本进入uni。无需适应,小半小时即可参与开发

  • 多端编译

一份最高支持:h5移动端,各类小程序,快应用等。有些还支持生成app

  • 自带工程化

如支持scss,eslint,vuex等

  • 方法的扩展

框架基本都对自身对wx.api进行了一次封装。此外还进行了扩展以及修改。如uni实现了data对页面的绑定,不需要再setDate。同理taro也采用了setState的方案。

  • 拓展的组件库

无论uni,还是taro,或者其他,基本都对官方的ui库进行二次封装,其功能都有自己的特色,或者对其组件进行了扩展。


缺点:

  • 依赖第三方

该问题可大可小。特别是非有声望的公司维护的框架,没准过一段时间就不维护了。如几年前比uni更火爆的的mpvue已不维护。不维护的那天,也就意味着你的项目,重构!

  • 无法调试

由于本身已经是编译后的文件,此时想再通过断点调试,你甚至不清楚原来写的代码编译后在哪里。

  • 转义效率低

写完原生小程序代码,就需要编译一下才能才虚拟机上看到效果。而用第三方,还需编译为原生。写完代码之后:你的代码(第三方) --> 转义为原生(原生)-->再编译让虚拟机允许。这多了个过程,所以效率变低。

  • 双平台bug

原生小程序的bug,该问题近几年也相对好转,但问题还是依然存在。各大论坛搜索"小程序的坑",总有一堆文章让你体验。然而用第三方,你还要接受第三方的bug。你需要容纳双平台的bug。

在接受小程序官方的“bug”的同时,还需要同时接受第三方的"bug"。

  • 编译后工程化文件置空

此外,编译后文件历史等置空的问题。如快速页面读取配置,编译之后又置空。

4、低代码平台

低代码或零代码平台,无需编写代码,通过官网提供平台拓展组件即可快速完成小程序搭建。此类平台有:阿里宜搭、腾讯微搭、意派Coolsite360等。

此类平台无需编码或只需要少量编码,减低小程序制作门槛,但大部分都需要收费。


三、小程序开发框架

随着微信、支付宝等开放平台的壮大,移动应用生态市场的蓬勃发展,例如小程序已经成为各个企业和开发者的重要选择。为了提高小程序的开发效率和代码重用性,许多第三方开发框架应运而生。

1、uni-app

uni-app 是一个使用 Vue.js 开发跨平台应用的框架,支持微信小程序、支付宝小程序、百度小程序、字节跳动小程序、H5 网页应用等多个平台。

它采用了一套统一的组件规范和开发语法,开发者可以通过一套代码同时生成多个平台的应用。

uni-app提供了丰富的组件库和插件生态系统,开发者可以快速搭建小程序界面并扩展功能。

uni-app 还具有良好的性能和跨平台兼容性,可以在不同平台上保持一致的用户体验。

2、Taro

京东的亲儿子,类 React 开发风格,名字来自于实力最强的奥特曼。

Taro 是一款多端统一开发框架,可以同时开发微信小程序、支付宝小程序、百度小程序等多个平台的应用。

它采用类 React 的开发语法,支持 JSX 和组件化开发,使得代码的编写更加简洁和可维护。

Taro 的一个主要优势是它能够一次编写代码,同时生成多个平台的应用,大大提高了开发效率。

3、Mpvue

美团的亲儿子,框架直接基于 Vue 核心,修改了 runtime 和 compiler 使程序可以在微信小程序环境中运行。该项目已停止维护,但仍然可用。

Mpvue 是一个基于 Vue.js 的小程序开发框架,通过使用 Vue.js 的语法进行开发。

对于熟悉 Vue.js 的开发者来说,上手 Mpvue 非常容易。

它提供了类似 Vue 的开发体验和功能,如组件化、数据绑定和计算属性等。

此外,Mpvue 支持微信小程序和百度小程序,让开发者能够同时覆盖多个平台。

4、WePY

腾讯的亲儿子,类 Vue 开发风格。基于小程序原生组件实现组件化开发,是对小程序原有能力的封装和优化。该项目已停止维护,但仍然可用。

WePY 是一款类 Vue 语法的小程序组件化开发框架,它与 Vue.js 的语法相似,提供了类似的组件化开发方式。

WePY 支持微信小程序和支付宝小程序,使得开发者能够更好地复用代码和组件。

与此同时,WePY 还提供了许多扩展能力和开发工具,如代码热重载、模板编译优化等,大大提高了开发效率。

然而,由于 WePY 不支持其他小程序平台,对于需要覆盖多个平台的开发者来说,可能需要考虑其他选择。

5、Megalo

网易亲儿子,类似vue语法编写小程序,跨H5和小程序两端。该项目已停止维护,但仍然可用。

Megalo 是一个使用 Vue.js 开发微信小程序的框架,兼容大部分 Vue.js 的语法和特性。

开发者可以利用 Vue.js 的强大生态系统进行开发,并享受 Vue.js 带来的开发便利性。

Megalo 支持原生的微信小程序 API,开发者可以直接使用微信小程序的能力。

然而,Megalo 目前仅支持微信小程序,对于需要覆盖其他小程序平台的开发者来说,可能需要考虑其他选择。

6、Remax

阿里蚂蚁金服的亲儿子,使用原生React来构建小程序,运行时框架,从Remax2.0开始支持Web应用的构建。该项目已停止维护,但仍然可用。

Remax 是一个使用 React 开发小程序的框架,支持微信小程序、支付宝小程序、字节跳动小程序、QQ 小程序等多个平台。

开发者可以借助熟悉的 React 生态系统进行开发,并享受 React 带来的开发效率和组件化能力。

Remax 还支持原生小程序的能力,开发者可以直接使用小程序的 API。

然而,对于不熟悉 React 的开发者来说,上手 Remax 可能需要一定的学习成本。

7、Chameleon

滴滴亲儿子,跨端解决方案,基于Chameleon框架开发项目,一份代码可以运行于所有小程序平台 ( 微信、支付宝、百度、头条、qq )、H5、客户端以及快应用。

青桔单车就是用它来实现的,该项目已停止维护,但仍然可用。

Chameleon/k??mi?l??n/,简写CML,中文名卡梅龙;中文意思变色龙,意味着就像变色龙一样能适应不同环境的跨端整体解决方案。一次开发,多端运行,一端所见即多端所见。缺点是在使用跨平台开发的同时,需要考虑不同平台的差异性和兼容性。

8、kbone

腾讯亲儿子,kbone 是一个致力于微信小程序和 Web 端同构的解决方案。

微信小程序的底层模型和 Web 端不同,我们想直接把 Web 端的代码挪到小程序环境内执行是不可能的。kbone 的诞生就是为了解决这个问题,它实现了一个适配器,在适配层里模拟出了浏览器环境,让 Web 端的代码可以不做什么改动便可运行在小程序里。

它模拟了一套dom和bom接口,用以兼容现有的前端体系,只能用于Web兼容微信小程序,无法满足其他平台小程序的开发。

9、Nanachi

Nanachi( 娜娜奇),去哪儿亲儿子,基于 React 的多端小程序转译框架,完美兼容 React 生命周期。该项目已停止维护。


在对框架进行选择时,除了结合自身业务需求外,由于技术更新迭代很快,还要综合考虑每个框架更新维护的频率,社群的活跃程度。

小编挨个查看官网发现,目前只有uniapp和Taro仍然在保持更新,所以商业项目建议选择其一。从技术栈角度考虑,如果熟悉react就选择taro,熟悉vue就选择uni-app。

虽然很多项目已经停止运行了,它们都曾经辉煌过,也为国内it的发展做出共享。并且其代码都在github上开源,可以作为研究之用。

四、小结

在选择小程序第三方开发框架时,我们需要综合考虑开发者技术栈、项目需求和目标平台等因素。

综上,如果采用原生开发直接按官方语法即可;如果采用跨端开发,目前有2个选择:Taro 是一个多端统一开发框架,适合需要覆盖多个平台的开发者;uni-app 是一个跨平台框架,适用于同时开发多个小程序平台的项目。

当然随着技术向前发展,技术更新非常之快,有可能有新的后起之秀

无论选择哪个框架,都能够提高开发效率、减少重复工作,并获得丰富的组件库和工具支持。

相关推荐

Python Qt GUI设计:将UI文件转换Python文件三种妙招(基础篇—2)

在开始本文之前提醒各位朋友,Python记得安装PyQt5库文件,Python语言功能很强,但是Python自带的GUI开发库Tkinter功能很弱,难以开发出专业的GUI。好在Python语言的开放...

Connect 2.0来了,还有Nuke和Maya新集成

ftrackConnect2.0现在可以下载了--重新设计的桌面应用程序,使用户能够将ftrackStudio与创意应用程序集成,发布资产等。这个新版本的发布中还有两个Nuke和Maya新集成,...

Magicgui:不会GUI编程也能轻松构建Python GUI应用

什么是MagicguiMagicgui是一个Python库,它允许开发者仅凭简单的类型注解就能快速构建图形用户界面(GUI)应用程序。这个库基于Napari项目,利用了Python的强大类型系统,使得...

Python入坑系列:桌面GUI开发之Pyside6

阅读本章之后,你可以掌握这些内容:Pyside6的SignalsandSlots、Envents的作用,如何使用?PySide6的Window、DialogsandAlerts、Widgets...

Python入坑系列-一起认识Pyside6 designer可拖拽桌面GUI

通过本文章,你可以了解一下内容:如何安装和使用Pyside6designerdesigner有哪些的特性通过designer如何转成python代码以前以为Pyside6designer需要在下载...

pyside2的基础界面(pyside2显示图片)

今天我们来学习pyside2的基础界面没有安装过pyside2的小伙伴可以看主页代码效果...

Python GUI开发:打包PySide2应用(python 打包pyc)

之前的文章我们介绍了怎么使用PySide2来开发一个简单PythonGUI应用。这次我们来将上次完成的代码打包。我们使用pyinstaller。注意,pyinstaller默认会将所有安装的pack...

使用PySide2做窗体,到底是怎么个事?看这个能不能搞懂

PySide2是Qt框架的Python绑定,允许你使用Python创建功能强大的跨平台GUI应用程序。PySide2的基本使用方法:安装PySide2pipinstallPy...

pycharm中conda解释器无法配置(pycharm安装的解释器不能用)

之前用的好好的pycharm正常配置解释器突然不能用了?可以显示有这个环境然后确认后可以conda正在配置解释器,但是进度条结束后还是不成功!!试过了pycharm重启,pycharm重装,anaco...

Conda使用指南:从基础操作到Llama-Factory大模型微调环境搭建

Conda虚拟环境在Linux下的全面使用指南:从基础操作到Llama-Factory大模型微调环境搭建在当今的AI开发与数据分析领域,conda虚拟环境已成为Linux系统下管理项目依赖的标配工具。...

Python操作系统资源管理与监控(python调用资源管理器)

在现代计算环境中,对操作系统资源的有效管理和监控是确保应用程序性能和系统稳定性的关键。Python凭借其丰富的标准库和第三方扩展,提供了强大的工具来实现这一目标。本文将探讨Python在操作系统资源管...

本地部署开源版Manus+DeepSeek创建自己的AI智能体

1、下载安装Anaconda,设置conda环境变量,并使用conda创建python3.12虚拟环境。2、从OpenManus仓库下载代码,并安装需要的依赖。3、使用Ollama加载本地DeepSe...

一文教会你,搭建AI模型训练与微调环境,包学会的!

一、硬件要求显卡配置:需要Nvidia显卡,至少配备8G显存,且专用显存与共享显存之和需大于20G。二、环境搭建步骤1.设置文件存储路径非系统盘存储:建议将非安装版的环境文件均存放在非系统盘(如E盘...

使用scikit-learn为PyTorch 模型进行超参数网格搜索

scikit-learn是Python中最好的机器学习库,而PyTorch又为我们构建模型提供了方便的操作,能否将它们的优点整合起来呢?在本文中,我们将介绍如何使用scikit-learn中的网格搜...

如何Keras自动编码器给极端罕见事件分类

全文共7940字,预计学习时长30分钟或更长本文将以一家造纸厂的生产为例,介绍如何使用自动编码器构建罕见事件分类器。现实生活中罕见事件的数据集:背景1.什么是极端罕见事件?在罕见事件问题中,数据集是...