All Projects → didi → Mpx

didi / Mpx

Licence: apache-2.0
Mpx,一款具有优秀开发体验和深度性能优化的增强型跨端小程序框架

Programming Languages

javascript
184084 projects - #8 most used programming language
Vue
7211 projects
stylus
462 projects

Projects that are alternatives of or similar to Mpx

uniapp-scaffold
基于Vue.js的跨平台小程序脚手架、设计语言、组件库及插拔式模板
Stars: ✭ 87 (-97.01%)
Mutual labels:  wechat-mini-program, miniprogram, alipay-mini-program
Remax
使用真正的 React 构建跨平台小程序
Stars: ✭ 4,099 (+40.71%)
Mutual labels:  wechat-mini-program, miniprogram, alipay-mini-program
cheers-mp
Almost 零配置微信原生小程序脚手架,vue-cli般的体验~ (゜-゜)つロ 干杯~
Stars: ✭ 32 (-98.9%)
Mutual labels:  wechat-mini-program, miniprogram
face
基于 Remax 的多端研发体系
Stars: ✭ 26 (-99.11%)
Mutual labels:  wechat-mini-program, miniprogram
Vue Bridge Webview
javascript bridge android/ios webview
Stars: ✭ 52 (-98.21%)
Mutual labels:  webpack, webapp
miniprogram-template
a wechat miniprogram template project the best practice with miniprogram-build 小程序模板最佳实践(TypeScript)
Stars: ✭ 46 (-98.42%)
Mutual labels:  wechat-mini-program, miniprogram
miniprogram-picker
微信小程序自定义组件Picker。本组件对微信小程序原生Picker组件进行了二次封装,开发者只需要提供固定数据结构的sourceData,再进行一些必要配置,本组件就可以自动帮助开发者处理联动逻辑。
Stars: ✭ 30 (-98.97%)
Mutual labels:  wechat-mini-program, miniprogram
Wxapp Boilerplate
使用 webpack, babel, scss 开发的微信/支付宝小程序项目脚手架
Stars: ✭ 367 (-87.4%)
Mutual labels:  wechat-mini-program, webpack
mp-framework-benchmark
mp-framework-benchmark
Stars: ✭ 49 (-98.32%)
Mutual labels:  mpx, miniprogram
Mina Webpack
🍱 Mina single-file-component meets Webpack
Stars: ✭ 77 (-97.36%)
Mutual labels:  wechat-mini-program, webpack
Node Express Typescript Boilerplate
A boilerplate for developing web apps with Node.js, Express.js & TypeScript. Demonstrates helpful recipes in 8 steps in individual branches.
Stars: ✭ 60 (-97.94%)
Mutual labels:  webpack, webapp
Webapp Webpack Plugin
[DEPRECATED] use favicons-webpack-plugin instead
Stars: ✭ 127 (-95.64%)
Mutual labels:  webpack, webapp
MP-CU
MP-CU, colorui3.x 微信小程序原生版
Stars: ✭ 141 (-95.16%)
Mutual labels:  wechat-mini-program, miniprogram
WX MultiTabList
微信小程序,多个Tab列表的上下拉刷新方案
Stars: ✭ 25 (-99.14%)
Mutual labels:  wechat-mini-program, miniprogram
mp-progress
专注于小程序圆环形进度条的小工具
Stars: ✭ 72 (-97.53%)
Mutual labels:  wechat-mini-program, miniprogram
we-timer
🌈⏱ A beautiful interval timer wechat miniprogram | 一个好看的间隔计时微信小程序
Stars: ✭ 61 (-97.91%)
Mutual labels:  wechat-mini-program, miniprogram
PopRun
跑鸭:这是我的毕业设计,“跑鸭”微信小程序-一款基于校园跑步的社交小程序(实时里程配速、运动路径、整公里提醒、周榜月榜、打卡分享、热门推荐、线上活动、勋章墙、隐私设置),技术栈:Vant-Weapp UI、Laravel+MySQL
Stars: ✭ 64 (-97.8%)
Mutual labels:  wechat-mini-program, miniprogram
Webapp
基于webpack+Vue2.0搭建webapp,结合野狗实现实时云通信,并自动构建在DaoCloud上!
Stars: ✭ 169 (-94.2%)
Mutual labels:  webpack, webapp
Prestashop
Free PWA & SPA for PrestaShop
Stars: ✭ 59 (-97.97%)
Mutual labels:  webpack, webapp
Terminal In React
👨‍💻 A component that renders a terminal
Stars: ✭ 1,939 (-33.44%)
Mutual labels:  webpack, webapp

mpx-logo

Mpx, 一款具有优秀开发体验和深度性能优化的增强型跨端小程序框架。

test-status docs-status

简介

Mpx是一款致力于提高小程序开发体验和开发效率的增强型小程序框架,通过Mpx,我们能够高效优雅地开发出具有极致性能的优质小程序应用,并将其输出到各大小程序平台和web平台中运行。

Mpx具有以下功能特性:

安装使用

# 安装mpx脚手架工具
npm i -g @mpxjs/cli

# 初始化项目
mpx init mpx-project

# 进入项目目录
cd mpx-project

# 安装依赖
npm i

# development
npm run watch

# production
npm run build

使用小程序开发者工具打开项目文件夹下dist中对应平台的文件夹即可预览效果。

简单示例

<template>
  <!--动态样式-->
  <view class="container" wx:style="{{dynamicStyle}}">
    <!--数据绑定-->
    <view class="title">{{title}}</view>
    <!--计算属性数据绑定-->
    <view class="title">{{reversedTitle}}</view>
    <view class="list">
      <!--循环渲染,动态类名,事件处理内联传参-->
      <view wx:for="{{list}}" wx:key="id" class="list-item" wx:class="{{ {active:item.active} }}"
            bindtap="handleTap(index)">
        <view>{{item.content}}</view>
        <!--循环内部双向数据绑定-->
        <input type="text" wx:model="{{list[index].content}}"/>
      </view>
    </view>
    <!--自定义组件获取实例,双向绑定,自定义双向绑定属性及事件-->
    <custom-input wx:ref="ci" wx:model="{{customInfo}}" wx:model-prop="info" wx:model-event="change"/>
    <!--动态组件,is传入组件名字符串,可使用的组件需要在json中注册,全局注册也生效-->
    <component is="{{current}}"></component>
    <!--显示/隐藏dom-->
    <view class="bottom" wx:show="{{showBottom}}">
      <!--模板条件编译,__mpx_mode__为框架注入的环境变量,条件判断为false的模板不会生成到dist-->
      <view wx:if="{{__mpx_mode__ === 'wx'}}">wx env</view>
      <view wx:if="{{__mpx_mode__ === 'ali'}}">ali env</view>
    </view>
  </view>
</template>

<script>
  import { createPage } from '@mpxjs/core'

  createPage({
    data: {
      // 动态样式和类名也可以使用computed返回
      dynamicStyle: {
        fontSize: '16px',
        color: 'red'
      },
      title: 'hello world',
      list: [
        {
          content: '全军出击',
          id: 0,
          active: false
        },
        {
          content: '猥琐发育,别浪',
          id: 1,
          active: false
        }
      ],
      customInfo: {
        title: 'test',
        content: 'test content'
      },
      current: 'com-a',
      showBottom: false
    },
    computed: {
      reversedTitle () {
        return this.title.split('').reverse().join('')
      }
    },
    watch: {
      title: {
        handler (val, oldVal) {
          console.log(val, oldVal)
        },
        immediate: true
      }
    },
    handleTap (index) {
      // 处理函数直接通过参数获取当前点击的index,清晰简洁
      this.list[index].active = !this.list[index].active
    },
    onReady () {
      setTimeout(() => {
        // 更新数据,同时关联的计算属性reversedTitle也会更新
        this.title = '你好,世界'
        // 此时动态组件会从com-a切换为com-b
        this.current = 'com-b'
      }, 1000)
    }
  })
</script>

<script type="application/json">
  {
    "usingComponents": {
      "custom-input": "../components/custom-input",
      "com-a": "../components/com-a",
      "com-b": "../components/com-b"
    }
  }
</script>

<style lang="stylus">
  .container
    position absolute
    width 100%
</style>

更多示例请查看官方示例项目

文档

https://mpxjs.cn/

设计思路

Mpx的核心设计思路为增强,不同于业内大部分小程序框架将web MVVM框架迁移到小程序中运行的做法,Mpx以小程序原生的语法和技术能力为基础,借鉴参考了主流的web技术设计对其进行了扩展与增强,并在此技术上实现了以微信增强语法为base的同构跨平台输出,该设计带来的好处如下:

  • 良好的开发体验:在方便使用框架提供的便捷特性的同时,也能享受到媲美原生开发的确定性和稳定性,完全没有框架太多坑,不如用原生的顾虑;不管是增强输出还是跨平台输出,最终的dist代码可读性极强,便于调试排查;
  • 极致的性能:得益于增强的设计思路,Mpx框架在运行时不需要做太多封装抹平转换的工作,框架的运行时部分极为轻量简洁,压缩+gzip后仅占用14KB;配合编译构建进行的包体积优化和基于模板渲染函数进行的数据依赖跟踪,Mpx框架在性能方面做到了业内最优(小程序框架运行时性能评测报告);
  • 完整的原生兼容:同样得益于增强的设计思路,Mpx框架能够完整地兼容小程序原生技术规范,并且做到实时跟进。在Mpx项目中开发者可以方便地使用业内已有的小程序生态,如组件库、统计工具等;原生开发者们可以方便地进行渐进迁移;甚至可以将框架的跨平台编译能力应用在微信的原生小程序组件当中进行跨平台输出。

生态周边

包名 版本 描述
@mpxjs/core npm version mpx运行时核心
@mpxjs/webpack-plugin npm version mpx编译核心
@mpxjs/cli npm version mpx脚手架命令行工具
@mpxjs/fetch npm version mpx网络请求库,处理wx并发请求限制
@mpxjs/webview-bridge npm version 为跨小程序平台的H5项目提供通用的webview-bridge
@mpxjs/api-proxy npm version 将各个平台的 api 进行转换,也可以将 api 转为 promise 格式
@mpxjs/mock npm version 结合mockjs提供数据mock能力

开发团队

核心作者: hiyuki

内部成员: sky-admin, httpsxiao, pkingwa, xuehebinglan, wangxiaokou, zhaoyiming0803, ctxrr, yandadaFreedom, dolymood tangminFE, codepan

外部贡献者:lsycxyj, okxiaoliang4, zqjimlove, JanssenZhang, heiye9, lj0812, SuperHuangXu, twtylkmrh, NineSwordsMonster

成功案例

微信小程序

滴滴出行 出行广场 滴滴公交 滴滴金融 滴滴外卖 司机招募 小桔加油
滴滴出行 出行广场 滴滴公交 滴滴金融 滴滴外卖 司机招募 小桔加油
彗星英语 番薯借阅 疫查查应用 小桔养车 学而思直播课 小猴启蒙课 科创书店
彗星英语 番薯借阅 疫查查应用 小桔养车 学而思直播课 小猴启蒙课 科创书店
在武院 三股绳Lite 学而思优选课 食享会 青铜安全医生 青铜安全培训 视穹云机械
在武院 三股绳Lite 学而思优选课 食享会 青铜安全医生 青铜安全培训 视穹云机械
店有生意通 花小猪打车 橙心优选 小二押镖 顺鑫官方微商城 嘀嗒出行 汉行通Pro
店有生意通 花小猪打车 橙心优选 小二押镖 顺鑫官方微商城 嘀嗒出行 汉行通Pro
交圈
交圈

其他平台小程序:

滴滴出行(支付宝) 小桔充电(支付宝) 唯品会QQ 口袋证件照(百度) 唯品会(百度) 唯品会(字节)
滴滴出行(支付宝) 小桔充电(支付宝) 唯品会(QQ) 口袋证件照(百度) 唯品会(百度) 唯品会(字节)

更多案例,若你也在使用Mpx框架开发小程序,并想分享给大家,请填在此issue中。

交流

提供 微信群 / QQ群 两种交流方式

添加MPX入群客服等待受邀入群

微信

扫码进入QQ群

QQ

图片因github网络问题导致不可见的朋友可以点击该链接:https://s.didi.cn/rod

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].