Skip to content

Latest commit

 

History

History
198 lines (137 loc) · 6.1 KB

kivat-moduulit.md

File metadata and controls

198 lines (137 loc) · 6.1 KB

Table of Contents generated with DocToc

Kivat moduulit

Node.js projektina seuraa vahvasti unixin jalanjäljissä. Ideana on, että sovellukset koostuvat pienistä, uudelleenkäytettävistä moduuleista, joita yhdistelemällä saa aikaan helposti monimutkaisempia sovelluksia.

Web-frameworkit

Pitkä lista: http://nodewebmodules.com/, joista osa on jo kuolleita projekteja kylläkin.

Express

Express on pieni mutta joustava node.js web-ohjelmistokehys, joka tarjoaa vankan joukon ominaisuuksia yksi- ja monisivuisten ohjelmistojen kehittämiseen.

var express = require('express');
var app = express();

app.get('/', function(req, res){
  res.send('hello world');
});

app.listen(3000);

Koa

Koa on uusi Express-kehittäjien suunnittelema ohjelmistokehys, jonka tarkoituksena on tarjota pienempi, ilmaisuvoimaisempi ja vakaampi perusta web-ohjelmistojen ja verkkorajapintojen kehitykseen. Hyödyntäen generaattoreita, Koa tekee callback-kutsut tarpeettomiksi ja tehostaa virheenkäsittelyä.

var koa = require('koa');
var app = module.exports = koa();

app.use(function *(){
  this.body = 'Hello World';
});

if (!module.parent) app.listen(3000);

Restify

Restify on node.js-moduuli, joka on kehitetty oikeellisten REST-arkkitehtuurin mukaisten web-ohjelmistojen rakentamista varten. Se on ottanut runsaasti vaikutteita Expressistä, sillä se on aikalailla de facto rajapinta node.js web-applikaatioiden kirjoittamiseen.

var restify = require('restify');

function respond(req, res, next) {
  res.send('hello ' + req.params.name);
}

var server = restify.createServer();
server.get('/hello/:name', respond);
server.head('/hello/:name', respond);

server.listen(3000);

Flatiron

Flatiron on mukautuva ohjelmistokehys modernien web-ohjelmistojen kehitykseen. Flatironin lähestymistapa on koota yhteen yksinkertaisia mutta eheitä komponentteja, ja antaa kehittäjien itse päättää mitä he niistä käyttävät.

Geddy

Geddy on yksinkertainen, rakenteinen web-ohjelmistokehys node.js:lle. (Lue: Rails-klooni)

Testaus

Mocha

Mocha - yksinkertainen, joustava, ehkä jopa hauska javascript testauskehys node.js:lle ja selaimeen. (BDD, TDD ja QUnit-tyylit tuettu rajapintojen kautta)

describe('decoding error handing', function () {
  var err = { type: 'error', data: 'parser error' };
  
  it('should disallow bad format', function () {
    expect(decode(':::')).to.eql(err);
  });
  
  it('should disallow inexistent types', function () {
    expect(decode('94103')).to.eql(err);
  });
});

Expect.js

Expect.js on should.js:ään perustuva minimalistinen työkalu BDD-vakuutusten määrittelyyn.

expect(window.r).to.be(undefined);
expect({ a: 'b' }).to.eql({ a: 'b' })
expect(5).to.be.a('number');
expect([]).to.be.an('array');
expect(window).not.to.be.an(Image);

Zuul

Zuul is an easy way to test your javascript in browsers. Start testing your code in seconds locally and move to cloud based browsers seamlessly for better coverage.

Flow-control

Miten taistella asynkronisuuden aiheuttamia ongelmia, kuten callback-helvettiä, vastaan?

Async

Async is a utility module which provides straight-forward, powerful functions for working with asynchronous JavaScript.

async.map(['file1','file2','file3'], fs.stat, function(err, results){
    // results is now an array of stats for each file
});

async.filter(['file1','file2','file3'], fs.exists, function(results){
    // results now equals an array of the existing files
});

async.parallel([
    function(){ ... },
    function(){ ... }
], callback);

async.series([
    function(){ ... },
    function(){ ... }
]);

After

After is a lightweight flow control library, that you dare to also use on a browser.

var after = require("after")
    , next = after(3, logItWorks)

next()
next()
next() // it works

function logItWorks() {
    console.log("it works!")
}

Highland

Highland manages synchronous and asynchronous code easily, using nothing more than standard JavaScript and Node-like Streams. You may be familiar with Promises, EventEmitters and callbacks, but moving between them is far from seamless.

var output = fs.createWriteStream('output');
var docs = db.createReadStream();

// wrap a node stream and pipe to file
_(docs).filter(isBlogpost).pipe(output);

// or, pipe in a node stream directly:
docs.pipe(_().filter(isBlogpost)).pipe(output);

Muut kuin web-sovellukset

node-webkit

Node-webkit is an app runtime based on Chromium and node.js. You can write native apps in HTML and Javascript with node-webkit. It also lets you call Node.js modules directly from the DOM and enables a new way of writing native applications with all Web technologies.

blessed

Blessed is a newschool curses-like library. It features a complete terminfo, extended terminfo, and termcap parser, so it will work with any terminal if need be.

Lisää!

Tunnettuja Node all-star -henkilöitä, joilla on paljon kivoja moduuleja: