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

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) הוא מסגרת ממשק משתמש שמסייעת בפיתוח אפליקציות מיני ובפיתוח 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 (ראו סגנון למעלה),‏ weui.js לאפליקציות אינטרנט ו-react-weui לרכיבי WeChat React.

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

Omi

Omi הוא פריימוורק (framework) של קוד פתוח (ב-GitHub) שמוגדר כפריימוורק חוצה-פלטפורמות של חזית האתר. הוא משלב רכיבי אינטרנט, JSX, ‏ Virtual DOM, סגנון פונקציונלי, observer או Proxy במסגרת אחת עם גודל קטן וביצועים גבוהים. המטרה של הממשק היא לאפשר למפתחים לכתוב רכיבים פעם אחת ולהשתמש בהם בכל מקום, למשל ב-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 היא גם framework צומחת, שספגה במידה רבה כמה כלים אופטימיזציה לחלק הקדמי של האתר ורעיונות ומושגים לעיצוב framework, בעיקר מ-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>
דף התיעוד &#39;תחילת העבודה&#39; של WePY עם השלבים הראשונים להתחלת העבודה.
מאמרי עזרה בנושא תחילת העבודה עם WePY.

vConsole

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

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

weweb

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

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

תודות

המאמר הזה נבדק על ידי ג'ו מדלי, קייסי בסקס, מיליקה מיחייליה, אלן קנט וקית' גו.