The Codest
  • O nás
  • Služby
    • Vývoj softwaru
      • Vývoj frontendů
      • Vývoj backendu
    • Staff Augmentation
      • Vývojáři frontendů
      • Vývojáři backendu
      • Datoví inženýři
      • Cloudoví inženýři
      • Inženýři QA
      • Další
    • To Advisory
      • Audit a poradenství
  • Odvětví
    • Fintech a bankovnictví
    • E-commerce
    • Adtech
    • Healthtech
    • Výroba
    • Logistika
    • Automobilový průmysl
    • IOT
  • Hodnota za
    • CEO
    • CTO
    • Manažer dodávek
  • Náš tým
  • Case Studies
  • Vědět jak
    • Blog
    • Setkání
    • Webové semináře
    • Zdroje
Kariéra Spojte se s námi
  • O nás
  • Služby
    • Vývoj softwaru
      • Vývoj frontendů
      • Vývoj backendu
    • Staff Augmentation
      • Vývojáři frontendů
      • Vývojáři backendu
      • Datoví inženýři
      • Cloudoví inženýři
      • Inženýři QA
      • Další
    • To Advisory
      • Audit a poradenství
  • Hodnota za
    • CEO
    • CTO
    • Manažer dodávek
  • Náš tým
  • Case Studies
  • Vědět jak
    • Blog
    • Setkání
    • Webové semináře
    • Zdroje
Kariéra Spojte se s námi
Šipka zpět ZPĚT
2020-07-21
Vývoj softwaru

Funkce Vuex, které byste měli znát, pokud vám na vašem obchodě opravdu záleží

Wojciech Bak

Frontendové aplikace, zejména ty složitější, musí zpracovávat velké množství dat. Programátoři zavádějí různé návrhové vzory, aby jejich projekty byly čitelné a udržovatelné. Ve většině běžných scénářů práce s MVC chceme oddělit data od vizuálních částí aplikace.

To je důvod, proč ukládat se stala tak užitečnou. Záleží jen na vás, zda budete používat React + Redux nebo Vue + Vuex - hlavní cíl je stejný, a to udržovat data strukturovaná, dostupná a zároveň bezpečná..

V tomto článku vám ukážu několik příkladů, jak udržet sklad Vuex čistý a efektivní.

Než začneme, předpokládejme, že:

  • máte nějaké zkušenosti s moderními JavaScript,
  • v podstatě víte, co je Vue a jak se používá rekvizity, vypočtené, atd.,
  • jste obeznámeni s Vuex (akce, mutace, atd.) a chcete své aplikace vylepšit.

Vuex, stejně jako většina základních Projekty Vue, je poměrně dobře zdokumentován a v oficiálních dokumentech najdete mnoho užitečných hacků. Vybrali jsme z ní pro vás několik podstatných informací.

Základní implementace úložiště Vuex vypadá takto:

// main.js

import Vue z 'vue'
import Vuex from 'vuex'
import App from "./App";

Vue.use(Vuex)

const store = new Vuex.Store((
  state: (
    data: null;
  ),
  actions: (
      someAction: (( commit ), data) (
          commit("SOME_MUTATION", data);
      )
  ),
  mutace: (
    SOME_MUTATION (stav, data) (
        state.data = data;
    )
  ))
));

nový Vue((
  el: "#app",
  render: h => h(App),
  store
));

Když se aplikace zvětší, musíte obvykle použít směrování, některé globální směrnice, zásuvné moduly atd. To způsobuje, že main.js soubor mnohem delší a hůře čitelný. Je dobré uchovávat úložiště v externím souboru, jako například zde:

// store.js
import Vue z 'vue'
import Vuex from 'vuex'

Vue.use(Vuex);

const state = (
    data: null;
);

const actions = (
    someAction: (( commit ), data) (
        commit("SOME_MUTATION", data);
    )
);

const mutations = (
    SOME_MUTATION (state, data) (
        state.data = data;
    )
);

export default new Vuex.Store((
    state,
    actions,
    mutace
));

1. Moduly

Co byste měli dělat, když store.js soubor je obrovský a obtížně se s ním pracuje? Ve skutečnosti existuje opravdu skvělá funkce Vuex - moduly. Jsou určeny k rozdělení dat do samostatných souborů.

Představte si, že pracujete na nějaké podnikové aplikaci, ve které máte například několik domén dat:

  • uživatele (spravovat všechna oprávnění a oprávnění),
  • parametry trasy (správa globálních parametrů před požadavky na rozhraní API),
  • prodeje (pro komponentu SalesMegaChart viditelnou v měsíčním/čtvrtletním/ročním kontextu),
  • objednávky (viditelné po kliknutí na lištu SalesMegaChart).

...a možná ještě několik dalších. Nyní máte vážný důvod zavést ve svém obchodě modulárnost.

Nejprve přesuňte store.js do nově vytvořeného souboru ukládat/ a přejmenujte jej na index.js. Pokud chcete zachovat vše zabalené do modulů, můžete případně odstranit stát, akce a mutace z hlavního souboru.

// store/index.js

import Vue z 'vue'
import Vuex from 'vuex'

Vue.use(Vuex);

export default new Vuex.Store((
    modules: (
        // moduly se umístí sem
    )
));

Pak vedle souboru `store/index.js` vytvořte první modul - `store/user.js`.

import ApiService z '../services/api.service';

const state = (
    loggedIn: false,
    loginError: null,
    user: null
);

const actions = (
    login: async (( commit ), data) (
        try (
            const response = await ApiService.post('/login', data);
            const ( user ) = response.data;

            COMMIT("SAVE_USER", user);
            COMMIT("LOGIN_SUCCESS");
        ) catch (error) (
            commit("LOGIN_ERROR", chyba);
        )
    )
);

const mutations = (
    SAVE_USER (state, user) (
        state.user = user;
    ),

    LOGIN_SUCCESS (state) (
        state.loggedIn = true;
    ),

    LOGIN_ERROR (stav, chyba) (
        state.loginError = error;
        state.loggedIn = false;
    )
);

export const user (
    state,
    actions,
    mutations
)

A nyní načtěte připravený modul do hlavního souboru `store/index.js`:

vue': import Vue from 'vue'
import Vuex z 'vuex'
import ( user ) z './user';

Vue.use(Vuex);

export default new Vuex.Store((
    modules: (
        user
    )
));

Gratulujeme! Nyní máte opravdu pěkně vypadající implementaci obchodu. K datům můžete přistupovat i z komponenty (např, UserProfile.vue) takto:

<template>
    <div class="user-profile">
        <h2>(( user.name ))!</h2>
        <!-- component template goes here -->
    </div>
</template>

<script> import ( mapActions ) from 'Vuex';

    export default (
        name: 'UserProfile',

        computed: mapState((
            user: state => state.user
            // user: 'user' <-- alternative syntax
        ))
    )
</script>

2. Prostory názvů

Nyní, když víte, jak používat moduly, měli byste se také seznámit s funkcemi Vuex. jmenný prostor. V předchozím kroku jsme vytvořili store/user.js soubor s uživatel modul.

Datová struktura definovaná v user.js je přístupný z komponent, ale můžete si všimnout, že všechny uživatel data přechází přímo do globálního stát kontext, jako například zde:

vypočteno: mapState((
    user: state => state.user
    // user: 'user' <-- alternativní způsob
))

Při definování více modulů budete mít pravděpodobně zmatek v tom, který objekt pochází z kterého modulu. Pak byste měli používat moduly se jmenným prostorem a definovat je tímto způsobem:

export const user (
    namespaced: true, // <-- namespacing!
    state,
    actions,
    mutations
)

Od této chvíle budou všechny vaše uživatel data (stát proměnná z store/user.js ) se zpracovává v rámci state.user odkaz:

vypočteno: mapState((
    user: state => state.user.user
    // user: 'user/user' <-- alternativní způsob
))

O několik kroků později můžete pro komponentu dosáhnout něčeho takového:

import ( mapActions ) z 'Vuex';

exportovat výchozí (
    name: "Dashboard",

    vypočítáno: mapState((
        sales: "sales/data",
        orders: "orders/data",
        sortBy: "orders/sortBy",
        loggedIn: 'user/loggedIn'
    )),

    methods: mapActions((
        logout: 'user/logout',
        loadSales: "sales/load",
        loadOrders: "orders/load
    )),

    created() (
        if (this.loggedIn) (
            loadSales();
            loadOrders();
        )
    )
)

Bravo! Tak svěží, tak čistý... Ale nebojte se, refaktoring nikdy nekončí. Jste připraveni na další kroky?

3. Komunikace mezi moduly

V prvním kroku jsem vám ukázal nějakou akci v aplikaci uživatel modul:

const actions = (
    login: async (( commit ), data) (
        try (
            const response = await ApiService.post('/login', data);
            const ( user ) = response.data;

            COMMIT("SAVE_USER", user);
            COMMIT("LOGIN_SUCCESS");
        ) catch (error) (
            commit("LOGIN_ERROR", chyba);
        )
    )
);

V případě neúspěchu přidáváme do našeho obchodu chybu přihlášení - co bude dál?

Zde máme několik možností a výběr závisí na tom, která z nich lépe vyhovuje vašim potřebám. Nejjednodušší způsob používá v-if díky které se může zobrazit chybová zpráva, pokud se v úložišti vyskytne chyba.

<template>
    <div class="dashboard">
        <!-- dashboard component template -->
        <div
            v-if="error"
            class="error-message"
        > (( error.message )) </div>
    </div>
</template>
<script> import ( mapActions ) from 'Vuex';

export default (
    name: 'Dashboard',

    computed: mapState((
        error: "user/loginError"
    ))
)
</script>

Opět si představte, že máte mnoho modulů a každý z nich try/catch syntaxe vygeneruje novou chybu ve vašem obchodě. Je zřejmé, že tímto způsobem zneužijete pravidlo DRY.

Jak můžete své procesy zpracování chyb zobecnit?

Definujme společné a vložit do něj nějakou logiku, která by se používala globálně.

// store/common.js

const state = (
    errors: []
);

const actions = (
    error: (
        root: true,
        handler(( commit ), error) (
            commit("ERROR", error);
        )
    )
),

const mutations = (
    ERROR (stav, chyba) (
        /* tímto způsobem budeme mít nejnovější chybu na začátku seznamu */
        state.errors = [error, ...state.errors];
    ))
);

export const common (
    namespaced: true,
    state,
    mutations
)

Nyní můžeme přizpůsobit uživatel (a také další moduly):

zkuste (
    // nějaká akce
)catch (error) (
    commit("common/ERROR", error, ( root: true ));
)

nebo elegantnějším způsobem pomocí naší globální akce:

try (
    // nějaká akce
) catch (error) (
    dispatch("error", error);
)

Tato syntaxe odevzdat a odeslání volání se zdá být samozřejmé, ale o těchto tricích si můžete přečíst více. zde.

Když máte všechny chyby na jednom místě, můžete je snadno načíst do svého počítače. Přístrojová deska součást:

vypočteno: mapState((
    chyby: 'common/errors'
)),

watch: (
    /* tato funkce bude vyvolána po každé mutaci "common/ERROR", kdy budeme do úložiště přidávat pouze nové chyby, jednu po druhé */
    errors() (
        this.showErrorMessage(this.errors[0]);
    )
)

Předchozí příklad s společné Modul pro zpracování chyb je již efektivním řešením, ale můžete jít ještě dál.

Jak vidíte, sledujeme změny v oblasti společné/chybné pole v obchodě. V takových případech, kdy potřebujete určit nějakou akci na konkrétní mutaci, můžete použít funkci Zásuvné moduly Vuex nebo dokonce komponenty vyššího řádu (HOC).

Zásuvným modulům a HOC se budu věnovat v dalším článku. Zatím vám děkuji za přečtení tohoto příspěvku a doufám, že se vám připravené příklady líbily.

Zůstaňte naladěni a pokračujte v kódování!

Přečtěte si více:

– Jak vylepšit aplikace Vue.js? Několik praktických tipů

– GraphQL: zkušenosti z výroby

– Shopify, Spree nebo Solidus? Podívejte se, proč vám Ruby on Rails může pomoci s vývojem vašeho elektronického obchodu.

Související články

Ilustrace zdravotnické aplikace pro chytré telefony s ikonou srdce a rostoucím zdravotním grafem, označená logem The Codest, která představuje digitální zdraví a řešení HealthTech.
Vývoj softwaru

Softwarové vybavení pro zdravotnictví: a případy použití

Nástroje, na které se dnes zdravotnické organizace spoléhají, se v ničem nepodobají papírovým kartám z doby před desítkami let. zdravotnický software dnes podporuje zdravotnické systémy, péči o pacienty a moderní poskytování zdravotní péče v klinických a...

NEJKRÁSNĚJŠÍ
Abstraktní ilustrace klesajícího sloupcového grafu se stoupající šipkou a zlatou mincí symbolizující efektivitu nákladů nebo úspory. V levém horním rohu se zobrazuje logo The Codest se sloganem "In Code We Trust" na světle šedém pozadí.
Vývoj softwaru

Jak rozšířit tým vývojářů bez ztráty kvality produktu

Zvětšujete svůj vývojový tým? Zjistěte, jak růst, aniž byste museli obětovat kvalitu produktu. Tento průvodce se zabývá příznaky, že je čas na škálování, strukturou týmu, najímáním zaměstnanců, vedením a nástroji - a také tím, jak může The Codest...

NEJKRÁSNĚJŠÍ
Vývoj softwaru

Vytváření webových aplikací odolných vůči budoucnosti: postřehy týmu odborníků The Codest

Zjistěte, jak společnost The Codest vyniká při vytváření škálovatelných, interaktivních webových aplikací pomocí nejmodernějších technologií, které poskytují bezproblémové uživatelské prostředí na všech platformách. Zjistěte, jak naše odborné znalosti podporují digitální transformaci a obchodní...

NEJKRÁSNĚJŠÍ
Vývoj softwaru

10 nejlepších lotyšských společností zabývajících se vývojem softwaru

V našem nejnovějším článku se dozvíte o nejlepších lotyšských společnostech zabývajících se vývojem softwaru a jejich inovativních řešeních. Zjistěte, jak mohou tito technologičtí lídři pomoci pozvednout vaše podnikání.

thecodest
Podniková a škálovací řešení

Základy vývoje softwaru v jazyce Java: A Guide to Outsourcing Successfully

Prozkoumejte tuto základní příručku o úspěšném vývoji softwaru outsourcing Java, abyste zvýšili efektivitu, získali přístup k odborným znalostem a dosáhli úspěchu projektu s The Codest.

thecodest

Přihlaste se k odběru naší znalostní databáze a získejte aktuální informace o odborných znalostech z oblasti IT.

    O nás

    The Codest - Mezinárodní společnost zabývající se vývojem softwaru s technologickými centry v Polsku.

    Spojené království - ústředí

    • Kancelář 303B, 182-184 High Street North E6 2JA
      Londýn, Anglie

    Polsko - Místní technologická centra

    • Kancelářský park Fabryczna, Aleja
      Pokoju 18, 31-564 Krakov
    • Brain Embassy, Konstruktorska
      11, 02-673 Varšava, Polsko

      The Codest

    • Home
    • O nás
    • Služby
    • Case Studies
    • Vědět jak
    • Kariéra
    • Slovník

      Služby

    • To Advisory
    • Vývoj softwaru
    • Vývoj backendu
    • Vývoj frontendů
    • Staff Augmentation
    • Vývojáři backendu
    • Cloudoví inženýři
    • Datoví inženýři
    • Další
    • Inženýři QA

      Zdroje

    • Fakta a mýty o spolupráci s externím partnerem pro vývoj softwaru
    • Z USA do Evropy: Proč se americké startupy rozhodly přesídlit do Evropy?
    • Srovnání technických vývojových center v zahraničí: Tech Offshore Evropa (Polsko), ASEAN (Filipíny), Eurasie (Turecko)
    • Jaké jsou hlavní výzvy CTO a CIO?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Copyright © 2026 by The Codest. Všechna práva vyhrazena.

    cs_CZCzech
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian jaJapanese es_ESSpanish nl_NLDutch etEstonian elGreek pt_PTPortuguese cs_CZCzech