我是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文件......我不知道该怎么做..你能帮助我吗? :)
答案 0 :(得分:0)
我显然做错了:
更好地利用这个:
app.use('/', express.static(__dirname + '/public'));
比这个:
app.use(express.static(path.join(__dirname, 'public')));