ExpressJs - 让服务器子路由与 Angular 工厂 svcs 一起工作
ExpressJs - Getting Server Sub-routes to work with Angular factory svcs
为了便于维护,我想划分我的服务器路由:
server.js(启动应用程序):
require('./routes/allRoutes')(app);
allRoutes.js:
module.exports = function(app){
//don't I need to pass (app) below? This will not work as is
var Group1 = require('../routes/Group1/groupRoutes')(app),
Group2 = require('../routes/Group2/groupRoutes')(app);
app.use('/group1', Group1);
app.use('/group2', Group2);
}
groupRoutes.js:(在 Group1 文件夹中)
module.exports = function(app){
//don't I need to pass (app) below? This will not work as is
var SubGroup1 = require('../routes/Group1/subGroup1Route')(app);
.....
app.use('/subgroup1', SubGroup1);
}
subGroup1Routes.js:(在 Group1 文件夹中)
var FooCrtl = require('../../controllers/Group1/subGroup1/FooCtrl');
module.exports = function(app){
app.get('/api/foo', FooCtrl.get);
app.post('/api/foo', FooCtrl.post);
}
AngularJs FooSvcs:
....
return {
getFoo: function(){
return $http({
method: 'GET',
url: '/group1/subgroup1/api/foo', <--- NOT WORKING
});
},
双重问题:
在服务器端,我不需要将 "app" 作为参数传递到路由树中吗?我试过了,但收到一个错误。
在上面的场景中,我的 angular 工厂的正确 url 是什么,因为我有什么不起作用。
好吧,这很难,但我终于解决了。
我希望在服务器端划分我的路由结构以在客户端 [angular] 端镜像我的模块结构是正确的方法。
我认为我需要创建一个 树结构 [<-- WRONG]我的服务器路由 NOT 这种情况。
示例:
客户端[angular]端:
public
---- app
---- module A folder
---- module B folder
---- module C folder
服务器 [express] 端结构:
server
---- routes
---- route A folder
--- foo apis
--- bar apis
---- route B folder
---- route C folder
foo api 服务器端结构:
var express = require('express'),
FooCtl = require('../../controllers/foo/FooCtl');
module.exports = function(app){
app.get('/api/foo', FooCtl.get);
....
}
我不需要在该文件夹中创建 "parent route" 来收集我的路线。
相反,在我的根中使用“npm install --save wrench”,server.js:
var express = require('express'),
path = require('path'),
wrench = require('wrench');
wrench.readdirRecursive("routes", function (error, files) {
if(files != null){
files.forEach(function (file) {
if (file.indexOf('.js') > -1 && file != undefined) {
fullPath = ('./routes/' + file);
console.log(fullPath);
require(fullPath)(app);
}
})} });
一切正常!
为了便于维护,我想划分我的服务器路由:
server.js(启动应用程序):
require('./routes/allRoutes')(app);
allRoutes.js:
module.exports = function(app){
//don't I need to pass (app) below? This will not work as is
var Group1 = require('../routes/Group1/groupRoutes')(app),
Group2 = require('../routes/Group2/groupRoutes')(app);
app.use('/group1', Group1);
app.use('/group2', Group2);
}
groupRoutes.js:(在 Group1 文件夹中)
module.exports = function(app){
//don't I need to pass (app) below? This will not work as is
var SubGroup1 = require('../routes/Group1/subGroup1Route')(app);
.....
app.use('/subgroup1', SubGroup1);
}
subGroup1Routes.js:(在 Group1 文件夹中)
var FooCrtl = require('../../controllers/Group1/subGroup1/FooCtrl');
module.exports = function(app){
app.get('/api/foo', FooCtrl.get);
app.post('/api/foo', FooCtrl.post);
}
AngularJs FooSvcs:
....
return {
getFoo: function(){
return $http({
method: 'GET',
url: '/group1/subgroup1/api/foo', <--- NOT WORKING
});
},
双重问题:
在服务器端,我不需要将 "app" 作为参数传递到路由树中吗?我试过了,但收到一个错误。
在上面的场景中,我的 angular 工厂的正确 url 是什么,因为我有什么不起作用。
好吧,这很难,但我终于解决了。
我希望在服务器端划分我的路由结构以在客户端 [angular] 端镜像我的模块结构是正确的方法。
我认为我需要创建一个 树结构 [<-- WRONG]我的服务器路由 NOT 这种情况。
示例:
客户端[angular]端:
public ---- app ---- module A folder ---- module B folder ---- module C folder
服务器 [express] 端结构:
server ---- routes ---- route A folder --- foo apis --- bar apis ---- route B folder ---- route C folder
foo api 服务器端结构:
var express = require('express'), FooCtl = require('../../controllers/foo/FooCtl'); module.exports = function(app){ app.get('/api/foo', FooCtl.get); .... }
我不需要在该文件夹中创建 "parent route" 来收集我的路线。
相反,在我的根中使用“npm install --save wrench”,server.js:
var express = require('express'), path = require('path'), wrench = require('wrench'); wrench.readdirRecursive("routes", function (error, files) { if(files != null){ files.forEach(function (file) { if (file.indexOf('.js') > -1 && file != undefined) { fullPath = ('./routes/' + file); console.log(fullPath); require(fullPath)(app); } })} });
一切正常!