Angularjs,express和nodejs与视图呈现有关

时间:2017-12-10 04:09:15

标签: node.js angular express routing public

我是Angularjs的新手,我正在尝试使用ngRoute创建一个基本的单页应用。但我有一个问题。我不想让我的用户每次都获得index.html文件。但是如果url是/ page1,我的服务器返回page1,因此index.html没有加载。我尝试通过这样做来解决它:

Angular文件:

 test.config(function($routeProvider, $locationProvider) {
      $routeProvider
        .when('/', {
            templateUrl : '/page1',
            controller  : 'trapController'
        })
        .when('/test', {
            templateUrl : '/page2',
            controller  : 'trapController'
        });
      $locationProvider.html5Mode(true);
    });

Node.js文件:

require('dotenv').load();
const express    = require('express');
const app        = express();
const port = process.env.PORT || 8080;
const bodyParser = require('body-parser');
const path = require('path');
const apirouter = require('./apirouter');
const viewrouter = require('./viewrouter');

app.use('/api', apirouter);
app.use(bodyParser.urlencoded({
  extended: true
}));
app.use(bodyParser.json());
app.use(express.static(__dirname + '/public'));
app.engine('html', require('ejs').renderFile);

app.use('/*', function(req, res){
  res.sendFile(__dirname + '/public/index.html');
});


// START THE SERVER
// =============================================================================
app.listen(port, () => {
  console.log('Server running on port ' + port);
});

但这种方式没有任何效果。似乎每个调用都要求服务器而不是查看公用文件夹。因此,当我调用.js文件时,它会加载一个新的index.html文件......我不知道该怎么做..你能帮助我吗? :)

1 个答案:

答案 0 :(得分:0)

我显然做错了:

更好地利用这个:

app.use('/', express.static(__dirname + '/public'));

比这个:

app.use(express.static(path.join(__dirname, 'public')));