優勢: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