【发布时间】:2026-02-20 05:15:01
【问题描述】:
我正在使用 Node 和 Anugular,并且我从我的应用程序中创建了一个 RESTful api,并创建了一个 Angular 资源来使用它。我对 Angular ui-router 指令如何与服务器上的节点路由系统协调感到困惑。
目前我已经在 ui-router 中设置了我的路由/状态,如下所示:
$stateProvier
.state('admin', {
url:'/admin',
templateUrl:'views/admin.html',
controller: 'adminController'
});
当我从加载页面上的链接导航到此 url 时,这会加载到我主页上的 ui 视图中。
但是,当我手动输入 localhost/admin 时,我会从 Node 获取路由,而不是通过 angular 渲染状态。
现在,我希望 Angular 处理我的应用程序上的所有导航,以及获取信息的资源,即使地址是手动输入到导航栏中的。
我在 Node 中为 index 创建了一个路由,其中包含我来自 angular 的 index.html 页面,它有效地包含了整个应用 Angular 代码,包括所有路由。
我的问题是,如果我在地址栏中手动输入 url,并且仍然有来自 $resource 的数据,如何获得角度重定向。
我正在将我的资源定向到“/admin” - 这可能是问题所在吗?
这是否意味着我需要将 /routes/appointments' 的内容添加到基本节点文件(server.js)中,然后删除路由?如果是这样,那么我如何将我的资源定向到正确的 REST api?
应用结构
公开 -角度应用程序 -app.js //对于角度 路线 index.js 约会.js 楷模 意见 - index.ejs server.js //节点服务器文件
这是我的代码摘录 server.js
//standard routing code
var routes = require('./routes/index');
var appointments = require('./routes/appointments');
var app = express();
//configuring Express
app.set('port', process.env.PORT || 3000);
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.set('views', __dirname + '/views');
app.engine('html', require('ejs').renderFile);
app.set('view engine', 'html');
app.use('/', routes);
app.use('/', appointments);
路由/index.js
var express = require('express');
var router = express.Router();
// ./routes/index.js
router.get('/', function(req, res) {
res.render('index', { title: 'Homepage' });
});
module.exports = router;
routes/appointments.js - 这是我的 RESTFUL api 的基础
var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');
var Todo = require('../models/Appointments.js');
/* GET /todos listing. */
router.get('/admin', function(req, res, next) {
Todo.find(function (err, todos) {
if (err) return next(err);
res.json(todos);
});
});
module.exports = router;
【问题讨论】:
标签: javascript angularjs node.js url-routing