tiu5 / blog

个人博客
http://chenzhongtao.cn
Apache License 2.0
0 stars 0 forks source link

2019.05 #4

Open tiu5 opened 5 years ago

tiu5 commented 5 years ago
tiu5 commented 5 years ago

导航守卫

参考文档:导航守卫

  • 全局前置守卫 beforeEach
  • to[Route]:即将要进入的目标
  • from[Route]:当前导航正要离开的路由
  • next[Function]:确保要调用 next 方法,否则钩子就不会被 resolved,就相当于没有跳转成功,router-view 不会渲染
  • next(): 进行管道中的下一个钩子。如果全部钩子执行完了,则导航的状态就是 confirmed (确认的)。
  • next(false): 中断当前的导航。如果浏览器的 URL 改变了 (可能是用户手动或者浏览器后退按钮),那么 URL 地址会重置到 from 路由对应的地址。
  • next('/') 或者 next({ path: '/' }): 跳转到一个不同的地址。当前的导航被中断,然后进行一个新的导航。你可以向 next 传递任意位置对象,且允许设置诸如 replace: true、name: 'home' 之类的选项以及任何用在 router-link 的 to prop 或 router.push 中的选项。
  • next(error): (2.4.0+) 如果传入 next 的参数是一个 Error 实例,则导航会被终止且该错误会被传递给 router.onError() 注册过的回调。
// 添加 beforeEach
router.beforeEach((to, from, next) => {
  // ...
})

// vue-router 部分源码
// route => to, current => from, function(to) => next()
hook(route, current, function (to) {
    if (to === false || isError(to)) {
      // next(false) -> abort navigation, ensure current URL
      this$1.ensureURL(true);
      abort(to);
    } else if (typeof to === 'string' || (typeof to === 'object' && (typeof to.path === 'string' || typeof to.name === 'string'))) {
      // next('/') or next({ path: '/' }) -> redirect
      abort();
      if (typeof to === 'object' && to.replace) {
        this$1.replace(to);
      } else {
        this$1.push(to);
      }
    } else {
      // confirm transition and pass on the value
      next(to);
    }
});
tiu5 commented 5 years ago

检查是否为回文串

参考资料:http://singsing.io/blog/fcc/basic-check-for-palindromes/

https://leetcode-cn.com/problems/valid-palindrome/

给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明:本题中,我们将空字符串定义为有效的回文串。

示例 1:

输入: "A man, a plan, a canal: Panama" 输出: true 示例 2:

输入: "race a car" 输出: false

大概步骤:

tiu5 commented 5 years ago

Vue 如何添加自定义方法?全局方法,全局变量?

参考: Vue.js 如何添加全局函数或变量?

Vue 官方文档

tiu5 commented 5 years ago

CSS 中类 (classes) 和 ID 的区别?

tiu5 commented 5 years ago

浮动 float

- 要多一个空盒子很麻烦,进而有利用伪类`:after`
```html
<div class="content">
    <p>123</p>
    <div class="float">321</div>
</div>

<style>
.content {
  background: blue;
}

.float {
  float: left;
}

.content:after {
  content: '';
  clear: both;
  display: block;
}
</style>