当前位置: 首页 > 后端技术 > Node.js

前端之星2020_4_10课程笔记

时间:2023-04-03 23:40:53 Node.js

正则表达式创建优点字面量创建:简单方便不考虑二次转义缺点无法复用过长的正则表达式导致可读性差在字符串中构建RegExp,所以会出现双重转义js正则用法名输入输出的问题teststringtrue/falsesource(notamethod)currentmodetextstringflags(notamethod)modifierstringexecstringSuccess->returnmatchingresultfailure->returnnullmatchstringwillreturnanarray(ifmultiplematches)lastIndex(不是方法))当前正则表达式最后一次成功匹配的结束位置(即下一次匹配的开始位置)替换正则模式、替换子串、替换结果、搜索正则模式、查询匹配结果、拆分正则模式、结果数组按正则模式切,语法通过实例,当然先说思路,正则判断的关键不在于怎么写,而在于怎么分析判断什么,列出应该是正则匹配数的可能(js中的数字)第一版/^d+$/语法:位置匹配^$元字符d限定符(次数限定符)+当然还有很多例子只是其中的几个:unsigneddecimal第二版/^[+-]?d+(.d+)?$/语法:[]一个可选的组()子表达式?0或1匹配问题:()子表达式有额外开销无法匹配没有整数的数字版本3/^[+-]?(?:d*.)?d+$/语法:(?:)创建非捕获组*matches零个或多个问题:不带小数部分的科学记数法的值(没完没了的QAQ)最终版:(果然,真相在图中)/^[+-]?(?:d+.?|d*.d+)(?:e[+-]?d+)?$/i语法:|当值有单位时创建分支:/[+-]?(?:d*.)?d+(?:e[+-]?d+)?(?=px|s|$)/gi语法:lookbackward?=当然前后还有很多其他的东西要查需要分享我平时的正规网站QAQNodeJS的天然异步io其实是用libuv做的基于commonjs的模块管理C++addonApinode-gypNodejs模块机制nodejscommonmodule内置模块fsnetdgramhttpcryptoeventos进程等文件模块commonjs规范模块路径查找:绝对路径相对路径和当前路径都当做绝对路径模块/文件夹原生模块,直接读取缓存[$NODE_PATH,~/.node_modules,./node_modules,../node_modules,...]解析package.json,寻找main属性,找不到就用index.js找不到会报错动态模块方法:运行时导入但同时导入其实是复制并挂在模块的位置。exportsexport也指向这个地址,但实际出去的是module.exports。神魔之井需要读取module.cache上的缓存位置。其实模块模式本身就是闭包的一个很好的实现,可以避免污染变量环境。NPMnodejs包管理器实际上是前端。现在也是为了方便前端npm的新版本依赖扁平化管理,但是死月老大一直说,也许我们应该回去用npm2.XnodejsWEB开发原生的http模块Koa2thinkjs。egg.js上面当然是做一个http服务器。其实想做tcpserver,net库、UDP、dgram库都可以,因为nodejs主要是后端扫盲。做后端需要很长时间的练习作为一年半的nodejs实习生,记录下学习中的一些重要部分。nodejs的事件驱动机制和事件循环。贴一篇朴令先生的经典文章。很多内容包括对同步和异步概念的分析。当然,这是为阮一峰老师科普而写的。同步、异步、阻塞、非阻塞,虽然看起来同步和阻塞、异步和非阻塞是天然绑定的,但是同步和异步本身就是指我们能否立即得到任务的执行结果,而阻塞和非阻塞blocking其实就是系统的io机制。对于操作系统来说,这其实是两个不同的东西(虽然不影响我们把它们放在一起说)bufferBuffer可以说是出于性能考虑的节点操作的一部分,更偏向于字节性能相关的部分,使用C++实现Process。怎么说呢,作为一个单线程语言在这个硬件大爆炸的时代怎么能用得上呢?使用进程构建多进程架构通信是通过IPC管道,现在前端有webworker,但是webworker本身是多线程的(为了防止多线程问题——主要是各种锁,一堆不能操作的限制我们可怜的webworker,再回顾一下线程是调用的单位,进程是资源分配的单位)暂时想到这里,有什么见解回来补充QAQ