Projetos de código aberto de mini apps

kbone

O projeto kbone (código aberto no GitHub) implementa um adaptador que simula um ambiente de navegador na camada de adaptação. Assim, o código escrito para a Web pode ser executado sem mudanças em um mini app. Existem vários modelos iniciais (entre eles Vue, React e Preact) que facilitam a experiência de integração para desenvolvedores da Web que usam esses frameworks.

É possível criar um novo projeto com a ferramenta kbone-cli. Um assistente pergunta com qual framework iniciar o projeto. O snippet de código abaixo mostra a demonstração do Preact. No snippet de código abaixo, o comando mp cria o mini app, o comando web cria o app da Web e build cria o app da Web de produção.

npx kbone-cli init my-app
cd my-app
npm run mp
npm run web
npm run build

O snippet de código abaixo mostra um componente de contador simples que é renderizado de forma isomórfica em um mini app e um web app. A sobrecarga do mini app é significativa, apenas julgando pela estrutura do DOM.

import { h, Component } from "preact";
import "./index.css";

class Counter extends Component {
  state = { count: 1 };

  sub = () => {
    this.setState((prevState) => {
      return { count: --prevState.count };
    });
  };

  add = () => {
    this.setState((prevState) => {
      return { count: ++prevState.count };
    });
  };

  clickHandle = () => {
    if ("undefined" != typeof wx && wx.getSystemInfoSync) {
      wx.navigateTo({
        url: "../log/index?id=1",
      });
    } else {
      location.href = "log.html";
    }
  };

  render({}, { count }) {
    return (
      <div>
        <button onClick={this.sub}>-</button>
        <span>{count}</span>
        <button onClick={this.add}>+</button>
        <div onClick={this.clickHandle}>跳转</div>
      </div>
    );
  }
}

export default Counter;
O app de demonstração do modelo kbone do Preact foi aberto no WeChat DevTools. A inspeção da estrutura do DOM mostra uma sobrecarga significativa em comparação com o web app.
O app de demonstração do modelo kbone do Preact aberto no WeChat DevTools. Observe a estrutura DOM complexa e como os botões de mais e menos não são elementos <button>.
O app de demonstração do modelo kbone do Preact foi aberto no navegador da Web. A inspeção da estrutura do DOM mostra a marcação esperada com base no código do componente Preact.
O app de demonstração do modelo kbone do Preact foi aberto no navegador da Web. Observe a estrutura do DOM.

kbone-ui

O projeto kbone-ui (código aberto no GitHub) é um framework de interface que facilita o desenvolvimento de mini apps e de Vue.js com kbone. Os componentes kbone-ui emulam a aparência e o comportamento dos componentes de mini app integrados do WeChat (consulte também Componentes acima). Uma demonstração que é executada diretamente no navegador permite que você explore os componentes disponíveis.

Demonstração do framework kbone-ui mostrando componentes relacionados a formulários, como botões de opção, chaves, entradas e rótulos.
A demonstração do kbone-ui mostrando componentes relacionados a formulários.

WeUI

O WeUI (link em chinês) é um conjunto de bibliotecas de estilo básico consistente com a experiência visual padrão do WeChat. A equipe oficial de design do WeChat adaptou os designs para páginas da Web internas e miniapps do WeChat, tornando a percepção de uso mais uniforme para os usuários. Ele inclui componentes como button, cell, dialog, progress, toast, article, actionsheet e icon. Há diferentes versões do WeUI disponíveis, como weui-wxss para miniapps do WeChat estilizados com WXSS (consulte Estilização acima), weui.js para web apps e react-weui para componentes do WeChat React.

Demonstração do framework WeUI mostrando componentes relacionados a formulários, ou seja, chaves.
O app de demonstração do WeUI mostrando switches.

Omi

O Omi é um framework de front-end entre frameworks autoproclamado (código aberto no GitHub. Ele mescla componentes da Web, JSX, DOM virtual, estilo funcional, observador ou proxy em uma estrutura com tamanho pequeno e alto desempenho. O objetivo é permitir que os desenvolvedores escrevam componentes uma vez e os usem em qualquer lugar, como Omi, React, Preact, Vue.js ou Angular. Escrever componentes Omi é muito intuitivo e livre de quase todos os modelos.

import { render, WeElement, define } from "omi";

define("my-counter", class extends WeElement {
  data = {
    count: 1,
  };

  static css = `
    span{
        color: red;
    }`;

  sub = () => {
    this.data.count--;
    this.update();
  };

  add = () => {
    this.data.count++;
    this.update();
  };

  render() {
    return (
      <div>
        <button onClick={this.sub}>-</button>
        <span>{this.data.count}</span>
        <button onClick={this.add}>+</button>
      </div>
    );
  }
});

render(<my-counter />, "body");

Omiu

O Omiu é uma biblioteca de componentes de interface de usuário entre frameworks (código aberto no GitHub) desenvolvida com base no Omi, que gera elementos personalizados de componentes da Web padrão.

Demonstração do framework Omiu mostrando componentes relacionados a formulários, ou seja, chaves.
O app de demonstração do Omiu mostrando interruptores.

WePY

O WePY é um framework que permite que os miniapps ofereçam suporte ao desenvolvimento componentizado. Com a pré-compilação, os desenvolvedores podem escolher o estilo de desenvolvimento favorito para criar miniapps. A otimização detalhada da estrutura e a introdução de Promises e funções assíncronas facilitam e tornam mais eficiente o desenvolvimento de projetos de mini apps. Ao mesmo tempo, o WePY também é um framework em crescimento, que absorveu em grande parte algumas ferramentas de front-end otimizadas e conceitos e ideias de design de framework, principalmente do Vue.js.

<style lang="less">
  @color: #4d926f;
  .num {
    color: @color;
  }
</style>

<template>
  <div class="container">
    <div class="num" @tap="num++">{{num}}</div>
    <custom-component></custom-component>
    <vendor-component></vendor-component>
    <div>{{text}}</div>
    <input v-model="text" />
  </div>
</template>

<config>
  { usingComponents: { customComponent: '@/components/customComponent', vendorComponent:
  'module:vendorComponent' } }
</config>

<script>
  import wepy from "@wepy/core";

  wepy.page({
    data: {
      num: 0,
      text: "Hello World",
    },
  });
</script>
Página de documentação &quot;Como começar&quot; do Wepy mostrando as primeiras etapas para começar.
Documentação de "introdução" do WePY.

vConsole

O projeto vConsole oferece uma ferramenta de desenvolvimento de front-end leve e extensível para páginas da Web em dispositivos móveis. Ele oferece um depurador semelhante ao DevTools que pode ser inserido diretamente em apps da Web e miniapps. Uma demonstração mostra as oportunidades. O vConsole inclui guias para registros, sistema, rede, elementos e armazenamento.

App de demonstração do vConsole. O vConsole é aberto na parte de baixo e tem guias para registros, sistema, rede, elementos e armazenamento.
App de demonstração do vConsole mostrando o explorador de elementos.

weweb

O projeto weweb (código aberto no GitHub) é a estrutura de front-end subjacente da estrutura de mini apps Hera, que afirma ser compatível com a sintaxe dos mini apps do WeChat. Assim, você pode escrever aplicativos da Web como mini apps. A documentação promete que, se você já tiver um mini app, poderá executá-lo no navegador graças ao weweb. Nos meus experimentos, isso não funcionou de forma confiável para os miniapps atuais, provavelmente porque o projeto não recebeu atualizações recentemente, fazendo com que o compilador perdesse as mudanças na plataforma WeChat.

Documentação da estrutura de mini app Hera, listando as APIs do WeChat compatíveis, como &quot;wx.request&quot;, &quot;wx.uploadFile&quot; etc.
Documentação do framework de miniapp Hera mostrando a lista de APIs do WeChat compatíveis.
O mini app de demonstração do WeWeb compilado com o WeWeb para ser executado no navegador mostrando elementos de formulário.
O miniapp de demonstração do WeWeb compilado com o WeWeb para ser executado no navegador.

Agradecimentos

Este artigo foi revisado por Joe Medley, Kayce Basques, Milica Mihajlija, Alan Kent e Keith Gu.