优势:html
缺点前端
优势node
缺点web
名称 | 输入 | 输出 |
---|---|---|
test | 字符串 | true/false |
source(不是方法) | 当前模式文本字符串 | |
flags(不是方法) | 修饰符的字符串 | |
exec | 字符串 | 成功->返回匹配结果 失败->返回null |
match | 字符串 | 会返回数组(若是多个匹配) |
lastIndex(不是方法) | 当前正则表达式最后一次匹配成功的结束位置(也就是下一次匹配的开始位置) | |
replace | 正则模式, 替换的子串 | 替换后的结果 |
search | 正则模式 | 查询到的匹配结果 |
split | 正则模式 | 根据正则模式切割的结果数组 |
固然首先来讲一下思路啊 正则判断的关键不是怎么写 是怎么分析究竟要判断啥 列举出应该有的可能性正则表达式
初版 /^d+$/ npm
语法:位置匹配 ^ $ 元字符d 限定符(次数限定符)+ 固然实际上还有不少 例子只是举其中几个
问题:无符号 小数json
第二版 /^[+-]?d+(.d+)?$/ 后端
语法: []可选择的一个组 ()子表达式 ?0或1次匹配
问题: ()子表达式有额外开销 不能匹配无整数的数数组
第三版 /^[+-]?(?:d*.)?d+$/ 缓存
语法:(?:) 建立一个非捕获组 * 匹配零个或多个
问题:科学计数法 无小数部分的值 (没完了QAQ)
最终版:(果真真相在图里啊) /^[+-]?(?:d+.?|d*.d+)(?: e[+-]?d+)?$/i
语法:| 建立分支
当数值带上单位:/[+-]?(?:d*.)?d+(?:e[+-]?d+)?(?=px|s|$)/gi
语法:向后查找 ?= 固然先后查找有不少别的了
后面的例子大同小异 只是涉及到一些新的语法而已 可是关键仍是写正则必定要认真分析需求
分享一下本身经常使用的正则网站 QAQ
模块路径查找:
绝对路径
相对路径
和当前路径处理为绝对路径
模块/文件夹
原生模块,直接读取缓存
[$NODE_PATH, ~/.node_modules,
./node_modules, ../node_modules, ...]
解析 package.json,查找 main 属性,没有则使用 index.js
若是未找到,则报错
动态模块方式:运行时才导入 但同时导入的其实是复制
挂在位置是module.exports export也指向这个地址 可是真正出去的是module.exports 神魔之井 require 读取
缓存位置在module.cache上
nodejs包管理器 实际上前端如今也用 为了方便前端 npm的新版本依赖采起扁平化的管理 不过死月大佬一直说也许咱们应该回去用npm2.X
固然上面的都是要作http服务器 实际上你要是想作一个tcp服务器能够用net库 UDP则用dgram库
由于nodejs这讲主要其实仍是针对后端扫盲多一点 做为一个后端练习时长一年半的nodejs练习生 我来记录一些在学习中以为很重要的部分吧
贴一篇朴灵老师的经典文章 虽然原来印象笔记的版本看不到了
这篇文章其实讲了不少内容 包括同异步的概念的辨析 固然自己是针对阮一峰老师科普文写的 还颇有看点(其实阮老师的见解仍是挺广泛的)我愿称这篇文章为nodejs界的《关于两个世界系统的对话》
虽然看起来同步和阻塞 异步和非阻塞好像是自然绑定的 可是同异步自己是指的咱们对任务的执行结果能不能当即获得 而阻塞非阻塞其实是系统的io机制 对于操做系统来讲这实际上是两回事(虽然不影响咱们常常混着说)
Buffer 能够说是一个node为了性能考虑的部分 操做更偏向字节 性能相关部分使用C++实现
怎么说做为单线程的语言 在这个硬件爆炸的时代怎么可以用呢 使用process 来作多进程的架构 经过IPC管道来通讯 不过提及来如今前端也有web workers
不过web workers 自己是多线程(为了防止多线程的问题--主要是各类锁 咱们可怜的web workers 一堆不能操做的限制 让咱们再回顾一遍 线程是调用的单位,进程是资源分配的单位)
暂时也就想到这里 之后若是再有什么感悟再回来加吧 QAQ