簡體   English   中英

節點我的應用程序如何找到index.js

[英]node how can My app find index.js

資料夾結構

  • 斌-www.js

  • lib-jsFiles ...

  • 模型-jsFiles ...

  • node_modules-文件夾和文件

  • 公共-index.html

  • 路線-jsFiles ...

  • index.js

  • package.json

我使用Express,angular.js。 服務器從www.js開始,並調用index.js。 之后,當我僅鍵入“ localhost:3000”時,它將顯示為public / index.html。 我沒有“ /”的路線,但顯示為“ public / index.html”。 我無法理解這。 請讓我知道有關過程。

www.js

var debug = require('debug')('example-server');
var app = require(process.cwd()+'/index');

//listen at 3000 port
app.set('port',process.env.PORT || 3000);


var server = app.listen(app.get('port'),function()
{
    debug('Express server listening on port ' + server.address().port);
});

index.js

var favicon      = require('serve-favicon');
var express      = require('express');
var path         = require('path');
var logger       = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser   = require('body-parser');
//Connection for DB
require('./lib/connection');
var employees    = require('./routes/employees');
var teams        = require('./routes/teams');
var app = express();

// Writing at routing table
app.use(favicon(__dirname + '/public/favicon.ico'));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended:true }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname,'public')));

app.use(employees);
app.use(teams);


// send 404 to errorhandler
app.use(function(err,req,res,next)
{
    var err = new Error('Not Found');
    err.status = 404;
    console.log(error);
    next(error);
});

...
...
module.exports = app;

將相對路徑放置到文件夾(在層次結構中向上)。

var app = require('../index');

在express.js中,注冊中間件的順序有很大的不同。

當express.js收到請求時,它從頂部開始並執行注冊的中間件。

中間件是使用app.use(middleware_goes_here)在快速應用程序中注冊的,無論請求的URL是什么,這種中間件都會執行,另一方面,您也可以注冊像app.use('/url/path',middleware_goes_here)在這種情況下,我們正在將該中間件注冊到'/ url / path',因此,僅當您訪問'/ url / path'時,該中間件才會執行(並且以前匹配的中間件中的任何一個都將在不調用next()的情況下提供請求)

這個app.use(express.static(path.join(__dirname,'public'))); 代碼行神奇了。

您可以在此處(express.static ref)了解有關靜態內容服務和路由的更多信息。

基本上發生的是,我們正在配置express.static中間件以“按原樣”從“ public”文件夾中提供靜態內容。 因此,當您發出任何請求且它與公用文件夾中的靜態內容匹配時,它將為它提供服務,否則express.static將按順序調用下一個中間件。

因此,在您的情況下,實際上是服務器輸入請求的第一個中間件是express.static沒有任何路由過濾器,因此即使沒有專門定義的路由,它也可以index.html 如果您的public文件夾中的文件有public/javascript/jquery.js那么以下網址將映射到它http://localhost:3000/javascript/jquery.js

注意:您不必在URL中指定“ public”,即express.static的注冊方式,它將從“ public”文件夾中存儲內容。

................

更新:default如何在express.static工作?

默認情況下, app.use(express.static(path.join(__dirname,'public'))); 這將使用index.html作為默認文檔。 如果您想將index2.html設置為默認文檔,則可以通過執行以下app.use(express.static(path.join(__dirname,'public'),{index: 'index2.html'}));來做到這一點app.use(express.static(path.join(__dirname,'public'),{index: 'index2.html'}));

希望能幫助到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM