0%

组件类

组件类,详细分的话有三种类,第一类说白了就是我平时用于继承的基类组件Component,PureComponent,还有就是react提供的内置的组件,比如Fragment,StrictMode,另一部分就是高阶组件forwardRef,memo等。

House in Provence

阅读全文 »

正则基本概念

  • 正则基础规则
    • 正则支持任意朴素字符
      • hello world
    • 正则支持子正则的平行拼接
      • ^h(a|e)?llo\sworld\b.*$
  • 字符模式 (匹配单个字符串)
    • 字符组
      • [abc] a或b或c (匹配这些字符)
      • [^abc]不是 a 或 b 或 c 的其他字符(排除这些字符)
      • [a-z] 匹配a-z
      • [g-zA-F1-5] 匹配小写 g 到 z、大写 A 到 F、数字 1 到 5
    • 转义字符
      • .任意字符
      • \s 空格
      • \S 非空格
      • \d 数字
      • \D 非数字
      • \w 字符(字母+数字+下划线)
      • \W 非字符
      • \t tab
      • \n 换行
      • \r 回车
    • 捕获和引用
      • 捕获组()
        • (hallo) 匹配 hallo,且捕获括号内内容
        • (捕获组的捕获顺序,按左括号从左到右为 1234…)
      • 正则内引用 \1
        • (a,b).\1匹配 ‘ab,ab’
      • 结果引用 (replace第二参数的特殊字符)
        • $1 按捕获顺序,例如:abcd.replace(/(ab)/, '$1,')
        • $& 匹配的整个子串
        • $` 匹配子串的左边文本(键盘左侧的反引号)
        • $’ 匹配子串的右边文本(键盘右侧的引号)
        • $$ 转义 $
      • 组合模式(正则串的单次组合)
          • h(a|e)llo 匹配 hallo 或 hello(切换匹配(并捕获))
        • 量词(左边的 a 可以是任意正则模式)
          • a+ 匹配 ‘a、’aa’(至少一个)
          • a* 匹配 ‘’、’aaa’(零或多个)
          • a? 匹配 ‘’, ‘a’ (零或一个)
          • a{3} 匹配aaa (精确的N个)
          • a{3,} 匹配 ‘aaa’ 到 ‘aaaaaaa…’ (至少n个)
          • a{3,6} 匹配 ‘aaa’ 到 ‘aaaaaa’(N 到 M 个)
        • 非贪婪 (惰性)
          • a{3,6}? 匹配 ‘aaa’(非贪婪:匹配到越少越好)
      • 位置模式(位置不是字符,不具有宽度)
        • 转义字符
          • ^ 行开头
          • $ 行结尾
          • \b 单词边界
          • \B 非单词边界
        • 断言 (其中的 a 可以是任意子正则)
          • (?=a) Positive lookahead,右边匹配
          • (?!a) Negative lookahead,右边不匹配
          • (?<=a) Positive lookbehind,左边匹配
          • (?<!a) Negative lookbehind,左边不匹配
      • flags
        • g global,全部(多次)匹配
        • i case-insensitive,忽略大小写
        • m multi-line,多行匹配
        • u unicode,开启 unicode 支持

不可或缺的curry

curry的概念很简单:只传递给函数一部分参数来调用它,让它返回一个函数去处理剩下的参数、

你可以一次性地调用curry函数,也可以每次只传一个参数分多次调用

阅读全文 »

纯函数的概念

纯函数是这样一种函数,即相同的输入,永远会得到相同的输出,而且没有任何可观察的副作用

比如 slicesplice,这两个函数的作用并无二致——但是注意,它们各自的方式却大不同,但不管怎么说作用还是一样的。我们说 slice 符合纯函数的定义是因为对相同的输入它保证能返回相同的输出。而 splice 却会嚼烂调用它的那个数组,然后再吐出来;这就会产生可观察到的副作用,即这个数组永久地改变了

阅读全文 »

在 Vue.js 中,组件是一个非常重要的概念,整个应用的页面都是通过组件渲染来实现的

首先,组件是一个抽象的概念,它是对一棵 DOM 树的抽象,我们在页面中写一个组件节点:

阅读全文 »

源码优化

码的优化主要体现在使用 monorepo 和 TypeScript 管理和开发源码,这样做的目标是提升自身代码可维护性。

1. 更好的代码管理方式:monorepo

首先,源码的优化体现在代码管理方式上。Vue2.x的源码托管在src目录,然后依据功能拆分出了compiler(模版编译的相关代码)、core(与平台无关的通用运行时代码)、platforms(平台专有代码)、sfc(.vue单文件解析相关代码)、shared(共享工具代码)等目录

阅读全文 »