All Projects → 1977474741 → spa-custom-hooks

1977474741 / spa-custom-hooks

Licence: MIT license
💯 Custom hook of business layer (asynchronous task notification solution), supporting various applets and Vue architectures (uni app, wepy, mpvue, etc.)

Programming Languages

javascript
184084 projects - #8 most used programming language
Vue
7211 projects
HTML
75241 projects

Projects that are alternatives of or similar to spa-custom-hooks

mp-framework-benchmark
mp-framework-benchmark
Stars: ✭ 49 (-84.04%)
Mutual labels:  wepy, uniapp, mpvue
Uni App
uni-app 是使用 Vue 语法开发小程序、H5、App的统一框架
Stars: ✭ 34,949 (+11284.04%)
Mutual labels:  uniapp, mpvue
Weapp.socket.io
A WebSocket client for building WeChat Mini Program implement by socket.io
Stars: ✭ 517 (+68.4%)
Mutual labels:  wepy, mpvue
image-cropper
💯一款功能强大的微信小程序图片裁剪插件
Stars: ✭ 1,123 (+265.8%)
Mutual labels:  wepy, mpvue
H5huodong
此地址项目不再维护,代码迁移至 https://github.com/zhangdaiscott/jeewx-boot
Stars: ✭ 209 (-31.92%)
Mutual labels:  wepy, h5
Image Cropper
💯一款功能强大的微信小程序图片裁剪插件
Stars: ✭ 893 (+190.88%)
Mutual labels:  wepy, mpvue
Mp canvas drawer
🚀 微信小程序上canvas绘制图片助手,一个json就制作分享朋友圈图片
Stars: ✭ 1,611 (+424.76%)
Mutual labels:  wepy, mpvue
We Cropper
微信小程序图片裁剪工具
Stars: ✭ 1,972 (+542.35%)
Mutual labels:  wepy, mpvue
Ewa
Enhanced Wechat App Development Toolkit (微信小程序增强开发工具)。不同于 wepy 或者 mpvue,是一个轻量级小程序开发框架。支持原生小程序所有功能,无需学习,极易上手。支持转换为百度/字节跳动/QQ小程序。
Stars: ✭ 160 (-47.88%)
Mutual labels:  wepy, mpvue
mall4cloud
⭐️⭐️⭐️ Springcloud商城 O2O商城 小程序商城 PC商城 H5商城 APP商城 Java商城 分销商城 多用户商城 uniapp商城 微服务商城
Stars: ✭ 3,915 (+1175.24%)
Mutual labels:  h5, uniapp
vue-automation
一款开箱即用的 Vue 项目模版,基于 Vue 2.x
Stars: ✭ 31 (-89.9%)
Mutual labels:  h5
mpvue-netBar
use mpvue for find network
Stars: ✭ 16 (-94.79%)
Mutual labels:  mpvue
vue-cli-uniapp
基于vuecli模式的uniapp脚手架集成模板
Stars: ✭ 80 (-73.94%)
Mutual labels:  uniapp
echarts-for-wechat-wepy
echarts微信小程序wepy版本封装
Stars: ✭ 29 (-90.55%)
Mutual labels:  wepy
webpack-mpvue-startup
A template with webpack 3 + mpvue 1 setup for projects startup
Stars: ✭ 13 (-95.77%)
Mutual labels:  mpvue
mpvue-gesture-lock
微信小程序手势解锁(Dom实现,避免小程序Canvas卡顿问题),基于 Mpvue
Stars: ✭ 34 (-88.93%)
Mutual labels:  mpvue
uParse
📰适用于 uni-app/mpvue 的富文本解析自定义组件
Stars: ✭ 45 (-85.34%)
Mutual labels:  mpvue
h5-video-player
Browser full-screen H5 video player.
Stars: ✭ 14 (-95.44%)
Mutual labels:  h5
coupons
淘宝客项目,支持App,微信小程序,QQ小程序
Stars: ✭ 392 (+27.69%)
Mutual labels:  uniapp
autojs-webView
autojs的webView实现,支持初始化脚本注入、jsBridge两端互调
Stars: ✭ 38 (-87.62%)
Mutual labels:  h5

spa-custom-hooks

license license license license license

简体中文 | English

spa-custom-hooks 是什么?

  • 一个可以定制页面钩子的东西,你可以注册全局的异步任务,自己定义钩子的触发条件,满足条件时即可自动执行页面里相关的钩子。
  • 支持和vue的原生钩子created,mounted等随意搭配使用。
  • 支持vue架构(包括uni-app、wepy、mpvue等)以及各种小程序。

它有什么用?

用简单优雅的方式解决页面逻辑依赖全局异步数据的问题

常见应用场景

export default {
    name: 'Home',
    onCreatedLogin(){
        //登录成功(拿到token) && 页面初始化完成
        //Tips:适用于某页面发送的请求依赖token的场景
    },
    onCreatedUserInfo(){
        //页面初始化完成 && 获取用户信息完成
        //Tips:适用于页面初始化时需要用到用户信息去做判断再走页面逻辑的场景
    },
    onMountedUserInfo(){
        //dom渲染完成 && 获取用户信息完成
        //Tips:适用于首次进入页面需要在canvas上渲染头像的类似场景
    },
    onReadyShow(){
        //小程序内页面渲染完成 && 页面显示
        //Tips:适用于需要获取小程序组件或者dom,并且每次页面显示都会执行的场景
    },
}

使用示例

点击查看小程序代码片段

//第一步,安装插件:
npm install spa-custom-hooks

//第二步,入口文件里注册插件:
import CustomHook from 'spa-custom-hooks';
const diyHooks = {
     'UserInfo':{
        name:'UserInfo',
        watchKey: 'userinfo',
        deep: true,
        onUpdate(val){
            //userinfo里的nickName非空则表示命中此钩子
            return !!val.nickName;
        }
    }
}
//1.vue架构的注册方式
import store from  './store'
Vue.use(CustomHook ,diyHooks,store)
//2.原生小程序的注册方式
//提前定义globalData
const globalData = {
    userinfo: {
        nickName: ''
    }
}
CustomHook.install(diyHooks,globalData)

//第三步,业务页面里使用插件(任何页面都可以使用,耦合度低,重复性代码少):
onLoadUserInfo(){
    //可以渲染canvas了
    renderCanvas();
}

注册参数说明

注册CustomHook

//vue架构-main.js
import store from './store'
import CustomHook from 'spa-custom-hooks';
Vue.use(CustomHook,diyHooks,store)
//原生小程序架构-app.js
import CustomHook from 'spa-custom-hooks';
CustomHook.install(diyHooks,globalData)

diyHooks对象说明

{
    //1.注册属性监听钩子
    //UserInfo,钩子单名,首字母大写
    'UserInfo':{
        //name,钩子全称,监听属性的话可以和上面的key一致,必填
        name:'UserInfo',
        //watchKey要监听的store里的属性名(相当于$store.state.userinfo),属性监听钩子模式必填
        watchKey: 'userinfo',
        //是否默认命中,非必填
        hit: false,
        //deep是否深度监听,非必填
        deep: true,
        //onUpdate属性改变时执行的callback,用来决定是否要命中此钩子,非必填,缺省值相当于返回了!!val
        onUpdate(val){
            //这里表示userinfo里含有nickName则命中此钩子。注意不可以异步return
            return !!val.nickName;
        }
    },
    
    //2.注册事件监听钩子
    //BeforeMount,钩子单名,首字母大写
    'BeforeMount':{
        //name,原生钩子名,用来命中此钩子,必填
        name:'beforeMount',
        //destroy,相反的钩子名,用来取消命中,事件监听钩子必填
        destroy:'destroyed',
        //是否默认命中,非必填
        hit: false
    }
}

钩子使用规则

`on{UserInfo}{BeforeMount}{Login}{Position}...` //所有注册好的钩子都可以随意搭配,排列顺序不影响钩子执行,都是 && 的关系

已经注册好的生命周期钩子

Launch、Created、Load、Attached、Show、Mounted、Ready
//↓↓↓如需其他的钩子可自行注册↓↓↓(如果当前框架的某钩子和其对应的相反钩子跟如下配置不一致也需要手动注册,比如wepy有created但没有destroyed)

Demo二维码

left image description here

进群交流

left image description here

如果有什么好的建议欢迎提issues或者提pr

喜欢的话点个star

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].