我有一个指向不同文章的链接列表。 它们看起来像这样:
<a ui-sref="post-view({ id: post._id })">...</a>
他们生成这样的href:href="/blog/546cb8af0c0ec394d7fbfdbf"
,这就是它应该做的。当我点击链接时,我会转到 ID 为 546cb8af0c0ec394d7fbfdbf
的相关文章。
但是,我认为在 url 中添加 id 比在文章标题中添加用户友好性要差一些,而这正是我想要的。但我想不出什么好的方法。
由于文章标题不一定是唯一的,因此我不知道如何根据标题从数据库中获取正确的文章(这是不可能的,我需要一些唯一的东西来查找它)。
我已经在 Node 上使用 mongodb、express 和 Angular 构建了该网站。对于路由,我使用 Angular ui-router 项目。
这是 ui.router 中路由的样子:
.state('post-view', {
url: '/blog/:id',
templateUrl: '/post',
controller: 'post'
})
如您所见,我在 URL 中使用 :id
,并在 post
Controller 中访问该 URL。
如果我应该在同一页面上显示文章,作为当前事件状态的子状态,我可以从父状态继承 id,但由于这会导致一个新页面,所以我不会确定我能做什么。
有人有这方面的经验吗?
最佳答案
我建议你使用slug。 slug 是标题的 URL 友好版本,
标题:我的英雄帖子
鼻涕虫:/my-hero-post
WordPress 广告示例每当从标题创建 slug 时都会进行一些替换:
您需要做的是将标题中的 å
或 /
等字符替换为 URL 友好的字符,并将空格替换为 -
和然后在创建帖子时将其保存为帖子对象中的唯一键。您还可以查看 Ghost 源代码的示例:
这个 NPM 包实际上为您完成了大部分工作:slugify
关于javascript - 在 url 中使用文章标题,而不是 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27034929/