这是一个非常新手的问题.但是,在EmberJS中,我发现这两种方法都适用于链接到我的应用程序中的博客页面.
<p>{{#link-to 'posts'}} See my blog{{/link-to}}</p>
<a href="posts"> See my blog</a>
Run Code Online (Sandbox Code Playgroud)
在EmberJS中使用{{link-to}}会更好吗?怎么会?
不同之处在于{{link-to}}组件将导航到当前运行的Ember应用程序中的指定路径,同时<a href="posts">将对该位置执行新的浏览器请求并在该路径上重新启动Ember应用程序.您应该使用,{{link-to}}因为您将使用Ember内部在单页应用程序中导航,这将是一种更流畅的用户体验.
虽然它们都可以工作,但仔细观察您的浏览器,您会看到锚标记将为您提供页面刷新并重新启动您的Ember应用程序(尽管位于正确的位置).使用a {{link-to}}会感觉更快,因为Ember通过javascript呈现新页面而不是在页面刷新后重新启动.这是在单页面应用程序中导航和从外部页面跳转到SPA 之间的区别.
虽然Ember确实使用锚标记代替{{link-to}}at运行时,但它会插入以停止默认的锚标记行为.文档解释如下:
默认情况下,
{{link-to}}组件通过调用preventDefault()来阻止默认浏览器操作,因为这种操作冒泡通常在内部处理,我们不希望将浏览器带到新URL(例如).
(来自https://emberjs.com/api/classes/Ember.Templates.helpers.html#toc_allowing-default-action)
此外,使用{{link-to}}组件,您可以将模型直接传递到路径中.这有点先进,但Ember指南有一些很好的例子.
https://guides.emberjs.com/v2.13.0/templates/links/