文件夹结构
bin - www.js
lib - jsFiles ...
模特 - jsFiles ......
node_modules - 文件夹和文件
public - index.html
路线 - jsFiles ......
index.js
的package.json
我使用Express,angular.js。服务器从www.js开始,然后调用 index.js。之后,当我只输入" localhost:3000"它告诉我 公共/ index.html的。我没有“' /'但它告诉我 '公共/ index.html中&#39 ;.我不明白这。请告诉我 关于这个过程。
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;
答案 0 :(得分:1)
放置文件夹的相对路径(层次结构中的一个)。
var app = require('../index');
答案 1 :(得分:0)
在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')));
代码行具有神奇功效。
您可以here (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
的注册方式,它将服务器内容FROM“public”文件夹。
................
更新:默认如何在
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'}));
希望它有所帮助。