正则和TypeScript很重要

2022-07-14 21:43:14 浏览数 (1)

春江潮水连海平,海上明月共潮生。--出自 张若虚的《春江花月夜》

整首诗分三个部分,第一部分写江边美景,第二部分写诗人触景生情,第三部分写离愁别绪。有兴趣的话可以读一读全文体会一下。

关于浏览器插件

由于打卡规则的变化,由之前的企业微信打卡,变成现在PC的一个系统打卡。今天在想是不是也开发一个打卡的插件,支持多系统登录,选择时间段打卡...。

仔细想了想还是算了,以后再说吧。

关于正则表达式

上周写了邮箱助手插件的时候用到了两个库,codemirrormarked。也提到了marked负责将markdown转为html, 但是具体是如何转的?这个是个问题。

于是就把它的代码clone下来,准备花点时间研究一下。然后发现里面有很多正则表达式,比如:

代码语言:javascript复制
/**
 * smartypants text replacement
 */
function smartypants(text) {
  return text
    // em-dashes
    .replace(/---/g, 'u2014')
    // en-dashes
    .replace(/--/g, 'u2013')
    // opening singles
    .replace(/(^|[-u2014/([{"s])'/g, '$1u2018')
    // closing singles & apostrophes
    .replace(/'/g, 'u2019')
    // opening doubles
    .replace(/(^|[-u2014/([{u2018s])"/g, '$1u201c')
    // closing doubles
    .replace(/"/g, 'u201d')
    // ellipses
    .replace(/.{3}/g, 'u2026');
}

或者

代码语言:javascript复制
serialize(value) {
    return value
      .toLowerCase()
      .trim()
      // remove html tags
      .replace(/<[!/a-z].*?>/ig, '')
      // remove unwanted chars
      .replace(/[u2000-u206Fu2E00-u2E7F\'!"#$%&()* ,./:;<=>?@[]^`{|}~]/g, '')
      .replace(/s/g, '-');
  }

好像正则表达式也不是很多,不过无所谓了。我想表达的意思主要是,结合以往的经验,似乎所有的框架,或者js库的源码里都会涉及到正则表达式,而大部分前端人员平时在写业务代码的时候精力并没有放在正则上,比如我自己,需要正则表达式的时候,会直接去百度某个类型的正则表达式,很少去思考,去自己动手实现一个自己需要的正则表达式。

这种现象是不对的,假如我有一天想要仔细的研究某个框架,或者某个npm包的实现原理,源码down下来,一堆正则表达式看不懂,岂不是很尴尬 ?

这个问题需要纠正。

关于TypeScript

这两天发现TypeScript越来越重要了,倒不是说在业务中不会写TypeScript, 目前的项目里还是用的es6语法居多。但是最近的项目用Taro做了H5和小程序的多端开发模式,所以想看下Taro的源码。

源码里分了很多npm包,用lerna做了包管理。重点是大部分包里都有一个types文件夹,用 TypeScript声明了很多类和接口。然后忽然想到一个事情,现在基本上框架层面的东西都使用TypeScript进行了更新。

平时写代码的时候没怎么注意这个问题,假如哪一天想看看源码,提升一下自己的技术深度。或者说现有的代码需要用TypeScript进行重构,重新抽象一遍,简化开发。看不懂代码或者不会用TypeScript进行抽象,岂不是也很尴尬?

总结

算是一点心得吧。

开始重视正则TypeScript

javascript基础知识总结

0 人点赞