原创 事件機制在瀏覽器和node環境的區別

事件循環,在瀏覽器和 Node 中的事件循環執行機制也不相同,瀏覽器的事件循環是在 HTML5 中定義的規範,而 Node 中則是由 libuv 庫實現。 先看一個簡單的事件循環筆試題: function sleep(time

原创 es6 proxy 個人理解和應用場景示例

一,基礎 1. 概念 對外界的訪問進行過濾和改寫 2. 基本用法 // 用法1 var object = { proxy: new Proxy(target, handler) }; // 用法2 var proxy = new

原创 閉包場景舉例

1、data使用函數返回值 ... data() { return { list:[] } } ... 2、閉包應用場景之setTimeout //原生的setTimeout傳遞的第一個函數不能帶參數

原创 es6 generator 個人理解 細粒度操作(1)

概述 狀態機,封裝多個狀態,輪着輸出,可以暫停,可以終止。可以對函數行爲精確操作。 可以暫停的函數, 分段執行 分段輸出 可以遍歷 有記憶功能,下次遍歷可以從上次繼續下去 yield 只適合 genenra

原创 anguar9打包優化速度更快

anguar9打包 內存溢出設置大小 –max_old_space_size=5000 正式線打包 npm run build Time: 254010ms 測試線打包 npm run build:test Time: 24957

原创 從重繪重排到框架渲染

瀏覽器的重繪和重排 場景: 1、添加、刪除元素(迴流+重繪) 2、隱藏元素,display:none(迴流+重繪),visibility:hidden(只重繪,不迴流) 3、移動元素,如改變top、left或移動元素到另外1個父元

原创 地址參數操作searchParams和URLSearchParams

該接口不繼承任何屬性。 URLSearchParams.append() 插入一個指定的鍵/值對作爲新的搜索參數。 URLSearchParams.delete() 從搜索參數列表裏刪除指定的搜索參數及其對應的值。 U

原创 es6 Reflet 個人理解

Reflet 設計目的: 未來代替object 修改某些Object方法的返回結果,讓其變得更合理 // 老寫法 try { Object.defineProperty(target, property, attr

原创 refusing to merge unrelated histories 拒絕合併不相關的歷史

原因:本地倉庫和遠程倉庫實際上是獨立的兩個倉庫 解決方法: 合併兩個獨立啓動倉庫的歷史 git pull origin master --allow-unrelated-histories

原创 三天入手angular9 全乾貨 基礎篇(二)

注:默認已有紮實的vue功底 循環體的根元素 template ng-container <ng-container *ngIf="lessons"> <div class="lesson" *ngFor="let les

原创 掉坑筆記

保存後發現當前頁面樣式亂了,排查當前頁面問題沒找到,恢復當前頁面修改還是一樣,點擊其他菜單,發現有幾個也亂了,其他都是好的,查看文件修改記錄,沒發現修改到樣式的。鬱悶!最後重啓項目,解決!編譯器腦子秀逗跑偏了。。。如果不是你的問

原创 節流防抖以及在購物車中的應用

場景介紹: 在進行窗口的resize、scroll,輸入框內容校驗等操作時,如果事件處理函數調用的頻率無限制,會加重瀏覽器的負擔,導致用戶體驗非常糟糕。此時我們可以採用debounce(防抖)和throttle(節流)的方式來減少

原创 js堆和棧以及垃圾回收,附示例分析

問題: 之前寫的連等運算符 var a = {n: 1}; var b = a; a.x = a = {n: 2}; 溫馨提示:請先看下面的理論基礎再來解答這個問題。 其中一條規則說,js語句執行前會保存之前的索引。

原创 ng-zorro給步驟條加更多的描述

最簡潔的寫法: <nz-steps [nzCurrent]="index" (nzIndexChange)="onIndexChange($event)" [nzProgressDot]="progressTempla

原创 類型轉換,後端傳了個字符串“null”和“false”

let a = "null" let b = "false" let c = "1" let d = {x: 1, y: {z: 2}} if(JSON.parse(a)) { // coding... } JSON.pars