Inledning
Hej! Idag kommer jag att berätta historia om Mint lang, mycket ung (men intressant) programmeringsspråk fokuserat på att bygga SPA (enda sida applikationer). Den har alla verktyg du behöver för att skriva felfria, lättlästa och underhållbara applikationer på rekordtid.
imponerad? Jag också! Låt oss hantera detta tillsammans…
innehållsförteckning
- vad är Mint lang egentligen?
- varför inte JavaScript?
- varför inte Elm?
- Varför Mint?
- Mint-verktyg & ekosystem
- Redigeringstillägg
- CLI
- decentraliserad pakethantering
- Routing
- CSS-Styling
- slutresultat
Vad är Mint lang egentligen?
först av allt, Mint skrivet på Kristall:
ett allmänt ändamål, objektorienterat programmeringsspråk med syntax inspirerad av språket Ruby det är ett kompilerat språk med statisk typkontroll, men att specificera typerna av variabler eller metodargument är i allmänhet onödigt.
följ sedan den officiella Myntguiden:
Mint är ett språk som är speciellt skapat för att skriva applikationer på en sida. Det är en kompilator och ett ramverk kombinerat för att ge stor utvecklarupplevelse samtidigt som du kan skriva säker, läsbar och underhållbar kod.
Ja, det är sant! Ser till den här koden (ledsen för koden som markerar):
// src/App.mintcomponent Counter { state counter : Number = 0 fun increment : Promise(Never, Void) { next { counter = counter + 1 } } fun decrement : Promise(Never, Void) { next { counter = counter - 1 } } fun render : Html { <div> <button onClick={decrement}> "Decrement" </button> <span> <{ Number.toString(counter) }> </span> <button onClick={increment}> "Increment" </button> </div> }}
mycket lik ett strikt typiserat språk, men med inkluderad JSX-stil, eller hur?
det föddes ur frustrationen av JavaScript-språket och ekosystemet (NPM) och Elm-språket och det är inte så öppet utvecklingspraxis.
OK! Låt oss bestämma oss direkt: varför inte JavaScript och vad som är fel med Elm.
varför inte JavaScript?
JavaScript är inte ett starkt skrivet språk som gör det svårt att skriva felfri kod och leder till inte så bra utvecklarupplevelse.
det har inte heller verktygen för att skapa webbapplikationer ur lådan, du behöver ramar och kompilatorer och bygga verktyg som ökar komplexiteten.
varför inte Elm?
Elm har stor utvecklarupplevelse, men det är ett rent funktionellt språk som leder till viss standardkod och gör det svårare att lära sig.
det är inte heller möjligt att bidra eller påverka språket på något meningsfullt sätt.
varför Mint lang? 🤔
Mint syftar till att kombinera utvecklarupplevelsen av Elm och uttrycksförmågan hos React för att skapa det perfekta språket för att bygga applikationer på en sida.
efter ett års utveckling har Mint följande funktioner:
- ett bra typsystem
- fina felmeddelanden
- Formatter
- komponenter för komposition
- lagrar för datalagring
- inbyggd styling
- inbyggd routing
- bra JavaScript interoperabilitet
- oföränderliga datastrukturer
Mint tools & ekosystem
jag skulle inte prata om detta programmeringsspråk om det inte hade ett ekosystem för att starta och utveckla. Så! 308>
Editor extensions
- VS — kod — lägger syntaxmarkering och komplettera automatiskt stöd
- Emacs-lägger syntaxmarkering och automatisk formatering med mint format
- IntelliJ IDEA — lägger syntaxmarkering
- Atom — lägger syntaxmarkering
- vim — mycket minimal (men arbetar) syntax/ftdetect combo
cli
installera mint CLI via kommando:
# For macOS:$ brew tap homebrew-community/alpha$ brew install mint-lang# For Linux:$ wget --no-verbose -O mint https://mint-lang.s3-eu-west-1.amazonaws.com/mint-latest-linux$ chmod +x ./mint$ sudo mv ./mint /usr/local/bin/mint
Och nu, se alla kommandon med call Mint med --help
flagga:
$ mint --helpMint - Help━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━Usage: mint MintFlags: --env, -e (default: "") # Loads the given .env file --help # Displays help for the current command.Subcommands: build # Builds the project for production docs # Starts the documentation server format # Formats source files init # Initializes a new project install # Installs dependencies loc # Counts Lines of Code start # Starts the development server test # Runs the tests version # Shows version━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
decentraliserad pakethantering
den här sidan innehåller de paket som du kan använda i dina projekt:
- https://www.mint-lang.com/packages
Routing
rutter för en applikation definieras på den översta nivån med blocket routes
. Tänk på följande saker:
- rutter matchas i den ordning de definieras från topp till botten
- rutter kan bara ha ETT ruttblock per applikation
- rutter används för att ställa in tillståndet, för att inte göra saker
exempelkod:
routes { / { Application.setPage("index") } /users/:id (id: Number) { sequence { Application.setPage("show") Application.loadUser(id) } } /blog { Application.setPage("blog") } /blog/:slug (slug: String) { sequence { Application.setPage("post") Application.loadPost(slug) } }}
CSS Styling
i Mint-komponenter kan stilar definieras med en identifierare och sedan appliceras på HTML med identifieraren som en CSS-klass.
en stil kan innehålla valfritt antal CSS-definitioner, underregler, mediafrågor,
if
ochcase
uttalanden.
exempelkod:
component Main { style button { background: red; color: white; border: 0; } fun render : Html { <button::button> "Click ME!" </button> }}
slutresultat
efter mint build
har du produktionsklar Preact SPA. Det är det! 308 >
foto av
Ben Kolde https://unsplash.com/photos/H29h6a8j8QM
Mint författare https://www.mint-lang.com
Anthony Fomin https://unsplash.com/photos/Hr6dzqNLzhw