NodeGUI React Komponenta po komponentě

NodeGUI React Component by Component

Chtěl jsem to pojmenovat kousek po kousku nebo stavební kameny, ale chci to sladké, sladké SEO. V mém posledním příspěvku jsem trochu oprášil NodeGUI a jedním z negativ, které jsem uvedl, bylo, že to bylo trochu lehké na příkladech, takže jsem se rozhodl to napravit tím, že přispěji k projektu zde a zde doposud. Také jsem se zapojil do Vue verze NodeGUI, ještě není tak vypilovaná nebo připravená na výrobu jako ta Reagovat, ale doufám, že s tím pomůžu.

Tento příspěvek chci projít a předvést většinu základních komponent NodeGUI React. Mám v plánu udělat ještě jeden příspěvek poté, co vás provedu tím, jak s ním vytvořím netriviální aplikaci.

Tlačítko

toto je výchozí tlačítko systému nebo OS (Ubuntu).

    import React from "react";
    import { Renderer, Button, Window } from "@nodegui/react-nodegui";
    const App = () => {
    return (
    <Window>
    <Button style={buttonStyle} text={"Hello World"} />
    </Window>
    );
    };
    const buttonStyle = `
    color: blue;
    `;
    Renderer.render(<App />);

Zaškrtávací políčko

toto je výchozí zaškrtávací políčko systému nebo OS (Ubuntu).

    import React from "react";
    import { Renderer, CheckBox, Window } from "@nodegui/react-nodegui";
    const App = () => {
    return (
    <Window>
    <CheckBox text={"Hello World"} checked={true} />
    </Window>
    );
    };
    Renderer.render(<App />);

Vytočit

toto je výchozí číselník systému nebo OS (Ubuntu).

    import React from "react";
    import { Renderer, Dial, Window } from "@nodegui/react-nodegui";
    const App = () => {
      return (
        <Window>
          <Dial />
        </Window>
      );
    };
    Renderer.render(<App />);

Obrázek

toto je obrazová komponenta, ujistěte se, že používáte AspectRatioMode ke správnému vykreslení obrazu

    import React from "react";
    import { Renderer, Image, Window } from "@nodegui/react-nodegui";
    import { AspectRatioMode } from "@nodegui/nodegui";
    const App = () => {
      return (
        <Window>
          <Image
            aspectRatioMode={AspectRatioMode.KeepAspectRatio}
            size={
 height: 200, width: 150 
            }
            src="https://place-hold.it/200x150"
          ></Image>
        </Window>
      );
    };
    Renderer.render(<App />);

LineEdit

toto je výchozí textové vstupní pole systému nebo OS (Ubuntu).

    import React from "react";
    import { Renderer, LineEdit, Window } from "@nodegui/react-nodegui";
    const App = () => {
      return (
        <Window>
          <LineEdit />
        </Window>
      );
    };
    Renderer.render(<App />);

PlainTextEdit

toto je výchozí pole pro zadávání textové oblasti systému nebo OS (Ubuntu), všimne si, že automaticky získá posuvník pro přetékající text.

    import React from "react";
    import { Renderer, PlainText, Window } from "@nodegui/react-nodegui";
    const App = () => {
      return (
        <Window>
          <PlainText />
        </Window>
      );
    };
    Renderer.render(<App />);

ProgressBar

toto je výchozí ukazatel průběhu systému nebo OS (Ubuntu).


    import React from "react";
    import { Renderer, ProgressBar, Window } from "@nodegui/react-nodegui";
    const App = () => {
      return (
        <Window>
          <ProgressBar value={45} />
        </Window>
      );
    };
    Renderer.render(<App />);

Přepínač

toto je výchozí systémový přepínač systému nebo OS (Ubuntu).

    import React from "react";
    import { Renderer, RadioButton, Window } from "@nodegui/react-nodegui";
    const App = () => {
      return (
        <Window>
          <RadioButton  />
        </Window>
      );
    };
    Renderer.render(<App />);

Oblast posouvání

Posouvatelná oblast

    import React from "react";
    import { Renderer, ScrollArea, Window } from "@nodegui/react-nodegui";
    const App = () => {
      return (
        <Window>
          <ScrollArea  />
        </Window>
      );
    };
    Renderer.render(<App />);

SpinBox

Pole pro zadání čísla

    import React from "react";
    import { Renderer, SpinBox, Window } from "@nodegui/react-nodegui";
    const App = () => {
      return (
        <Window>
          <SpinBox  />
        </Window>
      );
    };
    Renderer.render(<App />);

Text

toto je výchozí text systému nebo OS (Ubuntu). Ve výchozím nastavení budete mít přístup k písmům nainstalovaným v systému. Je možné použít vlastní písma, jako jsou písma google, ale prozatím je to mimo rozsah.

    import React from "react";
    import { Renderer, Text, Window } from "@nodegui/react-nodegui";
    const App = () => {
      return (
        <Window>
          <Text>Welcome to NodeGui</Text>
        </Window>
      );
    };
    Renderer.render(<App />);

Zobrazit

Toto je neviditelný prvek rozvržení z hlediska webu, je to div, z hlediska mobilního vývojáře je to pohled.

    import React from "react";
    import { Renderer, View, Window } from "@nodegui/react-nodegui";
    const App = () => {
      return (
        <Window>
          <View>
            <Text>Welcome to NodeGui<Text>
          </View>
        </Window>
      );
    };
    Renderer.render(<App />);

Okno

toto je okno aplikace systému nebo OS (Ubuntu). Toto je váš hlavní prvek, můžete mít více oken a ve výchozím nastavení se aplikace ukončí, pokud jsou všechna okna zavřená. Toto chování můžete přepsat. Zahrnul jsem sem některé doplňky, jako je přidání ikony doku a reakce na události, mnoho dalších komponent může reagovat na události podobným způsobem.

    import React from "react";
    import { Renderer, Window } from "@nodegui/react-nodegui";
    import { QIcon } from "@nodegui/nodegui";
    import nodeguiIcon from "../assets/nodegui.jpg";
    const winIcon = new QIcon(nodeguiIcon);
    const windowHandler = {
      Close: () => {
        console.log("is closed");
      },
      WindowDeactivate: () => {
        console.log("out of focus");
      },
    };
    const styleSheet = `
    #window {
        background: #c7dae0;
      }
    `
    const App = () => {
      return (
        <Window
          styleSheet={styleSheet}
          windowIcon={winIcon}
          windowTitle={'Hello there'}
          minSize={
             width: 500, height: 300
            }
          on={windowHandler}
          id="window"
          visible={true}
        >
        </Window>
      );
    };
    Renderer.render(<App />);

To je vše pro základní komponenty, další příspěvek se bude týkat zajímavého s názvem SystemTrayIcon.

Pokud jste jako já a trochu pomalu přijímáte TypeScript nebo jen dáváte přednost vanilla.js, mám zde jednoduché startovací repo, které jsem hodil do Mobx pro snadnou správu stavu, protože setState může být s NodeGUI obtížné.

Poslední věcí je, že zde poskytnu kroky sestavení a balení, protože je trochu těžké je najít a to je ta zábavná část.

Balící aplikace jako distribuovatelná

K distribuci hotové aplikace můžete použít @nodegui/packer
Krok 1:( Tento příkaz spustit pouze jednou )

npx nodegui-packer --init MyAppName

Tím vytvoříte adresář nasazení obsahující šablonu. Toto můžete upravit podle svých potřeb. Jako přidat ikony, změnit název, popis a přidat další nativní funkce nebo závislosti. Ujistěte se, že jste potvrdili tento adresář.
Krok 2:( Tento příkaz spusťte pokaždé, když chcete vytvořit novou distribuovatelnou položku )
Dále můžete spustit příkaz pack:

`npm run build`

Tím vytvoříte balíček js spolu s aktivy v ./dist adresář

`npx nodegui-packer --pack ./dist`