Dự án nguồn mở của ứng dụng nhỏ

kbone

Dự án kbone (nguồn mở trên GitHub) triển khai một bộ chuyển đổi mô phỏng môi trường trình duyệt trong lớp thích ứng, nhờ đó, mã được viết cho web có thể chạy mà không cần thay đổi trong ứng dụng mini. Một số mẫu khởi động (trong đó có Vue, ReactPreact) giúp nhà phát triển web có trải nghiệm làm quen dễ dàng hơn từ các khung này.

Bạn có thể tạo một dự án mới bằng công cụ kbone-cli. Một trình hướng dẫn sẽ hỏi bạn muốn sử dụng khung nào để bắt đầu dự án. Đoạn mã dưới đây cho thấy bản minh hoạ Preact. Trong đoạn mã dưới đây, lệnh mp tạo ứng dụng nhỏ, lệnh web tạo ứng dụng web và build tạo ứng dụng web chính thức.

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

Đoạn mã dưới đây cho thấy một thành phần bộ đếm đơn giản, sau đó được hiển thị đồng dạng trong một ứng dụng mini và một ứng dụng web. Mức hao tổn của ứng dụng mini là đáng kể, chỉ xét từ cấu trúc 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;
Ứng dụng minh hoạ mẫu Preact kbone đã mở trong Công cụ cho nhà phát triển của WeChat. Việc kiểm tra cấu trúc DOM cho thấy mức hao tổn đáng kể so với ứng dụng web.
Ứng dụng minh hoạ mẫu kbone Preact đã mở trong WeChat DevTools. Hãy lưu ý đến cấu trúc DOM phức tạp và cách nút dấu cộng và dấu trừ thực sự không phải là phần tử <button>.
Ứng dụng minh hoạ mẫu kbone Preact đã mở trong trình duyệt web. Việc kiểm tra cấu trúc DOM cho thấy mã đánh dấu dự kiến dựa trên mã thành phần Preact.
Ứng dụng minh hoạ mẫu kbone Preact đã mở trong trình duyệt web. Lưu ý cấu trúc DOM.

giao diện người dùng kbone

Dự án kbone-ui (nguồn mở trên GitHub) là một khung giao diện người dùng hỗ trợ cả việc phát triển ứng dụng mini cũng như phát triển Vue.js bằng kbone. Các thành phần kbone-ui mô phỏng giao diện của các thành phần ứng dụng mini tích hợp sẵn của WeChat (cũng xem Thành phần ở trên). Bản minh hoạ chạy trực tiếp trong trình duyệt cho phép bạn khám phá các thành phần có sẵn.

Bản minh hoạ khung kbone-ui cho thấy các thành phần liên quan đến biểu mẫu như nút chọn, công tắc, phương thức nhập và nhãn.
Bản minh hoạ kbone-ui cho thấy các thành phần liên quan đến biểu mẫu.

WeUI

WeUI là một bộ thư viện kiểu cơ bản nhất quán với trải nghiệm hình ảnh mặc định của WeChat. Nhóm thiết kế chính thức của WeChat đã điều chỉnh thiết kế cho các trang web nội bộ của WeChat và ứng dụng nhỏ của WeChat để người dùng có cảm nhận đồng nhất hơn khi sử dụng. Gói này bao gồm các thành phần như button, cell, dialog, progress, toast, article, actionsheeticon. Có nhiều phiên bản WeUI như weui-wxss dành cho các ứng dụng WeChat mini được tạo kiểu bằng WXSS (xem phần Tạo kiểu ở trên), weui.js dành cho ứng dụng web và react-weui dành cho các thành phần WeChat React.

Bản minh hoạ khung WeUI cho thấy các thành phần liên quan đến biểu mẫu, cụ thể là các nút chuyển.
Ứng dụng minh hoạ WeUI hiển thị các nút chuyển.

Omi

Omi là một khung đa khung giao diện người dùng tự xác nhận (nguồn mở trên GitHub. Công cụ này hợp nhất các Thành phần web, JSX, DOM ảo, kiểu chức năng, trình quan sát hoặc Proxy thành một khung có kích thước nhỏ và hiệu suất cao. Mục đích của thư viện này là cho phép nhà phát triển viết thành phần một lần và sử dụng thành phần đó ở mọi nơi, chẳng hạn như Omi, React, Preact, Vue.js hoặc Angular. Việc viết các thành phần Omi rất trực quan và không có hầu hết mã nguyên mẫu.

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 là một thư viện thành phần giao diện người dùng trên nhiều khung (nguồn mở trên GitHub) được phát triển dựa trên Omi, giúp xuất các phần tử tuỳ chỉnh của các thành phần web tiêu chuẩn.

Bản minh hoạ khung Omiu cho thấy các thành phần liên quan đến biểu mẫu, cụ thể là các nút chuyển.
Ứng dụng minh hoạ Omiu hiển thị các nút chuyển.

WePY

WePY là một khung cho phép các ứng dụng mini hỗ trợ phát triển thành phần. Thông qua tính năng biên dịch trước, nhà phát triển có thể chọn kiểu phát triển mà họ yêu thích để phát triển ứng dụng mini. Việc tối ưu hoá chi tiết khung này cũng như giới thiệu Lời hứa và các hàm không đồng bộ đều giúp việc phát triển các dự án ứng dụng nhỏ trở nên dễ dàng và hiệu quả hơn. Đồng thời, WePY cũng là một khung phát triển, phần lớn đã hấp thụ một số công cụ giao diện người dùng được tối ưu hoá và các khái niệm và ý tưởng thiết kế khung, chủ yếu là từ 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>
Trang tài liệu &quot;bắt đầu&quot; của WePY cho thấy các bước đầu tiên để bắt đầu.
Tài liệu "bắt đầu sử dụng" WePY.

vConsole

Dự án vConsole cung cấp một công cụ nhẹ, có thể mở rộng cho nhà phát triển giao diện người dùng cho các trang web dành cho thiết bị di động. Công cụ này cung cấp một trình gỡ lỗi giống như DevTools có thể được chèn trực tiếp vào ứng dụng web và ứng dụng mini. Một bản minh hoạ sẽ giới thiệu các cơ hội này. vConsole bao gồm các thẻ cho nhật ký, hệ thống, mạng, phần tử và bộ nhớ.

Ứng dụng minh hoạ của vConsole. vConsole mở ở dưới cùng và có các thẻ cho nhật ký, hệ thống, mạng, phần tử và bộ nhớ.
ứng dụng minh hoạ vConsole hiển thị trình khám phá phần tử.

weweb

Dự án weweb (nguồn mở trên GitHub) là khung giao diện người dùng cơ bản của khung ứng dụng Hera. Khung này tuyên bố tương thích với cú pháp của ứng dụng WeChat mini, vì vậy, bạn có thể viết ứng dụng web theo cách của ứng dụng mini. Tài liệu này hứa hẹn rằng nếu đã có ứng dụng mini, bạn có thể chạy ứng dụng đó trong trình duyệt nhờ weweb. Trong các thử nghiệm của tôi, phương pháp này không hoạt động đáng tin cậy đối với các ứng dụng mini hiện tại, rất có thể là do dự án chưa có bản cập nhật gần đây khiến trình biên dịch của ứng dụng bỏ lỡ các thay đổi trong nền tảng WeChat.

Tài liệu về khung ứng dụng nhỏ Hera liệt kê các API WeChat mà API này hỗ trợ, chẳng hạn như &quot;wx.request&quot;, &quot;wx.uploadFile&quot;, v.v.
Tài liệu về khung ứng dụng mini Hera cho thấy danh sách các API WeChat được hỗ trợ.
Ứng dụng minh hoạ weweb thu nhỏ được biên dịch bằng weweb để chạy trong trình duyệt hiển thị các phần tử biểu mẫu.
Ứng dụng minh hoạ weweb mini được biên dịch bằng weweb để chạy trong trình duyệt.

Lời cảm ơn

Bài viết này đã được Joe Medley, Kayce Basques, Milica Mihajlija, Alan Kent và Keith Gu xem xét.