Screencast: Node Package Manager

Další screencast se věnuje nástroji NPM, který umožňuje snadno instalovat moduly přes příkazový řádek.

Chcete udělat nějakou krásnou aplikaci, která by uměla pracovat třeba s API od GitHub. Jak to uděláte? Pokud váš oblíbený framework zrovna tohle API nepodporuje, vygooglite „github api {váš jazyk}“, vyberete si některý z výsledků. Projdete si zdrojáky, usoudíte, že tohle by mohlo být to, co hledáte. Super. Zkusíte najít odkaz pro stažení, stáhnete to, zipku rozbalíte, otevřete složku s vaším projektem, překopírujete skripty do vašeho projektu mezi ostatní knihovny. Teď je procházíte a snažíte se přijít na to, jak je zahrnout do vlastního projektu. Narazíte na nějakou konstantu,  přidáte do ní cestu k vlastnímu projektu, spustíte a … nefunguje. Fatal Error! Chvíli tu hlášku zkoumáte, pak se podíváte do zdrojáků, snažíte se přijít, jak to rozjet … nakonec usoudíte, že to nemá cenu a podíváte se po dalších knihovnách. Pokud budete mít štěstí, najdete něco, co funguje. Nebo ztratíte nervy a začnete to psát sami.

OK a co tohle? V příkazovém řádku:

  1. zadáte npm search xyz API a vyberete si, kterou knihovnu budete chtít,
  2. zadáte npm install {vybraná knihovna},
  3. v projektu v libovoném místě napíšete require({vybraná knihovna}).

Tak o tomhle bude dnešní screencast.

Nechcete-li sledovat video, pod screencastem najdete přepis. Pokud by vám nefungovaly příkazy node a npm, na konci článku najdete návod, jak je pro Windows zprovoznit.

  • NPM je správce modulů, přes který si můžete instalovat nové balíčky do aplikace.
  • Seznam všech dostupných modulů je možné nalézt na search.npmjs.org. Alternativně je možné použít Nipster!, kde lze řadit moduly třeba podle toho, jak jsou moduly sledovány uživateli na Github.com.
  • Zkusme najít nějaký generátor náhodných čísel, zadáme tedy frázi “rand” a získáte několik knihoven, které umožňují náhodná čísla generovat.
  • Velmi důležité je verzování, především první číslo. Pokud má balíček jako první číslo 0, znamená to, že ještě není doporučen k produkčnímu nasazení a jeho použití je na vlastní riziko.
  • Balíčky lze instalovat přes příkazový řádek zadáním příkazu “npm install {jméno balíčku}”, např. “npm install mersenne” nainstaluje generátor náhodných čísel.
  • Do projektu se pak přidá balíček přes require({jméno balíčku}).

var http = require('http');
var mersenne = require('mersenne');
http.createServer(function (req, res) {
    res.end(mersenne.rand(6).toString());
}).listen(8000);
  • Chcete-li vyhledat nějaký balíček, můžete to udělat přímo přes příkazový řádek přes frázi „npm search {fráze}“, např. přes “npm search mvc” najdete všechny MVC frameworky.
  • Podrobnější informace o balíčku lze získat přes příkaz „npm info {jméno balíčku}“, např. „npm info ejs“ zobrazí podrobné informace o šablonovacím systému EJS, dozvíte se jeho podrobnější popis, poslední verzi, kdo je autorem, balíčky, na kterých závisí vývoj (mocha je testovací framework) atd.
  • Pokud chcete zobrazit dokumentaci k vybranému balíčku, zadáte příkaz „npm docs {jméno balíčku}“, např. „npm docs mersenne“. Předtím je ale potřeba nastavit výchozí prohlížeč, příkazem „npm config set browser firefox“ nastavíte výchozí prohlížeč Firefox. Ten se pak spouští přes příkaz “firefox URL”, takže je potřeba nastavit promměnou prostředí PATH pro daný prohlížeč.
  • Přes příkaz „npm list“ je možné zobrazit seznam všech balíčků vč. jejich závislostí na jiných balíčcích.
  • Pokud chcete zjistit, zda nevyšla již nová verze balíčku, zadáte příkaz „npm outdated“, jako volitelný třetí parametr je možné přidat název balíčku, který nás zajímá. Zkusme třeba zjistit, zda mám aktuální framework express: „npm outdated express“.
  • Mnoho dalších užitečných příkazů pro práci s NPM najdete v dokumentaci, pokud jste instalovali node podle předchozího návodu, najdete dokumentaci v C:/Program Files/nodejs/node_modules/npm/html/doc/index.html.

Pokud by se náhodou stalo, že vám příkaz npm nebo node nefunguje, nastavte si v příkazovém řádku proměnnou PATH takto:

Pro node: SET PATH=C:\Program Files\Nodejs;%PATH%
Pro npm: SET PATH=C:\Program Files\Nodejs\node_modules\npm\;%PATH% 
Rubriky: Nezařazené | Napsat komentář

Screencast: První Hello World! s Node.js

První screencast ukazuje krok po kroku instalaci a vytvoření prvního skriptu Hello World! ve Windows. Je určen těm, kteří s Node.js nikdy nepracovali. Video je dlouhé přibližně 3 a půl minuty.

Poznámka: Tutoriál předpokládá znalost JavaScriptu, pokud jste náhodou nikdy s JavaScriptem nepracovali, základní informace můžete získat třeba  na webu JakPsátWeb.cz, pokud už s programováním nějaké zkušenosti máte, pak doporučuji výborný Augiho článek.

Pokud zrovna nemůžete sledovat video, pod videem najdete přepis.

 

  • Aktuální verzi node.js stáhnete na stránkách nodejs.org. V dřívějších verzích bylo nutné používat Cygwin, nyní je už dostupný klasický instalátor pro Windows.
  • Node.js se instaluje do složky C:\Program Files\nodejs. Kromě node.js automaticky získáte i Node Package Manager, tedy správce balíčku inspirovaný gem v Ruby.
  • Pro první projekt si vytvořte adresář C:\www. Do něj pak vytvořte soubor hello.js, který si otevřete třeba v PSPadu.
var http = require('http');
http.createServer(function (req, res) {
res.end('Hello World!');
}).listen(8000);
  • Nejprve je potřeba načíst modul “http” přes příkaz require a aby s ním bylo možné dále pracovat, přiřadíme ho do proměnné http.
  • V druhé části vytvořím objekt, který reprezentuje server a zavolám na něm metodu listen(), která serveru říká, na jakém portu má server poslouchat.
  • Dále je potřeba vytvořit anonymní funkci, která přebírá dva parametry req a res. První parametr req je objekt, který reprezentuje požadavek uživatele, tedy to, co uživatel zadal do prohlížeče. Druhý parametr je objekt reprezentující odpověď uživateli, tedy to, co bude odesláno do prohlížeče.
  • Posledním příkazem pak zavoláme na objektu odpovědi metodu end(), která odešle nějaký text do prohlížeče.
  • Dále bude potřeba skript spustit. Otevřete si příkazový řádek a přejděte do složky projektu zadáním příkazu “cd C:\www” a program spusťte příkazem node hello.js.
  • Pak už stačí spustit prohlížeč a zadat adresu http://localhost:8000 (localhost + port, který byl zadán metodě listen()).
  • Pokud nechcete zadávat port do URL, můžete do metody listen() nastavit port 80. Pro spuštění je potřeba nejprve server zastavit příkazem CTRL + C a znova spustit. Když teď zadám adresu bez portu, bude vše fungovat. Pokud programujete v PHP, pozor na spuštěný Apache, který pracuje s portem 80, nejprve ho bude potřeba vypnout.

Další screencast by měl být o zprovoznění aplikace na Heroku.com a představení frameworku ExpressJS.

Rubriky: Nezařazené | Napsat komentář

Proč se zajímat o Node.js

Node.js je platforma postavená na JavaScript enginu V8, který je používán v Google Chrome. Díky Node.js je možné JavaScript používat i na serveru a stavět aplikace podobně jako třeba v PHP či v Javě.

V Česku je pojem Node.js téměř neznámý, ve světě se ale jedná o jedno z nejdiskutovanějších témat poslední doby. Na Node.js staví některé aplikace Yahoo, je v něm vytvořena kompletní mobilní verze LinkedIn, část webu GitHub.com je v Node.js, podporován je ze strany Microsoftu v cloud platformě Windows Azure. Přestože je Node.js velmi mladý (před 2 roky ještě neexistoval, aktuální verze je 0.6.6), jsou na něm vystavěny aplikace, které obsluhují miliony návštěvníků denně.

Proč mě Node.js zaujal?

  1. Můžete používat své oblíbené JavaScriptové knihovny i na serveru. Pracuje se vám špatně ve vašem jazyce s XML či HTML? Chcete používat JQuery i na serveru? Žádný problém.
  2. S Node.js se nemusíte učit nový programovací jazyk, používáte pouze JavaScript jak pro tvorbu skriptů na straně klienta, tak na straně serveru. Pokud používáte nosql databázi, např. MongoDb, používáte JavaScript i v příkazech databázi. S daty se v nosql pracuje navíc ve formátu JSON (= JavaScript object notation), JavaScript tedy stačí úplně na všechno.
  3. S JavaScriptem se setkal každý, kdo pracoval někdy s webem. Na webu lze nalézt tisíce kvalitních JavaScriptových knihoven, které nyní můžete používat i na serveru.
  4. V Node.js se JavaScript kompiluje do C++, je tedy velmi rychlý (i když funguje pouze v jednom vláknu).
  5. Node.js podporuje asynchronní architekturu, umožňuje spouštět více operací najednou. Pokud např. v PHP chcete zpracovat tři příkazy v jednom skriptu a každý z nich zabere 2 vteřiny, celý skript nedoběhne dříve než za 6 vteřin. V Node.js lze spustit všechny 3 příkazy najednou.
  6. Node.js lze velmi snadno nainstalovat i ve Windows. Dříve bylo nutné používat Cygwin, nyní je už dostupný klasický Windows instalátor. Jedním kliknutím nainstalujete vše, co potřebujete.
  7. V Node.js je NPM (Node Package Manager), což je balíčkovací systém podobný gems v Ruby. Když chcete přidat novou knihovnu, děláte to podobně jako v Linuxu. Stačí zadat např. npm install express a nainstaluje se vám ExpressJS framework vč. všech závislostí. Uvnitř skriptu pak  stačí knihovnu načíst přes příkaz require(„express“), nic víc. NPM sám stáhne všechny další knihovny, které třeba zmíněný ExpressJS potřebuje. Všechny knihovny jsou dostupné zde: http://search.npmjs.org/.
  8. Kolem Node.js vzniká velká komunita. Před rokem bylo k dispozici 2 tis. knihoven, v listopadu jich bylo již 5 tisíc, dnes je jich více než 6 tis. Najdete mnoho frameworků, ORM, cokoliv potřebujete si stáhnete přes NPM. Existují různé stránky, kde lze najít knihovny podle kvality (kolik lidí je sleduje/používá).
  9. Pro psaní knihovny existují jednotné konvence. Všechny je najdete na GitHub.com, mají jednotnou strukturu, všechny jsou otestované (vydat veřejně nějakou knihovnu bez testů je ostuda).
  10. Knihovny v jádru Node.js mají jasné konvence pro pojmenování i pořadí parametrů. Nestane se vám, že jedna metoda používá podtržítka a jiná cammelcase. Node.js má už v jádru knihovny pro jednotkové testování či debugování.
  11. Téměř všechny knihovny Node.js jsou napsány v JavaScriptu, v C++ jsou napsány pouze skripty, které umožňují pracovat s OS asynchronním způsobem. Chcete-li tedy vědět, jak něco funguje, podíváte se přímo do zdrojáků Node.js na Github.com a stačí vám znalost JavaScriptu.

Máte-li nějaké připomínky, piště prosím na jakub.mrozek@gmail.com.

Připravuji první screencast, klasickou Hello World aplikaci. Stay tuned!

Rubriky: Nezařazené | Štítky: | Napsat komentář