Я немного смущен тем, как бороться с хэшами Backbone и pushState.Использование узла для перенаправления PushState с помощью вложенных базовых каталогов
В основном я хочу
localhost:3004/#/explore
быть
localhost:3004/explore
и
localhost:3004/#/profile/123456
быть
localhost:3004/profile/123456
Первым делом было указать все мои статические каталоги, которые, похоже, работают, поскольку я могу получить доступ ко всем файлам напрямую через браузер.
app.configure(function(){
app.use("/js", express.static(path.join(__dirname, 'www/js')));
app.use("/assets", express.static(path.join(__dirname, 'www/assets')));
app.use("/style", express.static(path.join(__dirname, 'www/style')));
app.use("/templates", express.static(path.join(__dirname, 'www/templates')));
app.use("/config", express.static(path.join(__dirname, 'www/config')));
app.use(express.favicon());
app.use(express.logger());
app.use(express.cookieParser());
app.use(express.bodyParser());
app.use(express.session({
secret: 'adasdasdasdasdasdasdasdasdasdasd'
}));
app.use(passport.initialize());
app.use(passport.session());
app.use(express.methodOverride());
app.use(allowCrossDomain);
app.use(app.router);
app.use(express.static(clientDir));
});
Это похоже на работу, так как теперь я могу перейти к любому файлу из строки местоположения.
Я также настроен на использование PushState
Backbone.history.start({pushState: true});
Где я запутался в захвате первоначального вызова страницы и убедившись, что он попадает index.html. Однако он также должен проходить в каталогах, поэтому маршрутизатор BackBones знает, куда идти.
Пару неудачных попыток включают в себя:
app.get("*", function(req, res) {
fs.createReadStream(path.join(clientDir, 'index.html')).pipe(res);
});
другой
app.get("*", function(req, res) {
res.redirect('http://localhost:3004#/'+req.url);
});
другой
app.get('/', function(req, res){
res.sendfile(path.join(clientDir, 'index.html'));
});
любые идеи, было бы полезно.
Я открыт для других методов, таких как htaccess и т. Д., Хотя и не уверен, как это будет работать с развертываниями heroku.