原创 git merge一個指定文件

git裏面的merge是全merge ,沒有單個文件merge。 要實現一個文件的merge ,可以使用git checkout 這個命令 git checkout xxxx(分支名)  xxxx(文件名) 這個命令是覆蓋的意思,是說把另

原创 webpack,異步加載,代碼分割,require.ensure

webpack異步加載的原理 webpack ensure相信大家都聽過。有人稱它爲異步加載,也有人說做代碼切割,那這 個傢伙到底是用來幹嘛的?其實說白了,它就是把js模塊給獨立導出一個.js文件的,然後使用這個 模塊的時候,webpac

原创 TCP和UDP的區別

TCP協議與UDP協議的區別 首先咱們弄清楚,TCP協議和UCP協議與TCP/IP協議的聯繫,很多人犯糊塗了, 一直都是說TCP協議與UDP協議的區別,我覺得這是沒有從本質上弄清楚網絡通信! TCP/IP協議是一個協議簇。裏面包括很多協議

原创 https中的對稱加密和非對稱加密

大家都知道:HTTPS = HTTP + SSL/TSL 也就是,https是在http基礎上加了一層加密。 這也由此衍生出一個問題 —— https的加密用的是對稱加密還是非對稱加密,是否全程都是用的一種加密方式? 這個問題引起了我的興

原创 Vue.js異步更新DOM策略及nextTick

本篇文章主要是對Vue中的DOM異步更新策略和nextTick機制的解析,需要讀者有一定的Vue使用經驗並且熟悉掌握JavaScript事件循環模型。 引入:DOM的異步更新 <template> <div> <div

原创 async 函數的實現原理

基本概念 ES2017 標準引入了 async 函數,使得異步操作變得更加方便。 async 函數是什麼?一句話,它就是 Generator 函數的語法糖。 前文有一個 Generator 函數,依次讀取兩個文件。 const fs =

原创 webpack打包bundle文件解析

### 一、一個入口,一個文件 webpack.config.js ``` module.exports = {   entry: './main.js',  // 一個入口   output: {     filename: 'bund

原创 前端 http 緩存

前端面試常問第二大問題是http緩存相關內容。說真的,http緩存相關的細節比較多,並且 http 常用協議版本有1.0、1.1,(本文暫不討論http2.0)。 緩存相關 header 我們先羅列一下和緩存相關的請求響應頭。 Expi

原创 javascript 隱式轉換

你有沒有在面試中遇到特別奇葩的js隱形轉換的面試題,第一反應是怎麼會是這樣呢?難以自信,js到底是怎麼去計算得到結果,你是否有深入去了解其原理呢?下面將深入講解其實現原理。 其實這篇文章初稿三個月前就寫好了,在我讀一些源碼庫時,遇到了這些

原创 通俗易懂 Promise 原理

介紹 爲了讓大家更容易理解,我們從一個場景開始講解,讓大家一步一步跟着思路思考,相信你一定會更容易看懂。 考慮下面一種獲取用戶id的請求處理 //例1 function getUserId() { return new Prom

原创 Vue 插件及Vue.use源碼分析

### 插件 插件通常用來爲 Vue 添加全局功能。插件的功能範圍沒有嚴格的限制——一般有下面幾種: 1. 添加全局方法或者屬性。如: vue-custom-element 2. 添加全局資源:指令/過濾器/過渡等。如 vue-touch

原创 webpack 入門的總結和簡單配置

webpack   總結 前端模塊化編程打包工具 可以把模塊打包成一個文件,提高訪問速度,開發速度,優化用戶體驗 module.exports 導出 require() 導入 安裝 windows: npm install web

原创 JavaScript Events事件彙總

事件參數、事件捕獲冒泡 事件委託 事件默認行爲 DOM 1 、DOM 2、DOM 3模型 實現遮罩功能(點擊穿透、移動端點擊事件300s延遲問題) 注意有些demo需要在開發者工具中切換PC端,移動端模擬器 <!DOCTYPE html

原创 ECMAScript 6 新增內容

變量的擴展 let const 變量的結構 字符串的擴展及新增方法 模板字符串 (`${}`) matchAll 方法返回一個正則表達式在當前字符串的所有匹配 includes 返回布爾值,表示是否找到了參數字符串。 repeat

原创 ES6 Promise 和 Async/await的使用、事件委託、Charles抓包工具的使用

事件委託 //事件委託 window.onload = function(){   var oUl = document.getElementById("ul1");   oUl.onclick = function(ev){