跳到主要内容

从0到1搭建个人博客(后端篇)

阅读需 3 分钟

后端 - server 篇

记不清这个为什么记录的很少,我这个时候前端似乎直接用的 mock 数据,应该是这个原因

一、解决的问题

1. 文章详情页

我设想的是,路由为 /post 时显示文章列表,点击某文章链接后,路由为 /post/:id,此时显示对应 id 的文章。

问题在于,我一开始对于 router 的理解有误:让 :id 作为 /post 的子路由来实现设想。当 :id 作为子路由,文章列表不会消失,而且还需要在 /post 内加上 <router-view>/ ,子路由内容才会显示。

最终让它们处于同级,加了一个 index.vue (只有 <router-view/> )。虽然多了一个文件,但语义好了不少,设想也实现了:

{
path: '/post',
props: true, // Pass route.params to props
meta: {
title: '文章'
},
children: [
{
path: '',
component: () => import('./views/Post/ThePostList.vue')
},
{
path: ':id',
component: () => import('./views/Post/ThePostDetail.vue')
}
],
// /* webpackChunkName: 'post' */
component: () => import('./views/Post/ThePost.vue'),
}

2. $attrs

通过 props 向文章详情页传递 id ,而不是通过解析 url 来获得 id ,这样便于将组件与路由进行解耦

在上一小节的路由基础上, /post 内点击文章链接后,/post/:id 并不能通过 props 拿到 id

<router-link :to="{ path: post.id, params: { id: post.id }}" append>{{post.title}}</router-link>

通过 Vue-DevTools 发现 index 组件有一个$attrs,其中的值正是我们需要传递的 id

<router-view v-bind="$attrs"/>
<router-link :to="{ path: post.id }" append>{{post.title}}</router-link>

需要注意的是, $attrs.id 并不是我们 path: post.idid 的属性名称,如果将 post.id 改为 post.title 或其他,$attr 依旧是 id 属性,但属性值变为 post.title 的值。

经过测试,这个 index$attrs 是根据路由拿到 $attrs.id 的值的,是 path 的值(注意有 append )。

3. puppetter

剧集、电影、纪录片、书籍等,通过豆瓣豆列来获得数据。

npm install puppeteer --ignore-scripts

const puppeteer = require('puppeteer')
;(async () => {
const browser = await puppeteer.launch({
executablePath: "C:\\...\\chrome.exe"
})
const page = await browser.newPage()
await page.goto('https://evgo2017.com')
await page.screenshot({path: 'evgo2017.png'})
browser.close()
})()

NodeList 转换为数组遍历

// http://tieba.baidu.com/p/5733546171
1.使用for循环
2 通过 [ ].slice.call把类数组转化为数组
3.通过Array.from转为数组
4.通过...nodelist转为数组

4. 初始化数据 created mounted

vue 生命周期

4. 配置阿里云 OSS

挺不错的

5. 多个请求合并

发现每张图片的时间,大都花在TTFB了,下载只有一点点

扩展鼠标移动

暂时未加入评论功能,请在对应公众号文章下或 GitHub Issues下留言反馈。