Progetti open source di mini app

kbone

Il progetto kbone (open source su GitHub) implementa un adattatore che simula un ambiente browser nel livello di adattamento, in modo che il codice scritto per il web possa essere eseguito senza modifiche in una mini app. Esistono diversi modelli di partenza (tra cui Vue, React e Preact) che semplificano l'esperienza di onboarding per gli sviluppatori web che utilizzano questi framework.

È possibile creare un nuovo progetto con lo strumento kbone-cli. Un wizard chiede con quale framework avviare il progetto. Lo snippet di codice seguente mostra la demo di Preact. Nello snippet di codice in basso, il comando mp crea la mini app, il comando web crea l'app web e build crea l'app web di produzione.

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

Lo snippet di codice riportato di seguito mostra un semplice componente contatore che viene visualizzato in modo isomorfo in una mini app e in un'app web. Il sovraccarico della mini app è significativo, solo in base alla struttura 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;
L&#39;app demo del modello Preact kbone si è aperta in WeChat DevTools. L&#39;ispezione della struttura DOM mostra un overhead significativo rispetto all&#39;app web.
L'app demo del modello Preact kbone si è aperta in WeChat DevTools. Nota la complessa struttura DOM e come i pulsanti Più e Meno non siano in realtà elementi <button>.
L&#39;app demo del modello Preact kbone si è aperta nel browser web. L&#39;analisi della struttura DOM mostra il markup che potrebbe essere previsto in base al codice del componente Preact.
L'app demo del modello Preact kbone si è aperta nel browser web. Prendi nota della struttura del DOM.

kbone-ui

Il progetto kbone-ui (open source su GitHub) è un framework UI che semplifica sia lo sviluppo di mini app sia lo sviluppo di Vue.js con kbone. I componenti kbone-ui simulano l'aspetto dei componenti delle mini app integrati di WeChat (vedi anche Componenti sopra). Una demo che viene eseguita direttamente nel browser consente di esplorare i componenti disponibili.

Demo del framework kbone-ui che mostra componenti correlati al modulo come pulsanti di opzione, opzioni, input ed etichette.
Demo dell'interfaccia utente kbone che mostra i componenti correlati al modulo.

WeUI

WeUI è un insieme di librerie di stili di base coerenti con l'esperienza visiva predefinita di WeChat. Il team di progettazione ufficiale di WeChat ha personalizzato i design per le pagine web interne di WeChat e le mini app WeChat per rendere più uniforme la percezione dell'utilizzo da parte degli utenti. Include componenti come button, cell, dialog, progress, toast, article, actionsheet e icon. Sono disponibili diverse versioni di WeUI, come weui-wxss per mini app WeChat con stili WXSS (vedi la sezione Stili sopra), weui.js per le app web e react-weui per i componenti WeChat React.

Demo del framework WeUI che mostra i componenti relativi ai moduli, ovvero gli switch.
L'app demo WeUI che mostra gli switch.

Omi

Omi è un framework frontend cross-framework autoproclamato (open source su GitHub. Unisce Web Components, JSX, Virtual DOM, stile funzionale, osservatore o proxy in un unico framework con dimensioni ridotte e prestazioni elevate. Il suo scopo è consentire agli sviluppatori di scrivere i componenti una volta e utilizzarli ovunque, ad esempio in Omi, React, Preact, Vue.js o Angular. La scrittura dei componenti Omi è molto intuitiva e priva di quasi tutto il boilerplate.

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

Omiu è una libreria di componenti UI cross-frame (open source su GitHub) sviluppata su Omi, che genera elementi personalizzati dei componenti web standard.

Demo del framework Omiu che mostra i componenti relativi ai moduli, ovvero gli switch.
L'app di dimostrazione di Omiu che mostra gli switch.

WePY

WePY è un framework che consente alle mini app di supportare lo sviluppo componentizzato. Grazie alla precompilazione, gli sviluppatori possono scegliere il proprio stile di sviluppo preferito per sviluppare mini app. L'ottimizzazione dettagliata del framework e l'introduzione di Promised e funzioni asincrone rendono lo sviluppo di progetti di mini app più facile ed efficiente. Allo stesso tempo, WePY è anche un framework in crescita, che ha ampiamente assorbito alcuni strumenti di frontend ottimizzati, concetti e idee di progettazione di framework, principalmente da 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>
Pagina di documentazione &quot;Introduzione&quot; di WePY che mostra i primi passaggi per iniziare.
Documentazione introduttiva di WePY.

vConsole

Il progetto vConsole fornisce uno strumento per sviluppatori frontend leggero ed estensibile per le pagine web mobile. Offre un debugger simile a DevTools che può essere iniettato direttamente nelle app web e nelle mini app. Una demo mostra le opportunità. vConsole include schede per i log, il sistema, la rete, gli elementi e l'archiviazione.

App demo vConsole. vConsole si apre in basso e contiene schede per log, sistema, rete, elementi e spazio di archiviazione.
App demo vConsole che mostra Explorer elementi.

weweb

Il progetto weweb (open source su GitHub) è il framework frontend sottostante del framework di mini app Hera che dichiara di essere compatibile con la sintassi delle mini app WeChat, in modo da poter scrivere applicazioni web come mini app. La documentazione promette che, se hai già una mini app, puoi eseguirla nel browser grazie a weweb. Nei miei esperimenti, questo non ha funzionato in modo affidabile per le mini app attuali, molto probabilmente perché il progetto non ha ricevuto aggiornamenti di recente, il che ha portato il compilatore a perdere le modifiche nella piattaforma WeChat.

Documentazione del framework della mini app Hera che elenca le API WeChat che supporta, come &quot;wx.request&quot;, &quot;wx.uploadFile&quot; e così via.
Documentazione del framework Hera mini app che mostra l'elenco delle API WeChat supportate.
La mini app demo weweb compilata con weweb per l&#39;esecuzione nel browser che mostra gli elementi del modulo.
La mini app demo di weweb compilata con weweb per l'esecuzione nel browser.

Ringraziamenti

Questo articolo è stato esaminato da Joe Medley, Kayce Basques, Milica Mihajlija, Alan Kent, e Keith Gu.