」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 介紹 Origami-State-Manager (OSM):最少樣板的輕量級狀態管理庫

介紹 Origami-State-Manager (OSM):最少樣板的輕量級狀態管理庫

發佈於2024-08-30
瀏覽:535

Introducing Origami-State-Manager (OSM): A Lightweight State Management Library with Minimal Boilerplate

管理 JavaScript 應用程式中的全域狀態,尤其是當您需要跨 React 和非 React 上下文存取它時,可能具有挑戰性。現有的函式庫通常涉及繁重的設定、不必要的複雜性,並且與 React 緊密耦合。但是,如果您可以透過摺紙的優雅和簡單來管理狀態呢?輸入 摺紙狀態管理器 (OSM).


什麼是OSM?

Origami-State-Manager (OSM),發音為“棒極了”, 是一個輕量級狀態管理庫,設計簡單、靈活且可擴展。受日本摺紙藝術(將一張普通的紙轉變成複雜的設計)的啟發,OSM 使您能夠以同樣優雅的方式管理應用程式的全局狀態。就像紙張一樣,它非常輕巧,非常適合注重簡單性和性能的應用程式。


為什麼選擇 OSM?

建立 OSM 的旅程始於尋找一種解決方案,該解決方案可以:

  • 最小化樣板檔案:狀態管理應該簡單明了,並且需要盡可能少的設定。
  • 多才多藝:在 React 和非 React 上下文中無縫工作。
  • 保持輕量級:避免使用不必要的代碼使您的包變得臃腫。
  • 保持靈活性和可擴展性:在保持效能的同時輕鬆適應不同的專案需求。

如果您厭倦了過度設計的解決方案,並且想要正常工作的東西,OSM 可能是您需要的「很棒」工具。


主要特點

  • 最小設定:使用乾淨、直覺的 API 快速定義和管理您的全域狀態。
  • React 和非 React 相容性: 可以從 React 元件和普通 JavaScript 函數存取和更新狀態。
  • 輕量級: OSM 輕如紙,讓您的應用程式快速回應。
  • 持久化選項: 透過簡單的配置使您的狀態持久化。

OSM 入門

準備好為您的應用程式添加一些 OSM 功能了嗎?開始方法如下:

1。安裝庫:

npm install origami-state-manager

2.創建商店:

商店是全球所有狀態所在的地方。設定一個就像將初始狀態值傳遞給 createStore 一樣簡單:

// store.ts
import { createStore } from "origami-state-manager";

const initialValues = {
  origami: 0,
  osmness: 0,
};

export const store = createStore(initialValues);

您也可以透過提供商店名稱來使商店持久化:

export const store = createStore(initialValues, "myOSMness");

3.存取與更新狀態:

對於React元件,使用useStateListener鉤子來存取和更新狀態:

import { store } from "./store";
import { useStateListener } from "origami-state-manager";

function OrigamiComponent() {
  const origami = useStateListener("origami", store);

  return (
    
  );
}

4。非 React 函數中的存取狀態:

您也可以輕鬆地使用 React 以外的狀態:

// utils.js

function getProfile() {
  let profile = store["profile"].value;
  if (!profile) {
    store["profile"].value = {};
  }

  return store["profile"].value;
}

用例

OSM 非常適合以下場景:

  • 您需要一個輕量級解決方案來進行簡單的全域狀態管理。
  • 您的專案涉及必須共享全域狀態的 React 和非 React 邏輯。
  • 您希望避免 Redux 或 MobX 等大型函式庫的複雜性。

警告:前方有一些麻煩!

OSM 仍處於早期階段,尚未在所有環境中經過充分測試。雖然它非常適合小型項目和簡單的國家需求,但建議在複雜場景中使用它時保持謹慎。如果您確實遇到任何問題,請報告它們,以便圖書館可以繼續改進。


為 OSM 做出貢獻

有興趣幫助讓 OSM 變得更出色嗎?歡迎貢獻!查看貢獻指南以開始使用。


保持更新

變更日誌定期更新所有新的變更和改進。


最後的想法

Origami-State-Manager (OSM) 旨在為全域狀態管理提供一個簡單且強大的解決方案,而不會造成臃腫。透過保持最少的設定和較高的效能,OSM 使您能夠專注於建置功能,而不是與狀態複雜性作鬥爭。

試試看,在您的專案中體驗新水準的OSM 性

立即開始使用 OSM:npm:origami-state-manager


版本聲明 本文轉載於:https://dev.to/abdulzahir/introducing-origami-state-manager-osm-a-lightweight-state-management-library-with-minimal-boilerplate-5b7n?1如有侵犯,請聯絡study_golang @163.com刪除
最新教學 更多>
  • 如何使用 Vite 和 React 建立更快的單頁應用程式 (SPA)
    如何使用 Vite 和 React 建立更快的單頁應用程式 (SPA)
    在現代 Web 開發領域,單頁應用程式 (SPA) 已成為建立動態、快速載入網站的熱門選擇。 React 是用於建立使用者介面的最廣泛使用的 JavaScript 程式庫之一,使 SPA 開發變得簡單。然而,如果你想進一步提高你的開發速度和應用程式的整體效能,Vite 是一個可以發揮重大作用的工具。...
    程式設計 發佈於2024-11-06
  • JavaScript 中字串連接的逐步指南
    JavaScript 中字串連接的逐步指南
    JavaScript 中的字串連接 是將兩個或多個字串連接起來形成單一字串的過程。本指南探討了實現此目的的不同方法,包括使用運算子、= 運算子、concat() 方法和範本文字。 每種方法都簡單有效,允許開發人員為各種用例(例如用戶訊息或 URL)建立動態字串。 模板文字尤其為字串連接提供了現...
    程式設計 發佈於2024-11-06
  • Web UX:向使用者顯示有意義的錯誤
    Web UX:向使用者顯示有意義的錯誤
    擁有一個用戶驅動且用戶友好的網站有時可能會很棘手,因為它會讓整個開發團隊將更多時間花在不會為功能和核心業務增加價值的事情上。然而,它可以在短期內幫助用戶並在長期內增加價值。對截止日期嚴格要求的專案經理可能會低估長期的附加價值。我不確定蘋果網站團隊是否屬實,但他們缺少一些出色的使用者體驗。 最近,我...
    程式設計 發佈於2024-11-06
  • 小型機械手
    小型機械手
    小型機械手臂新重大發布 代碼已完全重構並編碼為屬性操作的新支援 這是一個操作範例: $classFile = \Small\ClassManipulator\ClassManipulator::fromProject(__DIR__ . '/../..') ->getC...
    程式設計 發佈於2024-11-06
  • 機器學習專案中有效的模型版本管理
    機器學習專案中有效的模型版本管理
    在机器学习 (ML) 项目中,最关键的组件之一是版本管理。与传统软件开发不同,管理机器学习项目不仅涉及源代码,还涉及随着时间的推移而演变的数据和模型。这就需要一个强大的系统来确保所有这些组件的同步和可追溯性,以管理实验、选择最佳模型并最终将其部署到生产中。在这篇博文中,我们将探索有效管理 ML 模型...
    程式設計 發佈於2024-11-06
  • 如何在 PHP 中保留鍵的同時按列值對關聯數組進行分組?
    如何在 PHP 中保留鍵的同時按列值對關聯數組進行分組?
    在保留鍵的同時按列值對關聯數組進行分組考慮一個關聯數組的數組,每個數組代表一個具有“id”等屬性的實體和“名字”。面臨的挑戰是根據特定列“id”對這些數組進行分組,同時保留原始鍵。 為了實現這一點,我們可以使用 PHP 的 foreach 迴圈來迭代陣列。對於每個內部數組,我們提取“id”值並將其用...
    程式設計 發佈於2024-11-06
  • 如何在 Gradle 中排除特定的傳遞依賴?
    如何在 Gradle 中排除特定的傳遞依賴?
    用Gradle 排除傳遞依賴在Gradle 中,使用應用程式外掛程式產生jar 檔案時,可能會遇到傳遞依賴,您可能想要排除。為此,可以使用排除方法。 排除的預設行為最初,嘗試排除 org.slf4j:slf4j- 的所有實例log4j12 使用以下程式碼:configurations { run...
    程式設計 發佈於2024-11-06
  • 極簡生活的藝術
    極簡生活的藝術
    什麼是極簡生活? 極簡生活是一種有意減少擁有的財產數量和生活中雜亂的生活方式。這不僅是為了整理您的空間,也是為了簡化您的生活,專注於真正重要的事情,並減少干擾。 為什麼採用極簡主義? 頭腦清晰:擁有的東西越少,需要擔心的事情就越少,頭腦就越清晰。 財務自由:透過...
    程式設計 發佈於2024-11-06
  • Java 混淆之謎
    Java 混淆之謎
    Come play with our Java Obfuscator & try to deobfuscate this output. The price is the free activation code! Obfuscated Java code Your goal...
    程式設計 發佈於2024-11-06
  • 如何在沒有圖像的 Outlook 電子郵件中建立圓角?
    如何在沒有圖像的 Outlook 電子郵件中建立圓角?
    在沒有圖像的 Outlook 中設定圓角樣式使用 CSS 在電子郵件用戶端中建立圓角可以非常簡單。但是,使用 CSS border-radius 屬性的傳統方法在 Microsoft Outlook 中不起作用。在設計具有圓角元素的電子郵件時,此限制提出了挑戰。 不用擔心,有一個解決方案可以讓您在 ...
    程式設計 發佈於2024-11-06
  • 如何在Python中高效比較字典中相等的鍵值對?
    如何在Python中高效比較字典中相等的鍵值對?
    比較字典是否相等的鍵值對在Python中,比較字典以檢查鍵值對是否相等是一項常見任務。一種方法是迭代字典並使用 zip 和 iteritems 方法比較每一對字典。然而,還有一些替代方法可以提供更好的程式碼優雅性。 其中一種方法是使用字典理解來建立僅包含共享鍵值對的新字典。代碼如下:shared_i...
    程式設計 發佈於2024-11-06
  • 如何在 PHP 中使用數組函數向左旋轉數組元素?
    如何在 PHP 中使用數組函數向左旋轉數組元素?
    在PHP 中向左旋轉數組元素在PHP 中旋轉數組,將第一個元素移動到最後一個元素並重新索引數組,可以使用PHP 的array_push() 和array_shift() 函數組合來實現。 PHP 函數:PHP 沒有專門用於旋轉的內建函數數組。但是,以下程式碼片段示範如何模擬所需的旋轉行為:$numb...
    程式設計 發佈於2024-11-06
  • 如何解決Java存取檔案時出現「系統找不到指定的路徑」錯誤?
    如何解決Java存取檔案時出現「系統找不到指定的路徑」錯誤?
    解決Java 中遇到「系統找不到指定的路徑」時的檔案路徑問題在Java 專案中,嘗試存取文字時遇到錯誤來自指定相對路徑的檔案。此錯誤是由於 java.io.File 類別無法定位指定路徑而產生的。 要解決此問題,建議從類別路徑中檢索文件,而不是依賴文件系統。透過這樣做,您可以消除相對路徑的需要,並確...
    程式設計 發佈於2024-11-06
  • Laravel 中的 defer() 函數如何運作?
    Laravel 中的 defer() 函數如何運作?
    Taylor Otwell 最近宣布了 Laravel 中的新函數 defer()。這只是對 defer() 函數如何運作以及使用它可能遇到的問題進行非常基本的概述。 找出問題 還記得您曾經需要從 API 獲取某些內容,然後在幕後執行一些用戶不關心但仍在等待的操作的路由嗎?是的,我們都至少經歷過一...
    程式設計 發佈於2024-11-06
  • 在 Python Notebook 中探索使用 PySpark、Pandas、DuckDB、Polars 和 DataFusion 的資料操作
    在 Python Notebook 中探索使用 PySpark、Pandas、DuckDB、Polars 和 DataFusion 的資料操作
    Apache Iceberg Crash Course: What is a Data Lakehouse and a Table Format? Free Copy of Apache Iceberg the Definitive Guide Free Apache Iceberg Crash ...
    程式設計 發佈於2024-11-06

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3