Node.js 主干线和快速线路运行良好
我有一个express应用程序服务于以下路线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 然后应该把导航
/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。