Node JS - https://github.com/joyent/node/wiki/Installation
Do instalacji expressa najłatwiej wykorzystać NPM - node package manager (opis instalacji w ostatnim kroku powyższej dokumentacji instalacji node’a)
Express - korzystając z NPM’a wpisujemy w konsoli
1. npm install express
i to wszystko :)
Mało oryginalnie zacznijmy od aplikacji, które wypisze na ekran ‘hello world’ - przykład skopiowany z nodejs.org ;P
Napiszemy ją na początek bez użycia frameworka, w czystym node
tworzy plik hello.js i wpisujemy:
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(1337, "127.0.0.1");
console.log('Server running at http://127.0.0.1:1337/');
Z wykorzystaniem express’a będzie to wyglądało tak:
var app = require('express').createServer();
app.get('/', function(req, res){
res.send('hello world');
});
app.listen(3000);
var app = require('express').createServer();
inkludujemy biblioteke express i od razu chainem tworzymy serwer http (osobiście jestem przeciwnikiem chainowania)
app.get('/', function(req, res){ ...
korzystając z obiektu app możemy tworzyć routing - w przykładzie do obsługi http get
pierwszy parametr definiuje ścieżkę - możemy wpisać tu string, string z parametrami a także użyć wyrażeń regularnych
Kilka przykładów:
app.get('/', function(req, res){
czyli tylko http://moj-adres-w-sieci.com/
app.get('/product/:id([0-9]{1})', function(req, res){
czyli http://moj-adres-w-sieci.com/product/10 - gdzie id jest cyfrą, do którego możemy się odwołać poprzez: req.params.id
routing jest sprawdzany po kolei, czyli na końcu możemy dać najbardziej ogólny .*, aby wyświetlić wypasioną stronę -= not found =- ;-)
Warto jeszcze napisać o tym, że korzystając z express’a możemy szybko wygenerować szkielet aplikacji,
dostępnych jest kilka parametrów - włączenie obsługi sesji, wybór silników szablonów i styli css
[ sebbie sebbie ~ ] express --help
Usage: express [options] [path]
Options:
-s, --sessions add session support
-t, --template add template support (jade|ejs). default=jade
-c, --css add stylesheet support (less|sass|stylus). default=plain css
-v, --version output framework version
-h, --help output help information
Express umożliwia korzystanie z silnika template’ów i tam umieściemy widoki naszej aplikacji
62 var validate = function(req, res, next) {
63 if (posts[req.params.id]) next();
64 else res.render('index', { title: 'invalid post id', posts: [] });
65 }
66
67 app.get('/blog/:id([0-9]+)', validate, function(req, res){
68 var post = posts[req.params.id];
69 res.render('blog', {
70 title: post.title,
71 content: post.content
72 });
73 });
Czyli jak widać w przykładzie obsługując request korzystając z res.render - renderujemy widok z zadanego szablonu
Możemy też jako drugi argument przekazać obiekt z danymi do wykorzystania w widoku, w przykładzie tytuł i treść postu
W lini 67 pojawił się jeszcze argument “validate” - jest to możliwość użycia middleware w routingu, np. jak w przykładzie do walidacji parametrów requestu
Więcej informacji i przykładów można znaleźć w dokumentacji http://expressjs.com/guide.html#route-middleware
Z tą wiedzą możemy budować już proste aplikacje, brakuje nam jedynie baz danych - ale to już w kolejnym artykule :)
Facebook like&share counters - live visualization
Aby dodawać Fajne na NK do dowolnej strony wystarczy dodać do bookmarków/zakładek/ulubionych poniższy link:
javascript:function%20ent(str)%20%7Bvar%20ta=document.createElement('textarea');ta.innerHTML=str;return%20ta.value;%7D;var%20el%20=%20document.createElement('div');el.innerHTML%20=%20'<if'%20+%20'rame%20src=http://nk.pl/fajne/widget?type=0&color=0&title='%20+%20encodeURIComponent(ent(document.title.substring(0,250)))%20+%20'&url='%20+%20encodeURIComponent(location.href)%20+%20'&index=0%20allowtransparency=true%20frameborder=0%20height=24%20scrolling=no%20width=374>%5C'</iframe>';document.body.insertBefore(el,%20document.body.firstChild);void(0);