פרויקטים של קוד פתוח למיני אפליקציות

קבון

הפרויקט 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

בקטע הקוד הבא מוצג רכיב פשוט של מונה, שמתבצע לו עיבוד תוך שמירה על המבנה (isomorphic) במיני אפליקציה ובאפליקציית אינטרנט. העלות הנוספת של המיני אפליקציה משמעותית, אם לשפוט לפי מבנה ה-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 DevTools. חשוב לשים לב למבנה ה-DOM המורכב ולהבין איך לחצני הפלוס והחיסור הם למעשה לא רכיבי <button>.
אפליקציית ההדגמה של תבנית ה-Preact kbone נפתחה בדפדפן האינטרנט. בדיקה של מבנה ה-DOM מראה את תגי העיצוב הצפויים על סמך קוד הרכיב של Preact.
אפליקציית ההדגמה של תבנית Preact kbone נפתחה בדפדפן האינטרנט. שימו לב למבנה ה-DOM.

kbone-ui

הפרויקט kbone-ui (קוד פתוח ב-GitHub) הוא מסגרת של ממשק משתמש שמאפשרת לפתח אפליקציות מיני וגם לפתח ב-Vue.js באמצעות kbone. הרכיבים של kbone-ui מחקים את המראה והתחושה של רכיבי האפליקציות המינימום המובנים של WeChat (ראו גם רכיבים למעלה). דמו שפועל ישירות בדפדפן מאפשר לכם לבדוק את הרכיבים הזמינים.

הדגמה של מסגרת ה-kbone-ui שבה מוצגים רכיבים שקשורים לטפסים כמו לחצני בחירה, מתגים, מקורות קלט ותוויות.
הדגמה של kbone-ui שמציגה רכיבים שקשורים לטופס.

WeUI

WeUI היא קבוצה של ספריות סגנון בסיסיות שתואמות לחוויית הממשק החזותי שמוגדרת כברירת מחדל ב-WeChat. צוות העיצוב הרשמי של WeChat התאים את העיצובים לדפי האינטרנט הפנימיים של WeChat ולאפליקציות המיני של WeChat כדי שהמשתמשים יקבלו חוויית שימוש אחידה יותר. הוא כולל רכיבים כמו button,‏ cell,‏ dialog,‏ progress,‏ toast,‏ article,‏ actionsheet וגם icon. קיימות גרסאות שונות של WeUI, כמו weui-wxss לאפליקציות מיני של WeChat בסגנון WXSS (ראו Styling למעלה), weui.js לאפליקציות אינטרנט ו-react-weui לרכיבי WeChat React.

הדגמה של מסגרת WeUI שמוצגים בה רכיבים שקשורים לטופס, כלומר מתגים.
אפליקציית הדגמה של WeUI שמוצגים בה מתגים.

Omi

Omi היא מסגרת חזית (frontend) שמתאימה למסגרות שונות (קוד פתוח ב-GitHub). היא ממזגת רכיבי אינטרנט, JSX, DOM וירטואלי, סגנון פונקציונלי, Viewr או Proxy ל-framework אחד, בגודל זעיר עם ביצועים גבוהים. המטרה שלו היא לאפשר למפתחים לכתוב רכיבים פעם אחת ולהשתמש בהם בכל מקום, כמו 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

Omiu היא ספרייה של רכיבי ממשק משתמש במסגרות שונות (קוד פתוח ב-GitHub) שפותחה על סמך Omi, ומפיקה רכיבים מותאמים אישית של רכיבי אינטרנט רגילים.

הדגמה של מסגרת Omiu שמציגה רכיבים שקשורים לצורה, כלומר מתגים.
אפליקציית הדגמה של Omiu שמוצגים בה מתגים.

WePY

WePY היא מסגרת שמאפשרת לאפליקציות מיני לתמוך בפיתוח מבוסס-רכיבים. באמצעות איסוף מראש, המפתחים יכולים לבחור את סגנון הפיתוח המועדף עליהם כדי לפתח מיני אפליקציות. האופטימיזציה המפורטת של המסגרת וההוספה של Promises ופונקציות אסינכרוניות מאפשרות לפתח פרויקטים של אפליקציות מיני בקלות וביעילות רבה יותר. עם זאת, 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 &#39;תחילת העבודה&#39; המציג את השלבים הראשונים בתהליך.
מסמכי תיעוד בנושא 'תחילת העבודה' ב-WePY.

vConsole

הפרויקט vConsole מספק כלי קל וניתן להרחבה למפתחים של ממשק קצה לדפי אינטרנט לנייד. הוא כולל תכונת ניפוי באגים שדומה ל-DevTools, שאפשר להחדיר ישירות לאפליקציות אינטרנט ולאפליקציות מיני. הדגמה של ההזדמנויות. ב-vConsole יש כרטיסיות ליומני מערכת, למערכת, לרשת, לרכיבים ולאחסון.

אפליקציית הדגמה של vConsole. vConsole נפתח בתחתית המסך וכולל כרטיסיות ליומני רישום, למערכת, לרשת, לרכיבים ולאחסון.
אפליקציית ההדגמה של vConsole שמציגה את סייר הרכיבים.

Weweb

הפרויקט weweb (קוד פתוח ב-GitHub) הוא מסגרת הקצה הקדמי הבסיסית של מסגרת האפליקציות המיני Hera, שנטען שהיא תואמת לתחביר של אפליקציות המיני של WeChat, כך שתוכלו לכתוב אפליקציות אינטרנט בדרך של אפליקציות מיני. במסמכי העזרה מוסבר שאם כבר יש לכם אפליקציית מיני, תוכלו להריץ אותה בדפדפן באמצעות weweb. בניסויים שלי, הפתרון הזה לא עבד בצורה מהימנה באפליקציות המיני הנוכחיות, כנראה כי לא בוצעו עדכונים בפרויקט לאחרונה, וכתוצאה מכך המהדר שלו החמיץ שינויים בפלטפורמת WeChat.

מסמכי תיעוד של מסגרת האפליקציות המיני של Hera, עם פירוט של ממשקי ה-API של WeChat שבהם היא תומכת, כמו wx.request,‏ wx.uploadFile וכו&#39;.
תיעוד של מסגרת האפליקציות המיני של Hera, שבו מוצגת רשימת ממשקי ה-API הנתמכים של WeChat.
אפליקציית המיני הדמו של weweb, שעבר הידור באמצעות weweb כדי לפעול בדפדפן ולהציג אלמנטים של טפסים.
אפליקציית המיני הדמו של weweb, שעבר הידור באמצעות weweb כדי לפעול בדפדפן.

אישורים

הבדיקה של המאמר בוצעה על ידי Joe Medley,‏ Kayce Basques,‏ Milica Mihajlija,‏ Alan Kent ו-Keith Gu.