DEV Community

Cover image for QuickUI: 輕量化前端框架
邱敬幃 Pardn Chiu
邱敬幃 Pardn Chiu

Posted on

QuickUI: 輕量化前端框架

原名:PDQuickUI,自 0.6.0 版本起更名為 QuickUI
QuickUI 是一個純 JavaScript 開發的前端渲染框架。通過整合虛擬 DOM 技術提升渲染效能,實現快速的數據響應和自動更新。

核心特色

高效虛擬 DOM

  • 透過精準的差異比對算法實現高效 DOM 更新
  • 智慧屬性更新系統,只更新發生變化的值
  • 智能子節點對比機制,最小化 DOM 操作

響應式數據處理

  • 深度數據監控系統,確保數據變更即時反映
  • 數據變更時自動更新 UI,無需手動操作
  • 智慧緩存系統避免不必要的重複渲染
  • 支援巢狀數據結構的響應式處理

進階模板功能

  • 內建多語系(i18n)支援,輕鬆實現國際化
  • 支援動態載入模板並非同步處理
  • 強大的表達式系統,支援計算、日期和文字處理
  • 完整的指令系統實現靈活的 DOM 操作

效能優化設計

  • 圖片和 SVG 內容採用懶加載技術,提升載入速度
  • 極小的檔案體積且無外部依賴
  • 智慧事件委派和資源清理機制,優化記憶體使用

文件

安裝方式

從 npm 安裝

npm i @pardnchiu/quickui
Enter fullscreen mode Exit fullscreen mode

從 CDN 引入

引入 QuickUI 套件

<!-- 0.6.0 版本以上 -->
<script src="https://cdn.jsdelivr.net/npm/@pardnchiu/quickui@[VERSION]/dist/QuickUI.js"></script>

<!-- 0.5.4 版本以下 -->
<script src="https://cdn.jsdelivr.net/npm/pdquickui@[VERSION]/dist/PDQuickUI.js"></script>
Enter fullscreen mode Exit fullscreen mode

Module 版本

// 0.6.0 版本以上
import { QUI } from "https://cdn.jsdelivr.net/npm/@pardnchiu/quickui@[VERSION]/dist/QuickUI.esm.js";

// 0.5.4 版本以下
import { QUI } from "https://cdn.jsdelivr.net/npm/pdquickui@[VERSION]/dist/PDQuickUI.module.js";
Enter fullscreen mode Exit fullscreen mode

使用方法

初始化 QUI

const app = new QUI({
    id: "", // 指定渲染元素
    data: {
        // 自訂 DATA
    },
    event: {
        // 自訂 EVENT
    },
    when: {
        before_render: function () {
            // 停止渲染
        },
        rendered: function () {
            // 已渲染
        },
        before_update: function () {
            // 停止更新
        },
        updated: function () {
            // 已更新
        },
        before_destroy: function () {
            // 停止銷毀
        },
        destroyed: function () {
            // 已銷毀
        }
    }
});
Enter fullscreen mode Exit fullscreen mode

屬性概覽

文字與內容

屬性 使用場景 範例
{{ value }} 動態文字內容 <p>{{ userName }}</p> 顯示使用者名稱
:html 原始 HTML 插入 <div :html="richContent"></div> 渲染格式化內容

模板載入

屬性 使用場景 範例
:path 外部模板載入 <temp :path="'./templates/header.html'"></temp> 載入頁首元件

列表與迭代

屬性 使用場景 範例
:for 陣列/物件迭代 <li :for="item in items">{{ item.name }}</li> 渲染列表項目

條件渲染

屬性 使用場景 範例
:if 條件顯示 <div :if="isLoggedIn">歡迎!</div>
:else-if/:elif 次要條件 <div :elif="isPending">載入中...</div>
:else 預設內容 <div :else>請登入</div>

表單綁定

屬性 使用場景 範例
:model 雙向資料綁定 <input :model="userInput"> 與資料同步

樣式與動畫

屬性 使用場景 範例
:animation 過渡效果 <div :animation="fade-in">內容</div>
:[css] 動態樣式 <div :background-color="bgColor">樣式內容</div>

動態屬性

屬性 使用場景 範例
:[attr] 動態屬性 <img :src="imageUrl" :alt="imageDesc">

事件處理

屬性 使用場景 範例
@[event] 事件監聽器 <button @click="handleClick">點擊我</button>

授權條款

本專案採用類 MIT 授權,但僅提供混淆後的程式碼:

  • 與 MIT 相同:可自由使用、修改、再散布,包含商業用途
  • 主要差異:預設僅提供混淆版程式碼,原始碼需另外購買
  • 授權內容:必須保留原始版權聲明 (與 MIT 相同)

詳細條款與條件請參閱軟體使用協議

開發者

邱敬幃


©️ 2023 邱敬幃 Pardn Chiu

Top comments (0)

nextjs tutorial video

Youtube Tutorial Series 📺

So you built a Next.js app, but you need a clear view of the entire operation flow to be able to identify performance bottlenecks before you launch. But how do you get started? Get the essentials on tracing for Next.js from @nikolovlazar in this video series 👀

Watch the Youtube series