Jestem nowy w świecie node.jsPodłącz i ekspresowe utils
Według tego tematu: What is Node.js' Connect, Express and “middleware”?
dowiedziałem się, że Connect był częścią Express
I wykopali trochę w kodzie, i znalazłem dwie bardzo interesujące pliki:
./myProject/node_modules/express/lib/utils.js
lepszych:
./myProject/node_modules/express/node_modules/connect/lib/utils.js
Te dwa pliki są pełne przydatnych funkcji i zastanawiałem się, jak prawidłowo je wywołać.
Jak dotąd, w ./myProject/app.js
, że to, co robię:
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');
Ale okazało się to trochę niezdarny, a co o moich innych plików?
przykład, oto jeden z moich trasach:
myResources = app.resource(
'myresources',
require('./routes/myresources.js'));
i tu jest treść 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?
}
};
Jak widać w komentarzu po res.send(400)
, zadaję sobie pytanie, czy można użyć funkcji badRequest
, która znajduje się w pliku utils.js
modułu Connect.
Co z ładną funkcją md5
w tym samym pliku?
Czy muszę umieścić ten hugly zadzwonić na początku mojego myresources.js
je ?:
var connectUtils =
require('../node_modules/express/node_modules/connect/lib/utils.js');
użyciu lub, tam jest bardziej eleganckie rozwiązanie (nawet dla app.js
)?
Z góry dziękujemy za pomoc!
Nie można oczekiwać, że ta technika będzie odporna na przyszłość. 'express @ 4.0.0' może całkowicie zmienić to, jak funkcjonuje wewnętrznie i wszystko, co wiesz, może zrzucić' connect' (raczej nie, ale masz rację). I znowu, jeśli użyjesz 'connect' (tej samej wersji, która jest używana przez' express') w zależnościach twojego projektu, ta technika nie zadziała. –
@GauthamBadhrinathan Nie przewiduję wyraźnego zrzucania połączenia w najbliższym czasie :) Jednak connect może łatwo zmienić lokalizację swoich plików lub to, co jest w nich - które IMHO jest o wiele większym niebezpieczeństwem. Ta technika powinna nadal działać, nawet jeśli włączysz połączenie w zależnościach projektu, ścieżka nadal wskazuje na wyrażenie, więc plik node.js przejdzie najpierw do wyrażenia. z sekcji dokumentacja node.js (moduły plików): * Bez wiodącego znaku "/" lub "./ 'aby wskazać plik, moduł jest albo "modułem rdzeniowym" lub jest ładowany z folderu node_modules. * http://nodejs.org/api/all.html#all_file_modules – Leonidaz
Tak, przejdzie to do 'express 'który jest albo" modułem rdzenia "lub jest w" module węzła ". Ale jeśli 'connect' zostanie dodany jako zależność projektu, to nie znajdziesz katalogu' connect' * w * katalogu 'express/node_modules'. –