All Projects → Akiq2016 → mini-programm-template

Akiq2016 / mini-programm-template

Licence: other
基于原生微信小程序的一般般好用的模板

Programming Languages

javascript
184084 projects - #8 most used programming language
CSS
56736 projects
HTML
75241 projects

Projects that are alternatives of or similar to mini-programm-template

Wxapp Boilerplate
使用 webpack, babel, scss 开发的微信/支付宝小程序项目脚手架
Stars: ✭ 367 (+948.57%)
Mutual labels:  weapp, wechat-mini-program
Tina
💃 一款轻巧的渐进式微信小程序框架
Stars: ✭ 1,153 (+3194.29%)
Mutual labels:  weapp, wechat-mini-program
Masterwechatapp
『微信小程序』优秀教程、轮子、开源项目 资源汇总
Stars: ✭ 826 (+2260%)
Mutual labels:  weapp, wechat-mini-program
miniprogram-picker
微信小程序自定义组件Picker。本组件对微信小程序原生Picker组件进行了二次封装,开发者只需要提供固定数据结构的sourceData,再进行一些必要配置,本组件就可以自动帮助开发者处理联动逻辑。
Stars: ✭ 30 (-14.29%)
Mutual labels:  weapp, wechat-mini-program
Gulp Wxapp Boilerplate
小程序 Gulp 开发脚手架
Stars: ✭ 145 (+314.29%)
Mutual labels:  weapp, wechat-mini-program
Eweapp
eweapp:ECShop非官方版微信小程序商城
Stars: ✭ 257 (+634.29%)
Mutual labels:  weapp, wechat-mini-program
Nideadmin
【未完成】NideAdmin - 基于 Vue.js + Egg.js 的微信小程序后台框架
Stars: ✭ 35 (+0%)
Mutual labels:  weapp, wechat-mini-program
wxbizdatacrypt
微信小程序加密数据解密算法Go版
Stars: ✭ 132 (+277.14%)
Mutual labels:  weapp, wechat-mini-program
Wechat web devtools
微信开发者工具(微信小程序)linux完美支持
Stars: ✭ 2,664 (+7511.43%)
Mutual labels:  weapp, wechat-mini-program
Weapp Monument Valley
纪念碑谷 小程序 源码
Stars: ✭ 119 (+240%)
Mutual labels:  weapp, wechat-mini-program
Alaweb
一套 Vue 代码,多端可用(H5、小程序、苹果App、安卓App、头条等)。系统含150+页面,200+组件(5端通用),30+元件(每个终端独立完成)
Stars: ✭ 837 (+2291.43%)
Mutual labels:  weapp, wechat-mini-program
We Validator
💯 简单灵活的表单验证插件,支持小程序、浏览器以及Nodejs端使用
Stars: ✭ 180 (+414.29%)
Mutual labels:  weapp, wechat-mini-program
Weapp Qrcode
weapp.qrcode.js 在 微信小程序 中,快速生成二维码
Stars: ✭ 1,194 (+3311.43%)
Mutual labels:  weapp, wechat-mini-program
Weapp Jump
跳一跳 小程序 源码
Stars: ✭ 173 (+394.29%)
Mutual labels:  weapp, wechat-mini-program
Wxapp Webpack Plugin
📦 微信小程序 webpack 插件
Stars: ✭ 185 (+428.57%)
Mutual labels:  weapp, wechat-mini-program
Weapp Ssha
企业官网 小程序 源码
Stars: ✭ 233 (+565.71%)
Mutual labels:  weapp
mpxday
mpxday是基于mpx开发的天气预报微信小程序
Stars: ✭ 3 (-91.43%)
Mutual labels:  wechat-mini-program
Vant Weapp
轻量、可靠的小程序 UI 组件库
Stars: ✭ 15,428 (+43980%)
Mutual labels:  weapp
Wxa Plugin Canvas
小程序海报组件-生成朋友圈分享海报并生成图片
Stars: ✭ 2,692 (+7591.43%)
Mutual labels:  weapp
PopRun
跑鸭:这是我的毕业设计,“跑鸭”微信小程序-一款基于校园跑步的社交小程序(实时里程配速、运动路径、整公里提醒、周榜月榜、打卡分享、热门推荐、线上活动、勋章墙、隐私设置),技术栈:Vant-Weapp UI、Laravel+MySQL
Stars: ✭ 64 (+82.86%)
Mutual labels:  wechat-mini-program

mini-programm-template

停止维护~ 推荐使用webpack版本

git clone https://github.com/Akiq2016/mini-programm-template.git yourFolderName
cd yourFolderName

npm install -g gulp-cli
npm install

# 生成 dist 目录
npm run build

# 开发目录监听
npm run dev

# 安装 gulp 的 plugins 后,如果报错找不到 gulp 需手动重新安装 gulp4
npm install gulp@next --save-dev

Features

  • 开启 eslint
  • 开启 autoprefixer
  • 兼容 promise
  • 支持 async / await
  • 支持 scss
  • 封装 wx API
  • 跨页面事件通讯 event
  • 监听数据变化 watch

注意: 本模板依赖 gulp 进行预处理和编译压缩,因此不使用微信开发者工具提供的相关功能。微信开发者工具选项设置:不使用 es6 -> es5。不使用 上传代码时样式自动补全。(project.config.json 已配置)

Structure

在开发者工具中,小程序目录请选择编译后的 dist

# src 结构

├── assets
|   ├── [pictures]
└── └── [icons]

├── config
|   ├── [global constant]
└── └── [configuration]

├── libs
└── └── [libary]

├── pages
└── └── [package page]
├── subPages
└── └── [subPackage page]

├── components
└── └── [components]
├── templates
└── └── [templates]

├── style
└── └── [scss]

├── utils
└── └── [tools]

├── project.config.json
├── app.js
├── app.json
├── app.scss

Libary

Promise

部分低端机型(eg. iPhone5)环境中不存在 native promise ,开发者需要自行引入 promise 库(issue)。小程序不运行在浏览器中,不存在 document/window 等对象,不能引入依赖这些对象的第三方库,因此推荐使用 bluebird

async/await 语法

直接使用 async/await 语法会出现报错:

Uncaught ReferenceError: regeneratorRuntime is not defined

需要引入 Facebook/regenerator 解决报错。 regenerator 编译后会生成 promise ,在低端机型中会再次出现 promise 兼容问题。因此手动在 regenerator 库开头引入了第三方 promise

event.js

跨页面通讯机制,原理是发布订阅模式。具体使用请看源码注释。及使用例子 pages/eventSamplePagepages/eventSamplePage2

简单使用介绍:

// 入口文件app.js
import Event from 'libs/event.js'

App({
  onLaunch: function(options) {
  },

  // 添加一个全局的事件总线
  event: new Event(),
})
// 写法一:在页面中写events对象
// 在合适的地方(比如页面生命周期钩子中)进行事件初始化 initEventOnPage
// initEventOnPage 会帮助遍历events中的事件 逐个进行listen
// 且改写了onUnload钩子,令页面在销毁时,将页面中事件销毁
Page({ // A页面
  events: {
    eventA(arg1) {
    },
    eventB(arg2) {
    },
  },
  onLoad() {
    getApp().event.initEventOnPage(this)
  },
})

Page({ // B页面
  someHandler() {
    getApp().event.trigger('eventA', { data: 888 })
  }
})
// 写法二:手动注册事件
// 注册 getApp().event.listen(keyname, callback, pageInstance)
// 销毁 getApp().event.remove(keyname, pageInstance)
Page({ // A页面
  someHandler() {
    getApp().event.listen('eventA', function (arg) { console.log(arg) }, this)
  }
  onUnload() {
    getApp().event.remove('eventA', this)
  }
})

Page({ // B页面
  someHandler() {
    getApp().event.trigger('eventA', { data: 888 })
  }
})

watch.js

数据监听,原理是发布订阅模式。具体使用请看源码注释。源库地址

简单使用介绍:

// A页面
import Watch from '../../libs/watch'

let watch;
Page({
  data: {
    a: '1',
    b: {
      c: { d: 33 },
      e: [1, 2, [3, 4]]
    }
  },
  // 可以将需要监听的数据放入watch里面,当数据改变时推送相应的订阅事件
  watch: {
    a: function(val, oldVal) {
      console.log('new: %s, old: %s', val, oldVal)
    },
    'b.c.d': function(val, oldVal) {
      console.log('new: %s, old: %s', val, oldVal)
    },
    'b.e[2][0]': function(val, oldVal) {
      console.log('new: %s, old: %s', val, oldVal)
    },
    // 不在data里面的数据项不会放入观察者列表
    'b.e[3][4]': function(val, oldVal) {
      console.log('new: %s, old: %s', val, oldVal)
    },
  },
  onLoad(options) {
    // 实例化watch
    watch = new Watch(this)
  },
  method1() {
    // 扩展原生小程序setData方法: (改变数据 更新视图) + 触发回调(假如有配置)
    watch.setData({
      a: 2,
      'b.c.d': 3,
      'b.e[2][0]': 444,
      c: 123  
    })
    
    // 扩展原生小程序对data对象直接赋值的操作: (改变数据 不更新视图) + 触发回调(假如有配置)
    // watch.data(key, val)
    watch.data('b.e[2][0]', 555)

    // 删除观察者,改变数据不触发回调
    // watch.unSubscribe(key)
    watch.unSubscribe('b.e[2][0]')
  }
})
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].