连接和Express工具

时间:2012-03-28 06:10:40

标签: node.js express connect

我是Node.js世界的新手

根据这个主题:What is Node.js' Connect, Express and “middleware”?
我了解到ConnectExpress

的一部分

我在代码中挖了一点,我发现了两个非常有趣的文件:

./myProject/node_modules/express/lib/utils.js

更好:

./myProject/node_modules/express/node_modules/connect/lib/utils.js

这两个文件充满了有用的功能,我想知道如何正确调用它们。

到目前为止,在./myProject/app.js中,这就是我所做的:

var express = require('express')
  , resource = require('express-resource')
  , mongoose = require('mongoose')
  , expresstUtils =
      require('./node_modules/express/lib/utils.js');
  , connectUtils =
      require('./node_modules/express/node_modules/connect/lib/utils.js');

但我发现它有点笨拙,那我的其他档案呢?

例如,这是我的一条路线:

myResources = app.resource(
                'myresources',
                require('./routes/myresources.js'));

以下是myresources.js的内容:

exports.index = function(req, res)
{
  res.render('./myresources.jade', { title: 'My Resources' });
};

exports.show = function(req, res)
{
  fonction resourceIsWellFormatted(param)
  {
    // Here is some code to determine whether the resource requested
    // match with the required format or not
    // return true if the format is ok
    // return false if not
  }

  if (resourceIsWellFormatted(req.params['myresources']))
  {
    // render the resource
  }
  else
  {
    res.send(400); // HEY! what about the nice Connect.badRequest in its utils.js?
  }
};

正如您在res.send(400)之后的评论中所看到的,我问自己是否可以使用Connect模块的badRequest文件中的utils.js函数。 / p>

同一个文件中的md5函数怎么样?

我是否必须在myresources.js开始时使用这个恶意电话来使用它们?:

var connectUtils =
      require('../node_modules/express/node_modules/connect/lib/utils.js');

或是否有更优雅的解决方案(即使是app.js)?

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

如果您想直接访问connect,建议您安装connect作为项目的依赖项,以及express。然后你可以var utils = require('connect').utils

答案 1 :(得分:2)

我提出的唯一更优雅的方法是(假设express位于你的根“node_modules”文件夹中):

require("express/node_modules/connect/lib/utils");

节点安装在Windows上,节点版本为0.8.2


以及一些额外信息:

这样你就不需要知道你在路径中的位置并被迫使用相对路径(./或../),这可以在任何文件嵌套级别上完成。

我将所有自定义模块放在根“node_modules”文件夹中(我命名为我的文件夹“custom_modules”)并在任何嵌套级别以这种方式调用它们:

require("custom_modules/mymodule/something")