Coder Social home page Coder Social logo

miniprogram-setup's Introduction

背景

在小程序中实现「组合式 API」的库已经有不少,比如 vue-miniwx-setup,它们都是使用 Vue3 的响应式库实现的。但是,Vue3 的响应式 API 特别复杂,我数了一下,暴露出来的竟然有 50 多个 API,当然我不是说它不好用,只是要下很大的功夫才能用好。

于是我就想,有没有更简单的方式实现「组合式 API」的效果,甚至不需要增加任何 API 就能实现?于是就创建了 miniprogram-setup 这么个项目,现在还是试验阶段。

安装

直接在项目目录下运行以下命令。

npm install miniprogram-setup

然后在小程序开发者工具中点击「构建 npm」。

image.png

一个简单的例子

import { ComponentWithSetup, onDetached, onReady } from 'miniprogram-setup'

ComponentWithSetup({
  // 完全兼容原生写法
  properties: {
    default: Number
  },

  // 可以访问 properties 的值和绑定到组件实例上的 API,
  // 注意:在 setup 中不能访问 data 和 method 中的值,
  // 这是有意做的一层隔离。
  setup(props, { triggerEvent }) {
    let count = props.default

    // 状态更改会自动更新视图
    const handleClick = () => {
      count++

      // 触发一个事件
      triggerEvent('update', count)
    }

    // 组件挂载时运行
    onReady(() => {
      console.log('ready')
    })
    // 组件销毁时运行
    onDetached(() => {
      console.log('detached')
    })

    return () => ({
      count,
      handleClick
    })
  },
})

对应的 wxml 文件:

<button class="btn" bindtap="handleClick">{{count}}</button>

实际的效果可以点击查看这个代码片段

理念

目前,只需使用原生的 Javascript 且不需要 Vue 那样复杂的响应式 API ,就在小程序中实现了响应性,相比于 Vue,上手的门槛要小很多。

简单就是我的理念。😂

如果你对这个项目感兴趣欢迎提 Issue

注意:现在还是试验阶段,请不要在生产环境中使用。

miniprogram-setup's People

Contributors

zhangzhonghe avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

wooodhead

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.