Проекты мини-приложений с открытым исходным кодом

kbone

Проект kbone ( с открытым исходным кодом на GitHub ) реализует адаптер, который имитирует среду браузера на уровне адаптации, так что код, написанный для веб-разработки, может работать без изменений в мини-приложении. Существует несколько стартовых шаблонов (среди них Vue , React и Preact ), которые упрощают процесс адаптации для веб-разработчиков, переходящих с этих фреймворков.

Новый проект можно создать с помощью инструмента kbone-cli . Мастер запрашивает, с каким фреймворком инициализировать проект. Приведенный ниже фрагмент кода демонстрирует работу Preact. В приведенном ниже фрагменте кода команда mp собирает мини-приложение, команда web собирает веб-приложение, а build создает рабочее веб-приложение.

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

Приведённый ниже фрагмент кода демонстрирует простой компонент счётчика, который затем изоморфно отображается в мини-приложении и веб-приложении. Накладные расходы мини-приложения значительны, судя по структуре 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;
Демонстрационное приложение на основе шаблона Preact kbone открылось в инструментах разработчика WeChat. Анализ структуры DOM показывает значительные накладные расходы по сравнению с веб-приложением.
Демонстрационное приложение на основе шаблона Preact kbone, открытое в инструментах разработчика WeChat. Обратите внимание на сложную структуру DOM и на то, что кнопки «плюс» и «минус» на самом деле не являются элементами <button> .
Демонстрационное приложение на основе шаблона Preact kbone открылось в веб-браузере. Анализ структуры DOM показывает ожидаемую разметку, основанную на коде компонента Preact.
Демонстрационное приложение на основе шаблона Preact kbone открылось в веб-браузере. Обратите внимание на структуру DOM.

kbone-ui

Проект kbone-ui ( с открытым исходным кодом на GitHub ) — это UI-фреймворк, который упрощает как разработку мини-приложений, так и разработку на Vue.js с помощью kbone. Компоненты kbone-ui имитируют внешний вид и функциональность встроенных компонентов мини-приложений WeChat (см. также Компоненты выше). Демонстрационный пример , работающий непосредственно в браузере, позволяет изучить доступные компоненты.

Демонстрация фреймворка kbone-ui, показывающая компоненты, связанные с формами, такие как радиокнопки, переключатели, поля ввода и метки.
Демонстрационный пример kbone-ui, показывающий компоненты, связанные с формами.

WeUI

WeUI — это набор базовых библиотек стилей, соответствующих стандартному визуальному интерфейсу WeChat. Официальная команда дизайнеров WeChat разработала дизайн внутренних веб-страниц и мини-приложений WeChat, чтобы сделать восприятие пользователями интерфейса более единообразным. Он включает такие компоненты, как button , cell , dialog , progress , toast , article , actionsheet и icon . Существуют различные версии WeUI, например, weui-wxss для мини-приложений WeChat, оформленных с помощью WXSS (см. раздел «Стилизация» выше), weui.js для веб-приложений и react-weui для компонентов WeChat React.

Демонстрация фреймворка WeUI, показывающая компоненты, связанные с формами, а именно переключатели.
Демонстрационное приложение WeUI, демонстрирующее переключатели.

Оми

Omi — это самопровозглашенный кроссфреймворк для фронтенда ( с открытым исходным кодом на GitHub ). Он объединяет веб-компоненты, JSX, виртуальный DOM, функциональный стиль, наблюдатель или прокси в один фреймворк, отличающийся небольшим размером и высокой производительностью. Его цель — позволить разработчикам писать компоненты один раз и использовать их везде, например, в Omi, React, Preact, Vue.js или Angular. Написание компонентов Omi очень интуитивно понятно и практически лишено шаблонного кода.

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 — это кроссплатформенная библиотека компонентов пользовательского интерфейса ( с открытым исходным кодом на GitHub ), разработанная на основе Omi, которая выводит пользовательские элементы стандартных веб-компонентов.

Демонстрация фреймворка Omiu, показывающая компоненты, связанные с формами, а именно переключатели.
Демонстрационное приложение Omiu, демонстрирующее работу переключателей.

ВеПИ

WePY — это фреймворк, позволяющий создавать мини-приложения с использованием компонентной разработки. Благодаря предварительной компиляции разработчики могут выбрать наиболее подходящий для них стиль разработки мини-приложений. Детальная оптимизация фреймворка, а также использование промисов и асинхронных функций делают разработку мини-приложений проще и эффективнее. В то же время WePY — это развивающийся фреймворк, который во многом перенял оптимизированные инструменты для фронтенда, а также концепции и идеи проектирования фреймворков, в основном из 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>
На странице документации WePY «Начало работы» показаны первые шаги для запуска программы.
Документация WePY по началу работы.

vConsole

Проект vConsole предоставляет легковесный, расширяемый инструмент для фронтенд-разработки мобильных веб-страниц. Он предлагает отладчик, похожий на DevTools, который можно внедрять непосредственно в веб-приложения и мини-приложения. Демонстрация показывает открывающиеся возможности. vConsole включает вкладки для журналов, системы, сети, элементов и хранилища.

Демонстрационное приложение vConsole. Внизу открывается vConsole, и в ней есть вкладки для журналов, системы, сети, элементов и хранилища.
Демонстрационное приложение vConsole, показывающее обозреватель элементов.

веб

Проект weweb ( с открытым исходным кодом на GitHub ) — это базовый фронтенд-фреймворк для фреймворка мини-приложений Hera , который, как утверждается, совместим с синтаксисом мини-приложений WeChat, поэтому вы можете писать веб-приложения в стиле мини-приложений. В документации обещается, что если у вас уже есть мини-приложение, вы можете запустить его в браузере благодаря weweb. В моих экспериментах это не работало надежно для существующих мини-приложений, скорее всего, потому что проект давно не обновлялся, из-за чего его компилятор пропускал изменения в платформе WeChat.

Документация по фреймворку мини-приложений Hera, содержащая список поддерживаемых API WeChat, таких как `wx.request`, `wx.uploadFile` и т. д.
В документации к фреймворку Hera mini app представлен список поддерживаемых API WeChat.
Демонстрационное мини-приложение weweb, скомпилированное с помощью weweb для работы в браузере и отображения элементов форм.
Демонстрационное мини-приложение weweb, скомпилированное с помощью weweb для работы в браузере.

Благодарности

Данная статья была рецензирована Джо Медли , Кейси Баскесом , Милицей Михайловией , Аланом Кентом и Китом Гу.