春江潮水连海平,海上明月共潮生。--出自 张若虚的《春江花月夜》
整首诗分三个部分,第一部分写江边美景,第二部分写诗人触景生情,第三部分写离愁别绪。有兴趣的话可以读一读全文体会一下。
关于浏览器插件
由于打卡规则的变化,由之前的企业微信打卡,变成现在PC的一个系统打卡。今天在想是不是也开发一个打卡的插件,支持多系统登录,选择时间段打卡...。
仔细想了想还是算了,以后再说吧。
关于正则表达式
上周写了邮箱助手插件的时候用到了两个库,codemirror
和marked
。也提到了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基础知识总结