Работа с Node.JS
Прошлой ночью я сделал дамп Windows 7 и отформатировал мой жесткий драйвер для портирования на операционную систему на основе Linux, чисто по тем причинам, по которым я хотел начать работать с Node.JS
Итак, я установил Node.JS и провел несколько тестов, http-сервер, сокеты и т. Д.
То, что я хотел бы сделать, это создать HTTP-сервер, который тесно интегрирован с MVC Framework, но прежде чем я начну, я должен научиться эффективно строить в Node.
Например, в рамках PHP в качестве фреймворка я бы создал систему загрузки для загрузки всех базовых классов и т. Д., Затем я бы запустил свою систему событий, готовую начать присоединение обратных вызовов.
Я бы продолжал обрабатывать запрос и т. Д., Пока не будет сгенерирован вывод, который затем будет отправлен обработчику вывода, который будет обрабатывать заголовки и т. Д. И т. Д.
Но Node - это совершенно новая среда для этого, и я думаю о лучших методах построения системы в Node.
Информация, которую я ищу, больше связана со структурой проекта, а не с фактическим кодированием приложения, с тем, как загрузить библиотеку, куда загрузить библиотеки, и т. Д. И т. Д.
Любая помощь приветствуется.
Пока что у меня неплохо работает WebApplication, я создал свое приложение довольно традиционно и немного процедурно.
Я начал создавать структуру каталогов, например:
<root>
startup.js
/public/
favicon.ico
/images/
/stylesheets/
/javascripts/
/system/
init.js
config.js
/libs/
/exceptions/
http.js
server.js
/application/
/views/
/_override/
/errors/
generic.view
/partials/
sidebar.voew
index.view
/controllers/
index.js
/models/
users.js
Эта структура каталогов похожа на большинство основанных на MVC веб-приложений, поэтому, используя этот метод, я чувствую себя комфортно.
Файл запуска - это то, что выполняется узлом в качестве точки входа, node startup &
и выглядит так:
/*
* Header of t he file, Copyright etc
*/
var _Intitialize = require("./system/init.js");
//Displays the command line header, title, copyright etc
_Intitialize.DisplayCommandLineHeader();
//Check the enviroment, Permissions, Ports etc
_Intitialize.CheckEnviroment();
//Start the server and listen the port.
_Initialize.StartServer();
файл инициализации - это основная работа, которая сообщает всем другим областям системы, что нужно запустить, остановить и т. д.
У меня есть файл в библиотеках называется serverhandler.js,
и это требуется в init.js, затем я создаю сервер и назначаю обратный вызов ServerHandler.Listener
, Кто затем прослушивает запросы, проверяет, существует ли файл в общедоступном каталоге, если это так, он затем считывает куски и отправляет обратно.
если публичный файл не найден, он создаст маршрут с помощью Route.Create("/path?params"); который удерживает 3 элемента, Controller, Method, Params из uri, а затем загружаются файлы контроллера, если они существуют.
Я принял подход к выбрасыванию страниц с ошибками, например:
if(!FileSystem.exists(RequiredPath))
{
throw new HTTPExceptions.FileNotFound();
}
Надеюсь, это поможет некоторым людям начать работу в Node.
1 ответ
Взгляните на http://dailyjs.com/2010/11/01/node-tutorial/, это довольно актуально.
Я бы посоветовал посмотреть текущие модули тоже https://github.com/joyent/node/wiki/modules и прочитать код любого из проектов в интересующих вас областях, особенно. промежуточное программное обеспечение, маршрутизация и загрузчики модулей.