节点的Angularjs路由表达js后端

时间:2016-03-11 22:46:51

标签: javascript angularjs node.js angularjs-routing

我创建了一个带有角度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。有人会对此有所了解吗?解决方案很少,但没有一个解决我的问题。

2 个答案:

答案 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');
});