- PVSM.RU - https://www.pvsm.ru -
Не так давно начал изучать Node.js. В поисках хорошей статьи «how to» наткнулся на много полезных статей, но не про маршрутизацию. Поэтому «погуглив» на различных «забугорных» ресурсах, нашёл интересные способы маршрутизации и построения своей системы ЧПУ, с которыми готов поделится с вами.
Существует множество каркасов для создания Веб-приложений на Node.js, мы остановимся на Connect(смотреть на гихабе [1]) и Express
В описании системы говорится, что это не каркас для разработки веб-приложений, а каркас промежуточного уровня платформы Node.js. В его состав входят «11 готовых средств», и существует «богатый выбор сторонних средств промежуточного уровня». Всё это дело собирается при помощи систему ПУ-модуля. Cnnect берёт на себя многие функции «полного веб-сервера», позволяя вам сосредоточится на логике приложения.
Итак начнём, для начала установим Connect:
$ npm install connect
Затем создаём свой файл сервера, назовём его server.js
var connect = require('connect');
var htutil = require('./htutil');
connect.createServer()
.use(connect.favicon())
.use(connect.logger())
.use('/filez', connect.static(__dirname + '/filez'))
.use(connect.router(function(app) {
app.get('/',
require('./home-node').get);
app.get('/users',
require('./users-node').get);
})).listen(8124);
console.log('listening to http://localhost:8124');
В данном случае мы подключили ПУ-модули favicon, logger, static, router.
.use(connect.router(function(app) {
app.requestName('path', function(req,res,next) { });
app.get('/form',createPageWothForm);
app.post('/form',receiveValuesPostedWithForm);
})
Вот так просто можно разграничить приём и обработку данных в формате GET, POST. А потом ответ вернуть например в формате json.
Express — это веб-каркас построенный на базе каркаса промежуточного уровня Connect. Это означает что Expres как раз таки заточен под создание веб-приложения, в том числе представление системы шаблонов, в отличии от Connect который заботиться только о функциях Веб-сервера. Exprss и Connect разрабатывали одни и теже люди поэтому API приложений зеркальны.
Начинаем с установки, прихватим с собой систему шаблонов:
$ npm install express ejs
Затем создаём свой файл сервера, назовём его server.js
var express = require('express');
var app = express.createServer( express.logger());
app.register('.html',require('ejs'));
//необязательно так как Express по умолчанию ищет шаблоны в каталоге views
app.set('views',__dirname + '/views');
app.set('view engine','ejs');//Ставим движок шаблонов
app.configure(function(){
app.use(app.router);
app.use(express.static(__dirname + '/filez'));
app.use(express.errorHandler({
dumpExceptions:true, showStack:true
}));
});
Здесь мы настоили сервер и сконфигурировали необходимые ПУ-модули.
Теперь настроим марштрутизатор продолжаем писать в seerver.js
app.get('/', function(req, res) {
res.render('home.html', { title: "Welcome! This is my Home page"});//Отправляем страницу
});
app.get('/404',function(req,res) {
res.send('Not Found' + req.url);
});
app.listen(8124)
console.log('listening to http://localhost:8124')
Для того чтобы не было вопросов а как сделать шаблон вот пример home.html
<html>
<head>
<title><%= title %=></title>
</head>
<body>
</body>
</html>
Как же сделать параметризованные url?
app.get('/user/:id',function(req,res) {
res.send('user ' + req.params.id);
});
app.get('/cat/:id/:name',function(req,res) {
res.send('catid ' + req.params.id + 'catname ' + req.params.name);
});
Как видите использование готовых модулей облегчает и ускоряет разработку в разы. Создание маршрутизации это целое искусство, можно сделать 100 сайтов и в каждом будет свой способ.
Эти методы не претендуют на звание лучших, но для начинающих они будут вполне полезны. Это лучше чем изобретать бажные велосипеды.
Также очень интересны будут способы создания маршрутизации в ваших веб-приложениях.
Спасибо за внимание!
Автор: Mike_Bazhenov
Источник [2]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/node-js/18872
Ссылки в тексте:
[1] смотреть на гихабе: https://github.com/senchalabs/connect
[2] Источник: http://habrahabr.ru/post/157339/
Нажмите здесь для печати.