ember.js - 客户端 Javascript 应用程序 - 没有哈希标记的 url 路由

标签 ember.js url-routing client-side javascript-framework

我正在使用最新版本的 Ember.js 开发一个新的仅限客户端的应用程序。有一个 PHP 页面可以构建脚本、css、模板文件等,并将其全部交付到 index.php 中。我正在使用 htaccess 指令,以便将所有请求都重写到/index.php。就我而言,PHP 只是为了方便地打包 Javascript。

目前,浏览器中的路由看起来像这样并且工作得很好。

/#/about 
/#/favorites
/#/etc
/#/posts/5/edit

但是,我希望它们看起来像这样 - 这不能正常工作。
/about
/favorites
/etc
/posts/5/edit

第二个选项仍然提供完全相同的客户端代码 - 但它总是命中索引路由处理程序。我以前见过客户端应用程序实现这一点 - 我错过了什么?我需要在 PHP 端有匹配的路由处理程序吗?

编辑:我正在寻找如何解决这个问题的具体答案。网络上充斥着“哦——你就这么做”的信息,让其他人摸不着头脑。

最佳答案

在 Ember.js(版本 1.0.0rc3)中,这可以通过使用 Ember.js location API 来完成。 :

App.Router.reopen({
  location: 'history'
});

然后设置 Web 服务器将流量重定向到 Ember 应用程序。

这里举一个具体的例子是一个基本的 Apache .htaccess将流量重定向到位于 index.html 中的 Ember 应用程序的文件:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.html#$1 [L]

Alex White指出 Apache 2.2.16 及更高版本支持将流量重定向到单个目标的更简单配置:
FallbackResource /index.html

FallbackResourcemod_dir 的一部分模块和需要 AllowOverride Indexes要设置。

确保彻底测试应用程序路由。一个常见错误是 Uncaught SyntaxError: Unexpected token < ,这是由使用 CSS 和 JS 文件的相对链接引起的。在它们前面加上 /标记使它们绝对。

这个功能是not supported in Internet Explorer <10 .

关于ember.js - 客户端 Javascript 应用程序 - 没有哈希标记的 url 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14845048/

相关文章:

javascript - 为多对多模型创建记录 EmberJS 2.6

php - 我可以通过php执行js文件吗?

javascript - 获取对象 #<Object> 在 Ember 中没有方法 'map'

javascript - 如何从模板中调用 ember.js 中的模型函数?

ember.js - 为什么 ember 自动将错误的 Controller 传递给 View 实例?

asp.net-mvc - 我可以让 ASP.NET MVC Html.RouteLink() 返回没有 ID 的主页 url 吗?

Angular 4 Routing 不适用于实时网络应用程序

ruby-on-rails - 如何在 Rails 中创建分层永久链接/路由?

javascript - 哪个有更好更流畅的 DOM 操作 API? Chrome 还是火狐?

node.js - 从服务器更新客户端信息,无需每次发送请求