vue.js - 如何使用 Vuejs 处理 url
问题描述
我正在建立一个包含几篇文章的网站。我正在使用 Vue Router,目前我的文章的 url 看起来像 /article/id,例如:http://localhost:8080/article/85
.
http://localhost:8080/article/the-article-title
我怎样才能用文章标题 slug 一个 URL,例如它可以是?
我不知道我应该提供什么样的代码,所以这是我的文章路线:
routes: [
{
path: '/article/:id',
component: require('../components/articlePage.vue').default,
name: 'article',
meta: {title: "article"}
},
]
解决方案
有不同的方法,随着复杂程度的增加和需要处理的方面的增加。
所以要开始 - 为了slug
-ify 文章,你必须在应用程序中引入 slugs。由于在评论中提到所有文章都是先获取的,因此可以将 slugs 添加到每篇文章数据中,然后再使用将单词转换为 kebab-case 或辅助库之一(例如dashify)的自定义函数来存储它们。
这将使得使用:slug
as route渲染文章链接列表成为可能param
,而不是在渲染文章页面之前id
在 store 中搜索 by 。好消息是,通过将逻辑扩展为按 2 个字段进行搜索,param
仍然可以保持两个选项 (slug
和) 可用。id
取决于您的目标 - 可能就是这样。但是,如果文章标题已更改并且用户通过外部保存的链接(在社交媒体中共享、由搜索引擎索引等)访问文章,就会出现问题。这打败了SEO。
为了保持文章可访问,最好slug
在后端包含必填字段。Slug 仍然可以使用相同的方法生成,但在 CMS 中 - 在文章存储到数据库之前。在这种情况下,它可以进行双重检查、手动编辑(因为由于字符长度、特殊符号等原因,slugs 并不总是代表完整的文章标题)并且可以访问以进行查询,从而消除了前端应用程序中字符串操作的麻烦。
这也创建了配置301 重定向的选项以保留索引,即使在slug
通过保存旧 slug 进行更改后也是如此。但是这样的问题超出了当前问题的范围,即使是一个很好的做法。
推荐阅读
- angular - 我需要通过 API 控制器的 GET 请求将 JSON 对象数组放入 Angular 页面
- matlab - MATLAB将graythresh输出转换为实际强度
- github - 将 zip 文件推送到 GitHub 存储库
- mongodb - 在 MongoDB 中,如何只获取集合的特定字段?
- python - 在 numpy 中创建 4 维张量掩码
- c# - C# -- 如何为 MSMQ 构建动态队列路径名?
- wordpress - Woocommerce:不能使用 woocommerce 模板
- ios - 无法写入 iCloud Drive
- angular - 扩展角材料组件的更好方法
- drupal - WSO2 身份服务器 - SAML - 重定向页面一直加载,而不是把我带到应用程序