19-05-2012, 03:27 AM
Installation de node.js et npm
Installers Mac & Windows : http://nodejs.org/#download
Pour linux (installe npm en même temps), si je dis pas de connerie :
Ensuite on va avoir besoin des modules Express et MySQL et du moteur de template Jade
L'arborescence :
/controllers
/index.js
/models
/index.js
/views
/index.jade
/node_modules
/express
/jade
/mysql
app.js
-------------------------
Contenu de app.js
Contenu de controllers/index.js
Contenu de models/index.js
Contenu de views/index.jade
Puis rendez-vous sur http://127.0.0.1:8080/index/foo (bon dans mon exemple j'ai repris rapido une table de mon jeu, base de donnée 'bdd', table 'joueurs', champ 'pseudo' mais c'est adaptable).
Bien sûr on pourra choisir EJS ou HAML plutôt que Jade. Redis/MongoDB plutôt que MySQL. Mais surtout ça serait intéressant de proposer une implémentation avec Backbone.js quand j'aurai enfin trouvé le temps de m'y attaquer
Installers Mac & Windows : http://nodejs.org/#download
Pour linux (installe npm en même temps), si je dis pas de connerie :
sudo apt-get update
sudo apt-get install nodejs npm
Ensuite on va avoir besoin des modules Express et MySQL et du moteur de template Jade
Code :
npm install mysql
npm install express
npm install jade
L'arborescence :
/controllers
/index.js
/models
/index.js
/views
/index.jade
/node_modules
/express
/jade
/mysql
app.js
-------------------------
Contenu de app.js
var express = require('express');
var mysql = require('mysql');
var client = mysql.createClient({
user : 'root',
password : ''
});
client.query('USE bdd');
var app = express.createServer().listen(8080);
app.configure(function() {
app.set('view engine', 'jade');
app.set('views', __dirname + '/views');
app.set('view options', { layout : false });
});
app.get('/index/:menu', function (req, res) {
require('./controllers/index').on(req, res, client, req.params.menu);
});
Contenu de controllers/index.js
var model = require('../models/index.js');
exports.on = function (req, res, client, menu) {
var bind = {
'menu' : menu
};
model.getList(client, function (data) {
bind.list = data;
res.render('index', bind);
});
};
Contenu de models/index.js
exports.getList = function (client, cb) {
client.query('SELECT pseudo FROM joueurs',
function selectCb (err, results, fields) {
if (err) {
throw err;
}
cb(results);
}
);
};
Contenu de views/index.jade
doctype 5
html
body
\Le menu est : #{menu}
br
- var i = 0;
each item in list
\ L'item n°#{i} est #{item.pseudo}
br
- ++i;
Puis rendez-vous sur http://127.0.0.1:8080/index/foo (bon dans mon exemple j'ai repris rapido une table de mon jeu, base de donnée 'bdd', table 'joueurs', champ 'pseudo' mais c'est adaptable).
Bien sûr on pourra choisir EJS ou HAML plutôt que Jade. Redis/MongoDB plutôt que MySQL. Mais surtout ça serait intéressant de proposer une implémentation avec Backbone.js quand j'aurai enfin trouvé le temps de m'y attaquer