Susipažinkite su Mithril.js – lengvasvoriu JavaScript karkasu, skirtu greitoms ir lengvai prižiūrimoms Vieno puslapio aplikacijoms (SPA). Išmokite pagrindines koncepcijas, privalumus ir palyginimą su kitais karkasais.
Mithril.js: Praktinis vadovas, kaip kurti greitas ir paprastas SPA
Nuolat kintančioje front-end programavimo aplinkoje, tinkamo karkaso pasirinkimas yra lemiamas kuriant našias ir lengvai prižiūrimas Vieno puslapio aplikacijas (SPA). Mithril.js išsiskiria kaip patrauklus pasirinkimas, ypač projektuose, kur svarbiausia yra greitis, paprastumas ir mažas dydis. Šis vadovas pateikia išsamią Mithril.js apžvalgą, nagrinėjant jo pagrindines koncepcijas, privalumus ir praktinį pritaikymą.
Kas yra Mithril.js?
Mithril.js yra kliento pusės JavaScript karkasas, skirtas modernioms interneto aplikacijoms kurti. Jis žinomas dėl savo mažo dydžio (mažiau nei 10kb suglaudinus), išskirtinio našumo ir paprasto naudojimo. Jis įgyvendina Model-View-Controller (MVC) architektūrą, suteikdamas struktūrizuotą požiūrį į kodo organizavimą.
Skirtingai nuo kai kurių didesnių, daugiau funkcijų turinčių karkasų, Mithril.js koncentruojasi į esminius dalykus, leisdamas programuotojams panaudoti esamas JavaScript žinias be staigios mokymosi kreivės. Dėmesys pagrindinėms funkcijoms reiškia greitesnį įkėlimo laiką ir sklandesnę vartotojo patirtį.
Pagrindinės savybės ir privalumai
- Mažas dydis: Kaip minėta, jo mažas dydis ženkliai sumažina įkėlimo laiką, kas ypač svarbu vartotojams regionuose su ribotu interneto pralaidumu.
- Išskirtinis našumas: Mithril.js naudoja labai optimizuotą virtualaus DOM įgyvendinimą, todėl atvaizdavimas ir atnaujinimai yra žaibiškai greiti.
- Paprastas API: Jo API yra glaustas ir gerai dokumentuotas, todėl jį lengva išmokti ir naudoti.
- MVC architektūra: Suteikia aiškią struktūrą jūsų aplikacijos kodo organizavimui, skatinant lengvą priežiūrą ir mastelio keitimą.
- Komponentinė architektūra: Skatina kurti daugkartinio naudojimo komponentus, supaprastinant kūrimą ir mažinant kodo dubliavimą.
- Maršrutizavimas: Turi integruotą maršrutizavimo mechanizmą SPA navigacijai kurti.
- XHR abstrakcija: Siūlo supaprastintą API HTTP užklausoms atlikti.
- Išsami dokumentacija: Mithril.js gali pasigirti išsamia dokumentacija, apimančia visus karkaso aspektus.
- Suderinamumas su įvairiomis naršyklėmis: Patikimai veikia su daugeliu naršyklių.
MVC architektūra Mithril.js
Mithril.js laikosi Model-View-Controller (MVC) architektūrinio modelio. MVC supratimas yra būtinas efektyviam Mithril.js naudojimui.- Modelis (Model): Atstovauja jūsų aplikacijos duomenis ir verslo logiką. Jis atsakingas už duomenų gavimą, saugojimą ir manipuliavimą.
- Vaizdas (View): Rodo duomenis vartotojui. Jis atsakingas už vartotojo sąsajos atvaizdavimą pagal modelio pateiktus duomenis. Mithril.js vaizdai paprastai yra funkcijos, kurios grąžina virtualaus DOM vartotojo sąsajos reprezentaciją.
- Valdiklis (Controller): Veikia kaip tarpininkas tarp modelio ir vaizdo. Jis apdoroja vartotojo įvestį, atnaujina modelį ir inicijuoja vaizdo atnaujinimus.
Duomenų srautas Mithril.js aplikacijoje paprastai vyksta pagal šį modelį:
- Vartotojas sąveikauja su vaizdu.
- Valdiklis apdoroja vartotojo sąveiką ir atnaujina modelį.
- Modelis atnaujina savo duomenis.
- Valdiklis inicijuoja vaizdo perpiešimą su atnaujintais duomenimis.
- Vaizdas atnaujina vartotojo sąsają, kad atspindėtų pakeitimus.
Mithril.js projekto paruošimas
Pradėti dirbti su Mithril.js yra paprasta. Jį galite įtraukti į savo projektą naudodami įvairius metodus:
- Tiesioginis atsisiuntimas: Atsisiųskite Mithril.js failą iš oficialios svetainės (https://mithril.js.org/) ir įtraukite jį į savo HTML failą naudodami
<script>
žymę. - CDN: Naudokite turinio pristatymo tinklą (CDN), kad įtrauktumėte Mithril.js į savo HTML failą. Pavyzdžiui:
<script src="https://cdn.jsdelivr.net/npm/mithril@2.0.4/mithril.min.js"></script>
- npm: Įdiekite Mithril.js naudodami npm:
npm install mithril
Tada importuokite jį į savo JavaScript failą:import m from 'mithril';
Sudėtingesniems projektams rekomenduojama naudoti kūrimo įrankius, tokius kaip Webpack ar Parcel, kad efektyviai supakuotumėte savo kodą ir valdytumėte priklausomybes. Šie įrankiai taip pat gali padėti atlikti tokias užduotis kaip ES6+ kodo transpiliavimas ir JavaScript failų mažinimas.
Paprastas Mithril.js pavyzdys
Sukurkime paprastą skaitliuko aplikaciją, kad iliustruotume pagrindines Mithril.js koncepcijas.
// Modelis
let count = 0;
// Valdiklis
const CounterController = {
increment: () => {
count++;
},
decrement: () => {
count--;
},
};
// Vaizdas
const CounterView = {
view: () => {
return m("div", [
m("button", { onclick: CounterController.decrement }, "-"),
m("span", count),
m("button", { onclick: CounterController.increment }, "+"),
]);
},
};
// Prijungiama aplikacija
mount(document.body, CounterView);
Paaiškinimas:
- Modelis:
count
kintamasis saugo dabartinę skaitliuko vertę. - Valdiklis:
CounterController
objektas turi metodus skaitliukui padidinti ir sumažinti. - Vaizdas:
CounterView
objektas apibrėžia vartotojo sąsają. Jis naudojam()
funkciją (Mithril hyperscript) virtualaus DOM mazgams sukurti. Mygtukųonclick
atributai yra susieti suincrement
irdecrement
metodais valdiklyje. - Prijungimas:
m.mount()
funkcija prijungiaCounterView
priedocument.body
, atvaizduodama aplikaciją naršyklėje.
Komponentai Mithril.js
Mithril.js skatina komponentinę architektūrą, kuri leidžia suskaidyti aplikaciją į daugkartinio naudojimo ir nepriklausomus komponentus. Tai pagerina kodo organizavimą, priežiūrą ir testavimą.
Mithril.js komponentas yra objektas su view
metodu (ir pasirinktinai kitais gyvavimo ciklo metodais, tokiais kaip oninit
, oncreate
, onupdate
ir onremove
). view
metodas grąžina komponento virtualaus DOM reprezentaciją.
Perdarykime ankstesnį skaitliuko pavyzdį, kad jis naudotų komponentą:
// Skaitliuko komponentas
const Counter = {
count: 0,
increment: () => {
Counter.count++;
},
decrement: () => {
Counter.count--;
},
view: () => {
return m("div", [
m("button", { onclick: Counter.decrement }, "-"),
m("span", Counter.count),
m("button", { onclick: Counter.increment }, "+"),
]);
},
};
// Prijungiama aplikacija
mount(document.body, Counter);
Šiame pavyzdyje modelio ir valdiklio logika dabar yra inkapsuliuota Counter
komponente, todėl jis yra savarankiškesnis ir labiau tinkamas pakartotiniam naudojimui.
Maršrutizavimas Mithril.js
Mithril.js turi integruotą maršrutizavimo mechanizmą, skirtą Vieno puslapio aplikacijos (SPA) navigacijai kurti. m.route()
funkcija leidžia apibrėžti maršrutus ir susieti juos su komponentais.
Štai pavyzdys, kaip naudoti maršrutizavimą Mithril.js:
// Apibrėžiami komponentai skirtingiems maršrutams
const Home = {
view: () => {
return m("h1", "Home Page");
},
};
const About = {
view: () => {
return m("h1", "About Page");
},
};
// Apibrėžiami maršrutai
m.route(document.body, "/", {
"/": Home,
"/about": About,
});
Šiame pavyzdyje apibrėžiame du komponentus: Home
ir About
. m.route()
funkcija susieja /
maršrutą su Home
komponentu, o /about
maršrutą – su About
komponentu.
Norėdami sukurti nuorodas tarp maršrutų, galite naudoti m("a")
elementą su href
atributu, nustatytu į norimą maršrutą:
m("a", { href: "/about", oncreate: m.route.link }, "About");
oncreate: m.route.link
atributas nurodo Mithril.js apdoroti nuorodos paspaudimą ir atnaujinti naršyklės URL be pilno puslapio perkrovimo.
Mithril.js palyginimas su kitais karkasais
Renkantis JavaScript karkasą, svarbu atsižvelgti į konkrečius projekto reikalavimus. Mithril.js siūlo patrauklią alternatyvą didesniems karkasams, tokiems kaip React, Angular ir Vue.js, ypač tais atvejais, kai našumas, paprastumas ir mažas dydis yra kritiškai svarbūs.
Mithril.js vs. React
- Dydis: Mithril.js yra žymiai mažesnis nei React.
- Našumas: Mithril.js dažnai lenkia React našumo testuose, ypač sudėtingose vartotojo sąsajose.
- API: Mithril.js turi paprastesnį ir glaustesnį API nei React.
- JSX: React naudoja JSX, JavaScript sintaksės plėtinį. Mithril.js naudoja gryną JavaScript virtualaus DOM mazgams kurti.
- Ekosistema: React turi didesnę ir brandesnę ekosistemą su platesniu bibliotekų ir įrankių asortimentu.
Mithril.js vs. Angular
- Dydis: Mithril.js yra daug mažesnis nei Angular.
- Sudėtingumas: Angular yra pilnavertis karkasas su statesne mokymosi kreive nei Mithril.js.
- Lankstumas: Mithril.js siūlo daugiau lankstumo ir mažiau struktūros nei Angular.
- TypeScript: Angular paprastai naudojamas su TypeScript. Mithril.js gali būti naudojamas su TypeScript arba be jo.
- Duomenų susiejimas (Data Binding): Angular naudoja dvipusį duomenų susiejimą, o Mithril.js – vienpusį duomenų srautą.
Mithril.js vs. Vue.js
- Dydis: Mithril.js paprastai yra mažesnis nei Vue.js.
- Mokymosi kreivė: Abu karkasai turi gana lėkštas mokymosi kreives.
- Šablonai (Templating): Vue.js naudoja HTML pagrindu veikiančius šablonus, o Mithril.js naudoja gryną JavaScript virtualaus DOM mazgams kurti.
- Bendruomenė: Vue.js turi didesnę ir aktyvesnę bendruomenę nei Mithril.js.
Mithril.js panaudojimo atvejai
Mithril.js puikiai tinka įvairiems projektams, įskaitant:
- Vieno puslapio aplikacijos (SPA): Jo maršrutizavimas ir komponentinė architektūra idealiai tinka SPA kūrimui.
- Valdymo skydeliai ir administratoriaus panelės: Dėl našumo ir mažo dydžio jis yra geras pasirinkimas daug duomenų naudojančioms aplikacijoms.
- Mobiliosios aplikacijos: Jo mažas dydis yra privalumas mobiliesiems įrenginiams su ribotais resursais.
- Interneto žaidimai: Jo našumas yra lemiamas kuriant sklandžius ir greitai reaguojančius interneto žaidimus.
- Įterptinės sistemos: Dėl mažo dydžio jis tinka įterptinėms sistemoms su ribota atmintimi.
- Projektai su našumo apribojimais: Bet koks projektas, kur svarbu kuo labiau sumažinti įkėlimo laiką ir padidinti našumą. Tai ypač aktualu vartotojams vietovėse su lėtu interneto ryšiu, pavyzdžiui, besivystančiose šalyse.
Gerosios Mithril.js kūrimo praktikos
- Naudokite komponentus: Suskaidykite savo aplikaciją į daugkartinio naudojimo komponentus, kad pagerintumėte kodo organizavimą ir priežiūrą.
- Išlaikykite komponentus mažus: Venkite kurti pernelyg sudėtingus komponentus. Mažesnius komponentus lengviau suprasti, testuoti ir pakartotinai naudoti.
- Laikykitės MVC modelio: Laikykitės MVC architektūrinio modelio, kad struktūrizuotumėte kodą ir atskirtumėte atsakomybes.
- Naudokite kūrimo įrankį: Naudokite kūrimo įrankį, pvz., Webpack ar Parcel, kad efektyviai supakuotumėte kodą ir valdytumėte priklausomybes.
- Rašykite vienetinius testus (Unit Tests): Rašykite vienetinius testus, kad užtikrintumėte savo kodo kokybę ir patikimumą.
- Optimizuokite našumą: Naudokite technikas, tokias kaip kodo skaidymas (code splitting) ir tingusis įkėlimas (lazy loading), kad pagerintumėte našumą.
- Naudokite linterį: Naudokite linterį, pvz., ESLint, kad užtikrintumėte kodavimo standartus ir aptiktumėte galimas klaidas.
- Būkite atsinaujinę: Atnaujinkite savo Mithril.js versiją ir priklausomybes, kad pasinaudotumėte klaidų ištaisymais ir našumo patobulinimais.
Bendruomenė ir resursai
Nors Mithril.js bendruomenė yra mažesnė nei didesnių karkasų, ji yra aktyvi ir palaikanti. Štai keletas resursų, kurie padės jums sužinoti daugiau apie Mithril.js:
- Oficiali svetainė: https://mithril.js.org/
- Dokumentacija: https://mithril.js.org/documentation.html
- GitHub repozitorija: https://github.com/MithrilJS/mithril.js
- Gitter pokalbių kambarys: https://gitter.im/MithrilJS/mithril.js
- Mithril.js receptų knyga: Bendruomenės palaikomas resursas su praktiniais pavyzdžiais ir receptais.