我创建了一个带有角度js前端的nodejs后端。我有以下angularjs代码用于路由。
var myApp = angular.module('myApp ', ['ngRoute']);
myApp .config(['$routeProvider', '$locationProvider', function($routeProvider){
$routeProvider
.when('/login', {
templateUrl : 'login.html',
controller: 'loginController'
}).otherwise({
templateUrl : 'main.html',
controller : 'mainController'
});
}]);
我的app.js包含以下代码。 (注意:我正在使用快速js框架3.0)
app.use(app.router);
app.use('/',function(req, res) {
res.sendfile(__dirname + '/public/index.html');
});
我将所有htmls放在公共文件夹中,结构就像这样。
public/
-css folder
-angular dependencies
-all my htmls (index.html,login.html,main.html)
routes/
-index.js
views/
-index.ejs
-error.ejs
app.js
现在,当我点击我的基本网址时,index.html根据我在上面给出的app.js中提供的代码加载。然后angular将main.html代码插入 ng-view div中。当我点击/ login时,我希望加载login.html。但相反,正在加载相同的main.html。有人会对此有所了解吗?解决方案很少,但没有一个解决我的问题。
答案 0 :(得分:0)
我认为你想要的是express.static
app.use(express.static(__dirname + '/public'));
如果请求是" login.html"它首先检查该文件的公共目录。
答案 1 :(得分:0)
How to use AngularJS routes with Express (Node.js) when a new page is requested?
这帮助了我。
我做了更改
myApp.config(['$routeProvider', '$locationProvider',
function($routeProvider,$locationProvider){
$routeProvider
.when('/login', {
templateUrl : 'login.html',
controller: 'loginController'
}).when('/', {
templateUrl : 'main.html',
controller : 'mainController'
});
$locationProvider.html5Mode(true);
}]);
更改为app.js
app.use(express.static(path.join(__dirname, 'public')));
app.use(express.static(__dirname + '/public'));
app.use(app.router);
app.use('/',function(req, res) {
res.sendfile(__dirname + '/public/index.html');
});