当我在ExpressJS中使用res.send(“HELLO WORLD”)时,为什么还要为我的整个应用程序提供服务?

时间:2016-02-07 00:57:43

标签: angularjs express

我们正在为这个项目使用MEAN堆栈,如果这很重要,我们也可以通过AngularJS进行客户端路由。但是,我想知道为什么客户端会收到任何文件,因为我们只发送“Hello World”。谢谢你的帮助!

编辑:意识到问题与此有关     app.use(express.static(__ dirname +'/ public')); //为用户设置静态文件位置/ public / img将是/ img 但是删除它使得无法向用户提供CSS / JS /其他资源。

var express        = require('express');
var app            = express();

var port = process.env.PORT || 8080; // set our port

// routes ==================================================
require('./app/routes')(app); // pass our application into our routes

// start app ===============================================
app.listen(port);

app.use(methodOverride('X-HTTP-Method-Override')); // override with the X-HTTP-Method-Override header in the request. simulate DELETE/PUT
app.use(express.static(__dirname + '/public')); // set the static files location /public/img will be /img for users
exports = module.exports = app; 

//File: ./app/routes
module.exports = function(app) {
    app.get('*', function(req, res) {
        res.send("HELLO WORLD");
    });
}

1 个答案:

答案 0 :(得分:0)

正如您所指出的,这与express.static为每个请求提供角度应用程序有关。

你可以做两件事:

  1. 添加不同的静态(如此表达来自多个目录的静态文件)路径,如下所示:

    app.use(express.static(__dirname + '/public/img'));
    app.use(express.static(__dirname + '/public/css'));
    
  2. 将您的路线移到静态文件上方/或手动提供角度应用程序,如下所示:

    // test for the route before serving static content
    app.get('/', function(req, res){
        //Send your app on this req
    })
    app.use(express.static(__dirname + '/public'));
    

    这意味着快递将评估请求并尝试在查找静态内容之前找到匹配的路由。