- PVSM.RU - https://www.pvsm.ru -
Если Вы программируете на node.js [1], но устали писать роутинг запросов в коде, у Вас нет предубеждения против использования глобальных переменных в служебных целях и Вы согласны, что излишняя свобода губительна для масс, то тоталитарный кружок выходного дня приготовил для Вас прототип альтернативной платформы для разработки веб приложений. Предупреждаю, что тоталитарный стиль предполагает не встраивание фреймворка в приложение через require, а наоборот, встраивание своего приложения в структуру фреймворка, где фрагменты кода приложения будут на каждом шагу иметь дело с дополнительными ограничениями и навязанными структурами кода и данных. Про то, что «less-than-expert» [2] смогут разрабатывать высокопроизводительные системы, как утверждают разработчики ноды — ну тут Вы сами понимаете, что это будут за системы, особливо асинхронные, с потерянными коллбеками и утечками памяти на каждом шагу. В плане защиты от дурака, сей прототип чудес не доставляет. И конечно же, ожидаю от Вас много конструктивной критики, потому, что прототип сырой, хоть и собрал в себе множество концептуальных наработок нашей команды за последнее десятилетие. Даже название Impress [3] появилось всего два дня назад и, да — это самый сложный вопрос.
1. Ставим из npm (https://npmjs.org/package/impress [3])
$ npm install impress
2. Копируем шаблон проекта — содержимое каталога /node_modules/impress/examples/copyContentToProjectFolder переносим в каталог проекта (server.js, setup.js, config.js и каталог sites).
3. Насраиваем файл config.js пройдемся по разделам конфига:
databases — базы, которые будут автоматически открыты при старте и перечисленные коллекции будут доступны помещены таким образом: db.dbName.collectionName.find(...). Пример конфигурации:
dbName: {
url: "mongodb://localhost:27017/dbName",
collections: ["collname1", "collname2"]
}
session — имя длина и набор символов для генерации сессионного cookie, имя базы для постоянного хранения сессий.
cluster — настройка стратегии инстанциирования (тип многопоточнисти).
servers — именованные сервера (интерфейс/порт), для каждого поле hosts — массив именованных хостов, которые нужно отдавать с этого сервера, static — массив масок файлов для отдачи статики, например ["/css/*", "/images/*", "/js/*", "/favicon.ico", "/index.html"].
hosts — именованные хосты (виртуальные хосты), можно использовать маски для именования, например "*.myhost.com".
routes — именованные маршруты переадресации запросов.
4. Для инициализации структур данных в MongoDB, запустите node setup.js и жмем «y».
5. В файле server.js можем написать еще дополнительный свой код на инициализацию:
require('impress');
impress.init(function() {
// Сюда свой код
});
6. И стартуем сервер
$ node server.js
1. Шаблоны: при запущенном сервере открываем http://localhost [4]
и шаблон смотрим тут: /sites/localhost/html.template
Смотрим на приложение, нажимаем «Create account», «Sign In»
2. Пример переопределения шаблона «left.template» с наследованием логики, открываем http://localhost/override [5]
и шаблон смотрим тут: /sites/localhost/override/left.template
базовый шаблон тут: /sites/localhost/html.template
обработчик серверной логики тут: /sites/localhost/request.js
3. Пример API метода с JSON ответом смотрим: http://localhost/api/examples/methodName.json [6]
и код тут /sites/localhost/api/examples/methodName.json/get.js
4. Пример запуска анонимной сессии: http://localhost/api/auth/anonymousSession.json [7]
и код соответственно: /sites/localhost/api/auth/anonymousSession.json/get.js
5. Пример POST запроса: усилием мысли делаем POST на localhost/api/auth/regvalidation.json [8] с параметром «Email»
и код: /sites/localhost/api/auth/regvalidation.json/post.js
6. Пример доступа в базу MongoDB:: http://localhost/api/examples/getUsers.json [9]
и код тут: /sites/localhost/api/examples/getUsers.json/get.js
или вот он прямо:
module.exports = function(req, res, callback) {
res.context.data = [];
db.impress.users.find({}).toArray(function(err, nodes) {
res.context.data = nodes;
callback();
});
}
На Github: https://github.com/tshemsedinov/impress [10]
В npm: https://npmjs.org/package/impress [3]
Автор: MarcusAurelius
Источник [11]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/javascript/36239
Ссылки в тексте:
[1] node.js: http://nodejs.org/
[2] «less-than-expert»: http://nodejs.org/about/
[3] Impress: https://npmjs.org/package/impress
[4] http://localhost: http://localhost
[5] http://localhost/override: http://localhost/override
[6] http://localhost/api/examples/methodName.json: http://localhost/api/examples/methodName.json
[7] http://localhost/api/auth/anonymousSession.json: http://localhost/api/auth/anonymousSession.json
[8] localhost/api/auth/regvalidation.json: http://localhost/api/auth/regvalidation.json
[9] http://localhost/api/examples/getUsers.json: http://localhost/api/examples/getUsers.json
[10] https://github.com/tshemsedinov/impress: https://github.com/tshemsedinov/impress
[11] Источник: http://habrahabr.ru/post/182714/
Нажмите здесь для печати.