前端星2020_4_10课程笔记

正则表达式

建立

字面量建立

  • 优势:html

    • 简单方便
    • 不考虑二次转义
  • 缺点前端

    • 没法复用
    • 过长的正则致使可读性差

RegExp构造函数

  • 优势node

    • 可复用
    • 分离出子内容 可读性提升
  • 缺点web

    • 二次转义 由于在字符串里构建RegExp 因此会有二次转义的问题

js正则常见用法

名称 输入 输出
test 字符串 true/false
source(不是方法) 当前模式文本字符串
flags(不是方法) 修饰符的字符串
exec 字符串 成功->返回匹配结果 失败->返回null
match 字符串 会返回数组(若是多个匹配)
lastIndex(不是方法) 当前正则表达式最后一次匹配成功的结束位置(也就是下一次匹配的开始位置)
replace 正则模式, 替换的子串 替换后的结果
search 正则模式 查询到的匹配结果
split 正则模式 根据正则模式切割的结果数组

经过例子来讲语法

固然首先来讲一下思路啊 正则判断的关键不是怎么写 是怎么分析究竟要判断啥 列举出应该有的可能性正则表达式

  • 正则匹配数字(js中的数字)

初版 /^d+$/ npm

语法:位置匹配 ^ $ 元字符d 限定符(次数限定符)+ 固然实际上还有不少 例子只是举其中几个
问题:无符号 小数json

第二版 /^[+-]?d+(.d+)?$/ 后端

语法: []可选择的一个组 ()子表达式 ?0或1次匹配
问题: ()子表达式有额外开销 不能匹配无整数的数数组

第三版 /^[+-]?(?:d*.)?d+$/ 缓存

语法:(?:) 建立一个非捕获组 * 匹配零个或多个
问题:科学计数法 无小数部分的值 (没完了QAQ)

avatar

最终版:(果真真相在图里啊) /^[+-]?(?:d+.?|d*.d+)(?: e[+-]?d+)?$/i
语法:| 建立分支

当数值带上单位:/[+-]?(?:d*.)?d+(?:e[+-]?d+)?(?=px|s|$)/gi
语法:向后查找 ?= 固然先后查找有不少别的了

后面的例子大同小异 只是涉及到一些新的语法而已 可是关键仍是写正则必定要认真分析需求

分享一下本身经常使用的正则网站 QAQ

NodeJS

  • 天生的异步io 其实是用libuv作的
  • 基于commonjs的模块管理
  • C++ addonApi node-gyp

Nodejs 模块机制

nodejs 常见模块

  • 内置模块 fs net dgram http crypto event os process 等等
  • 文件模块

commonjs 规范

模块路径查找:
绝对路径
相对路径
和当前路径处理为绝对路径
模块/文件夹
原生模块,直接读取缓存
[$NODE_PATH, ~/.node_modules,
./node_modules, ../node_modules, ...]
解析 package.json,查找 main 属性,没有则使用 index.js
若是未找到,则报错

动态模块方式:运行时才导入 但同时导入的其实是复制
挂在位置是module.exports export也指向这个地址 可是真正出去的是module.exports 神魔之井 require 读取

缓存位置在module.cache上

其实模块模式自己就是闭包的伟大实现 能够避免污染变量环境

NPM

nodejs包管理器 实际上前端如今也用 为了方便前端 npm的新版本依赖采起扁平化的管理 不过死月大佬一直说也许咱们应该回去用npm2.X

nodejs WEB开发

  • 原生的http 模块
  • Koa2
  • thinkjs 固然其实国内基于koa的还有蚂蚁金服的egg.js

固然上面的都是要作http服务器 实际上你要是想作一个tcp服务器能够用net库 UDP则用dgram库

由于nodejs这讲主要其实仍是针对后端扫盲多一点 做为一个后端练习时长一年半的nodejs练习生 我来记录一些在学习中以为很重要的部分吧

  • nodejs 的事件驱动机制 和 事件循环

贴一篇朴灵老师的经典文章 虽然原来印象笔记的版本看不到了
这篇文章其实讲了不少内容 包括同异步的概念的辨析 固然自己是针对阮一峰老师科普文写的 还颇有看点(其实阮老师的见解仍是挺广泛的)我愿称这篇文章为nodejs界的《关于两个世界系统的对话》

  • 同步 异步 阻塞 非阻塞

虽然看起来同步和阻塞 异步和非阻塞好像是自然绑定的 可是同异步自己是指的咱们对任务的执行结果能不能当即获得 而阻塞非阻塞其实是系统的io机制 对于操做系统来讲这实际上是两回事(虽然不影响咱们常常混着说)

  • buffer

Buffer 能够说是一个node为了性能考虑的部分 操做更偏向字节 性能相关部分使用C++实现

  • Process

怎么说做为单线程的语言 在这个硬件爆炸的时代怎么可以用呢 使用process 来作多进程的架构 经过IPC管道来通讯 不过提及来如今前端也有web workers
不过web workers 自己是多线程(为了防止多线程的问题--主要是各类锁 咱们可怜的web workers 一堆不能操做的限制 让咱们再回顾一遍 线程是调用的单位,进程是资源分配的单位)

暂时也就想到这里 之后若是再有什么感悟再回来加吧 QAQ

相关文章
相关标签/搜索