使用 Node.JS

Working with Node.JS

提问人:RobertPitt 提问时间:3/3/2011 最后编辑:RobertPitt 更新时间:5/9/2012 访问量:3766

问:

昨晚我转储了Windows 7并将我的硬盘格式化为移植到基于Linux的操作系统,纯粹是因为我想开始使用Node.JS

所以我安装了Node.JS,并做了一些测试,http服务器和套接字等。

我想做的是构建一个与 MVC 框架紧密集成的 HTTP 服务器,但在我开始之前,我需要学习如何在 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的Web应用程序一样,所以使用这种方法我感到很舒服。

启动文件是由节点作为入口点执行的,如下所示: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();

初始化文件是主要工作,它告诉系统的所有其他区域运行、停止等。

我在 libs 中有一个文件调用,这是 init.js 中必需的,然后我创建一个服务器并将回调分配给 .然后,谁侦听请求,检查文件是否存在于公共目录中,如果存在,则读取块并发送回去。serverhandler.js,ServerHandler.Listener

如果在公共场合没有找到文件,它将使用 Route.Create(“/path?params”);它阻止了 uri 中的 3 个元素,Controller、Method、Params,然后加载控制器文件(如果存在)。

我采用了抛出错误页面的方法,如下所示:

if(!FileSystem.exists(RequiredPath))
{
     throw new HTTPExceptions.FileNotFound();
}

希望这能帮助一些人开始使用 Node。

节点 .js 结构 应用程序设计

评论

12赞 macarthy 3/3/2011
+1 用于转储 windows7
1赞 RobertPitt 3/3/2011
是的,到目前为止,我对 Ubuntu 非常满意:)
0赞 macarthy 3/3/2011
把你的Win7放在一个虚拟的盒子里,死得容易
1赞 RobertPitt 3/4/2011
@Macarthy,但我不想要 Windows 7,我想要开源并强大的完整操作系统来支持我的编程需求。
1赞 macarthy 3/4/2011
@Robertpitt - 大声笑 - 我知道!,不幸的是,在某些时候你需要在颤抖的IE中进行测试

答:

4赞 macarthy 3/3/2011 #1

看看 http://dailyjs.com/2010/11/01/node-tutorial/,这是非常相关的。

我建议 https://github.com/joyent/node/wiki/modules 查看当前的模块,并阅读您感兴趣的领域中任何项目的代码,尤其是中间件、路由和模块加载器。