Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 主干线和快速线路运行良好_Node.js_Backbone.js_Express - Fatal编程技术网

Node.js 主干线和快速线路运行良好

Node.js 主干线和快速线路运行良好,node.js,backbone.js,express,Node.js,Backbone.js,Express,我有一个express应用程序服务于以下路线 /login /signup / /app /app/overview/:company_id/:date /app/rooms/:company_id/:date 我希望我的主干应用程序能够管理以下路由 /login /signup / /app /app/overview/:company_id/:date /app/rooms/:company_id/:date 总之,express提供基本app.jade at/app 然后应该把导航

我有一个express应用程序服务于以下路线

/login
/signup
/
/app
/app/overview/:company_id/:date
/app/rooms/:company_id/:date
我希望我的主干应用程序能够管理以下路由

/login
/signup
/
/app
/app/overview/:company_id/:date
/app/rooms/:company_id/:date
总之,express提供基本app.jade at/app 然后应该把导航交给主干网,但不是拦截,而是给我一条找不到的路线

我该怎么做?假设有人可能复制并粘贴url,如

/app/overview/3/2012-12-12

你可以简单地为应用程序服务,不改变路线

// given your app serves routes.index
app.get('/app/overview/:company_id/:date', routes.index);
app.get('/app/rooms/:company_id/:date', routes.index);
// ... and so on
这样,应用程序将正常运行,允许主干网处理路由。

您可能有两个相关问题:您正在使用推送状态客户端(即使用“真实”URL,而不是/app#overview等散列片段),但(可能)未在主干网中启用推送状态,而且您的express配置不会响应这些客户端路由

使用推送状态URL,您仍然必须在服务器端处理这些URL,因为用户可能会使用这些直接的“客户端”URL访问您的网站(哈希片段不会发生这种情况,因为哈希部分从未发送到服务器)

因此,为了修复服务器端处理,express允许使用正则表达式作为路由,而不是:

app.get('/app', function(req, res) {
  // Render the app...
});
你可以做(见):

因此,无论使用哪个/app/*URL作为web应用程序的入口点,它都会获得必要的内容


然后在主干初始化客户端中,应该使用
Backbone.history.start({pushState:true})
启动历史管理,以便启用推送状态。请参阅。

情况可能并非如此,但我假设他使用的是推送状态,因为他关心的是来自野生URL的复制/粘贴问题。很好-这解决了第一个问题-但是,我也将资源解释为脚本,但当require.js尝试在html中加载app.js文件时,会使用MIME类型text/html传输。有什么想法吗?正确加载所有其他脚本/css/etc。