我们可以使用ui路由器与nodejs中的expressjs服务器端路由来使用客户端angularjs路由。以下是示例

时间:2017-03-26 17:50:22

标签: angularjs node.js express angular-ui-router

示例:

var bodyparser=require('body-parser');
var fs=require('fs');
var express=require("express");
var myApp = express();
var MongoClient=require('mongodb').MongoClient;
var assert=require('assert');
var url = 'mongodb://localhost:27017/dbname';
var ObjectId=MongoClient.ObjectID;
var http=require('http');

myApp.use(express.static("."));
myApp.use(bodyparser.json());
myApp.listen(5000);

我正在使用服务器(apache或节点)从那里加载索引文件后,使用ui-router使其成为一个运行良好的SPA,在运行于apache服务器但是这不能正常运行在节点上运行:< / p>

正在正确加载索引但是跟随url: http://localhost:5000/Test/#/dashboard  抛出消息:节点服务器中的“无法GET / Test /”,如何使路由在expressjs中正常工作

$ urlRouterProvider.otherwise( '/登录');

var DASHBOARD_ROOT = 'templates';

$ stateProvider.state('index',{         url:'/ login',         templateUrl:'login.html',         controller:'employeeInfoCtrl'     });

$stateProvider.state('dashboard', {
    abstract :true,
    url: '/dashboard',
    templateUrl: 'dashboard.html',
    controller: 'employeeInfoCtrl'
});

$stateProvider.state('dashboard.home',{
    url:'',
    templateUrl: DASHBOARD_ROOT +'/Home.html'
});
$stateProvider.state('dashboard.about',{
    url:'/about',
    templateUrl: DASHBOARD_ROOT +'/about.html'
});
$stateProvider.state('dashboard.employeeinfo',{
  url:'/employeeinfo',
  templateUrl:DASHBOARD_ROOT+'/employeeinfo.html'
});

2 个答案:

答案 0 :(得分:1)

在节点中:您必须添加路径GET#test

myApp.get('/test',function(req,resp){

    resp.render('index.html');
})

答案 1 :(得分:0)

您可以通过

定位客户端构建目录来实现这一目标
app.get('*', (req, res) => res.sendFile('index.html')));

然后使用通配符(*)将所有请求重定向到index.html文件

ALARM_ID