【推荐】开源项目minapp-重新定义微信小程序的开发
minapp
重新定义微信小程序的开发
作者:Mora
minapp
重新定义微信小程序的开发
使用
- 用 npm 安装命令行工具:
npm install -g @minapp/cli --registry "https://registry.npmjs.org/"(避免从淘宝镜像上安装,它上面的还是老版本,已经给他们提了一个 issue) - 初始化项目:
minapp init <你要创建项目的文件夹>(同时支持创建 js 和 ts 项目) - 安装两个 vscode 插件:minapp 和 dot-template(可选,但建议安装)
功能概览(在 vscode 编辑器下)
wx 所有接口都有智能的提醒,同时包括接口的参数,和返回值
提供一个 promise 版的 wx 接口 wxp,和 wx 一样,只是它会将 wx 中所有需要 success/fail/complete 三个参数的函数 promise 化
- wxp 中也支持使用 success 回调
- wxp 给 Promise 添加了一个 finally 方法;如,你可以这样用
wxp.getUserInfo().finally(() => { /* do something */ })
集成 mobx,可以非常方便的修改全局数据,并自动更新当前页面状态
- 注入 Store 只需要在 appify 函数中添加 Store 对象即可
- Page 和 Component 中都默认注入了 Store 对象,你可以使用
this.store获取
wxml 模板语言支持语法高亮,组件智能提示,组件属性智能提示(需要安装 vscode 插件 minapp)
json 文件支持自动提示
新建一个 page 文件夹时,自动生成相关文件(需要安装 vscode 插件 dot-template)
- 自动为你创建相关的同名的文件,包括 js/json/wxml/scss,并且这些模板文件你可以随时在 .dtpl 文件夹下修改
- 自动将新建的 page 路径注入到 app.json 文件夹中
小程序 Page 中支持函数自动提示
同理,新建组件文件夹时,也会创建相关的文件;同时组件中的生命周期函数也会自动提示
关于此仓库说明
这不是一个项目,是有好几个项目组合而成的,用的是 lerna 开发工具,其它项目在 packages 目录下,这里对其中的几个主要项目做个简要概述
- minapp-generator: 此模块负责解析微信官方文档,生成结构化的数据,供其它模块使用
- minapp-core: 微信所有原生 api 的 TypeScript 定义,另外提供一个 promise 版的 wx 接口
- minapp-mobx: 开发框架,集成 mobx
- minapp-compiler: 一个小程序的编译器,集成 webpack 和 webpack-dev-server
- minapp-webpack-utils: 编译器中需要使用的 webpack 相关的插件
- minapp-cli: 提供给用户的命令行工具,集成了 minapp-compiler,并可以快速创建一个新项目
- minapp-vscode: vscode 插件,为wxml提供语法高亮、标签与属性的自动补全
TODO
- [ ] 小程序中的静态资源自动上传到 七牛 (完成我的 file-uploader 组件)
- [ ] 实现类似于 vue 的功能,可以将所有文件写在一个页面上
- [ ] webpack 升级到 4.0
- [ ] 写一个小程序的自动化测试框架
下一篇:作者亲著,重新定义微信小程序开发 —— 上篇
【推荐】开源项目minapp-重新定义微信小程序的开发的更多相关文章
- 第一章 “我要点爆”微信小程序云开发之项目建立与我的页面功能实现
第一章 “我要点爆”微信小程序云开发之项目建立与我的页面功能实现 开发环境搭建 使用自己的AppID新建小程序项目,后端服务选择小程序·云开发,点击新建,完成项目新建. 新建成功后跳转到开发者工具界面 ...
- 微信小程序-云开发-实战项目
微信小程序-云开发-实战项目 微信小程序 微信小程序平台服务条款 https://developers.weixin.qq.com/miniprogram/product/service.html h ...
- “我要点爆”微信小程序云开发实例
使用云开发进行微信小程序“我要点爆”的制作 下一章:“我要点爆”微信小程序云开发之项目建立与我的页面功能实现 接下来我将对“我要点爆”微信小程序进行完整的开源介绍 小程序名称: 我要点爆 查看方式:从 ...
- 微信小程序从零开始开发步骤(八)引入框架WeUI
首先来看下WeUI的官方介绍: WeUI 是一套同微信原生视觉体验一致的基础样式库,由微信官方设计团队为微信内网页和微信小程序量身设计,令用户的使用感知更加统一.在微信小程序的开发过程中,涉及到的前端 ...
- vue+uni-app商城实战 | 第一篇:【有来小店】微信小程序快速开发接入Spring Cloud OAuth2认证中心完成授权登录
一. 前言 本篇通过实战来讲述如何使用uni-app快速进行商城微信小程序的开发以及小程序如何接入后台Spring Cloud微服务. 有来商城 youlai-mall 项目是一套全栈商城系统,技术栈 ...
- 微信小程序快速开发
微信小程序快速开发 一.注册小程序账号,下载IDE 1.官网注册https://mp.weixin.qq.com/,并下载IDE. 2.官方文档一向都是最好的学习资料. 注意:1)注册账号之后会有一个 ...
- 第六章 “我要点爆”微信小程序云开发实例之爆文详情页制作
爆文详情页制作 从首页中数据列表打开相应详情页面的方法: 给数据列表中每个数据项加一个点击事件,同时将当前数据项的id暂时记录在本地,然后跳转到详情页面detail goopen: function ...
- 小程序语音红包开发中 汉字转拼音的问题 微信小程序红包开发遇到的坑
公司最近在开发微信小程序的红包功能,语音红包需要用到文字转拼音的功能. 之前介绍过怎么将中文的汉字转为拼音的,具体看下面这篇文章. 微信语音红包小程序开发如何提高精准度 红包小程序语音识别精准度 微信 ...
- 微信小程序从零开始开发步骤(三)底部导航栏
上一章节,我们分享了如何创建一个新的页面和设置页面的标题,这一章我们来聊聊底部导航栏是如何实现的.即点击底部的导航,会实现不同对应页面之间的切换. 我们先来看个我们要实现的底部导航栏的效果图:(三个导 ...
随机推荐
- chroot: failed to run command `/bin/bash': No such file or directory
1 使用chroot命令时报错如下: testupgrade:/ # chroot /sb chroot: cannot change root directory to /sb: No such f ...
- Linux实践篇--crontab定时任务
原文出处:http://www.cnblogs.com/tracy/archive/2011/12/27/2303788.html.感谢作者的无私分享 一. Crontab 介绍 ...
- JAVA中限制接口流量、并发的方法
JAVA中限制接口流量可以通过Guava的RateLimiter类或者JDK自带的Semaphore类来实现,两者有点类似,但是也有区别,要根据实际情况使用.简单来说, RateLimiter类是控制 ...
- 长整形 Unix系统毫秒时间 (long类型) 转换为时间格式
/** * 把毫秒转化成日期 * * @param dateFormat(日期格式,例如:MM/ dd/yyyy HH:mm:ss) * @param millSec(毫秒数) * @return * ...
- c# 事件路由器
事件转发 using System; using System.Collections.Generic; using System.Linq; using System.Text; using Sys ...
- Python 定位桌面
通过注册表寻找桌面路径: (用内置的winreg) import winreg key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, \ ...
- PHP使用file_get_contents或curl请求https的域名内容为空或Http 505错误的问题排查方法
前段日子,突然接到用户的反馈,说系统中原来的QQ登录.微博登录通通都不能用,跟踪代码进去后发现,是在 file_get_contents这个函数请求QQ登录的地方报错,在用该函数file_get_co ...
- Python CRM项目六
自定义Django Admin的action 在Django Admin中,可以通过action来自定义一些操作,其中默认的action的功能是选中多条数据来进行删除操作 我们在king_admin中 ...
- handlebars.js模版引擎随记
前台的模版引擎有许多种,相比较而言 我个人更觉得handlebars更为轻便 首先github上下载自新版本的handelbars.js http://handlebarsjs.com 下载下来之后呢 ...
- c#结构体、打他table、excel、csv互转
1.csv相关 public static class CsvHelper { /// <summary> /// 根据csv路径获取datatable /// </summary& ...