原创 event loop整理

宏任務和微任務 讓我們從瀏覽器加載 script 說起,當瀏覽器加載完 script 之後,不考慮 script 標籤的 defer 屬性,script 將被立即執行。這時,我們就創建了一個宏任務。 在我們加載的代碼中,可能有 click

原创 tsConfig/baseUrl -- 一鍵告別相對路徑import

在tsConfig中,配置: ... baseUrl: "src" ... 在.eslintrc.json中: "settings": { "import/resolver": { "node": {

原创 寫一個react hook:useLoading

在寫業務的過程中,我們總是會遇到這樣的需求,在請求時顯示一個 loading,然後請求結束後展示數據。以一個是不是 vip 的場景爲例,如果不加入 loading 狀態,頁面可能在未請求的時候顯示非 vip,數據請求完成之後,發現是 vip

原创 2020,送你一朵小紅花

圖片攝於 2020-10-25,上海,青浦。 此時此刻,我正在看着 去年年終總結 用 wenyan 寫下的新年願望,看看自己實現了幾成,結果看下來,除了一夜暴富遙遙無期之外,其他的居然還實現了個七七八八,不由得覺得用 wenyan 來許願

原创 如何從含有佔位符的字符串生成一個ReactNode數組

最近項目中有這樣的需求,就是將含有佔位符的字符串轉成下面的樣子,假設要渲染的字符串是${}沒搶到,表示很失望,最終要渲染成下面的樣子: 假設${}要被替換成<Tag />元素,那麼最終應該返回的是: [<Tag />, '沒搶到,表示很失

原创 vscode 插件配置指北

Extension Manifest 就像 chrome 插件使用 manifest.json 來管理插件的配置一樣,vscode 的插件也有一個 manifest,而且就叫 package.json,在這裏,我們可以除了可以配置插件的名字

原创 前端gitlab-ci.yml 入門

說起來使用gitlab也有大半年了,每天都在跑pipeline,但是卻沒有好好研究過這個叫gitlab-ci.yml的文件。這次藉着發佈流程升級的機會,好好入門了一下。 主要分以下內容: stages cache only when be

原创 微信invalid signature問題排查(nonceStr問題)

確保你可以正確獲取到access token,和js ticket,主要是域名白名單裏面要把自己的服務器ip配進去 確認簽名算法正確,可用http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t

原创 puppeteer去掉同源策略及請求攔截

puppeteer是一個基於cdp協議的功能強大的工具,在自動化測試和爬蟲方面應用廣泛,這裏談一下如何在puppeteer中關掉同源策略和進行請求攔截。 同源策略 同源策略爲web 安全提供了有力的保障,但是有時候我們需要在localhos

原创 electron app quit 和 exit 的區別

在electron中,app.quit()和app.exit()都是用來退出程序的,但是它們之間有什麼區別呢?我們一探究竟。 默認退出 如果你沒有監聽window-all-closed事件並且所有窗口都關閉了,默認的行爲是退出程序 監聽wi

原创 Typescript的interface、class和abstract class

interface,class,和abstract class這3個概念,既有聯繫,又有區別,本文嘗試着結合官方文檔來闡述這三者之間的關係。 1. Declaration Merging Declaration Type Namesp

原创 windows 查看進程佔用的端口號

tasklist 查看當前運行的進程 netstat netstat -ano | findStr PID 查看某個進程佔用了哪些端口 TCP 127.0.0.1:2436 127.0.0.1:9999

原创 cdp協議簡介

啥是cdp 根據官網的說法,cdp(Chrome DevTools Protocol) 允許我們檢測,調試Chromium, Chrome 和其他基於 Blink的 瀏覽器. 這個協議被廣泛使用. 其中最著名的是 Chrome DevToo

原创 給小白的electron目錄

先挖個坑,後面填多少就隨緣了 概述 main進程 renderer進程 ipc nodeIntegration和preload broswerWindow webContents

原创 筆試題集

筆試場上,刀刀致命 1 //1. 給定一個模板和一個對象,利用對象中的數據渲染模板,並返回最終結果。 let template = '你好,我們公司是{{ company }},我們屬於{{group.name}}業務線,我們在招聘各種方向