動態

列表
創建 時間

AST語法樹增刪改查

AST 是 Abstract Syntax Tree 的縮寫,即 “抽象語法樹”.它是以樹狀的形式表現編程語言的語法結構. webpack 打包 JS 代碼的時候,webpack 會在我們的原有代碼基礎上新增一些代碼, 例如我們可以在打包JS 代碼的時候將高級代碼轉為低級代碼,就是通過 AST 語法樹來完成的 AST在線生成地址 babel插件查看使用地址 AST生成過程由源碼-詞法分

創建 時間

CommonJS模塊分類及加載流程,及模塊加載模擬實現

模塊分類 內置模塊:Node源碼編譯時寫入到二進制文件中 文件模塊:代碼運行時,動態加載 加載流程 路徑分析:依據標識符確定模塊位置(路徑標識符、非路徑標識符) 文件定位:確定目標模塊中具體的文件及文件類型(存在'm1'模塊,導入時使用require('m1')語法,使用m1.js-m1.json-m1.node的順序,如果都沒找到,會被當做一個目錄,查找package.json文件

創建 時間

退出歷史舞台的Grunt基本瞭解

Grunt Grunt 生態系統非常龐大,並且一直在增長。由於擁有數量龐大的插件可供選擇,因此,你可以利用 Grunt 自動完成任何事,並且花費最少的代價。如果找不到你所需要的插件,那就自己動手創造一個 Grunt 插件,然後將其發佈到 npm 上吧 Grunt基本使用 yarn add grunt yarn add安裝之後,創建一個gruntfile.js文件,這是grunt的入口文件,用

創建 時間

webpack簡單文件打包實例

依賴版本 "webpack": "^4.44.2", "webpack-cli": "^3.3.12" 一個簡單的文件通過webpack打包 // 導出 console.log('index.js') module.exports = '導出內容' // 導入 let log = require('./log.js') console.log('index.js內容') console.log(

創建 時間

webpack,單文件懶加載分析實現

log.js文件 module.exports ="lazy load logger" index.js文件 let oBtn = document.getElementById('btn') oBtn.addEventListener('click', function () { import( /*webpackChunkName: "log"*/ './log.js').then(

創建 時間

webpack底層工具庫tapable基本使用

tapable工作流程 實例化hook註冊事件監聽 通過hook觸發事件監聽 執行懶編譯生成的可執行代碼 Hook本職是tapable實例對象,分同步和異步,異步分並行和串行兩種模式 Hook執行特點 Hook:普通鈎子,監聽器之間互相獨立不干擾 BailHook:熔斷鈎子,某個監聽返回非undefined時後續不執行 WaterfallHoook: 瀑布鈎子,上一個監

創建 時間

根據tapable調試結果,手寫SyncHook實現

調試過程瞭解SyncHook案例運行基本原理 let hook = new SyncHook(['name', 'age'])操作構建了一個SyncHook實例,掛載一些屬性核心屬性是_x和taps屬性,最後調用call方法 // SyncHook.js // 非tap模式全部拋出異常 tapAsync、 tapPromise const TAP_ASYNC = () = { thr

創建 時間

尋找webpack打包入口

node_modules下.bin目錄下有一個webpack.cmd腳本文件,組裝定位了要執行的webpack.js文件 "%~dp0\node.exe" "%~dp0\..\webpack\bin\webpack.js" %* 將啓動文件指向了webpack目錄下的bin\webpack.js。 在webpack.js文件中,有一個runCommond方法和isInstalled判斷包是否安裝

創建 時間

迷你版webpack實現

調試webpack過程瞭解執行流程 開始-合併配置------------實例化compile-------設置node文件讀寫能力-----通過循環掛載plugins-----處理webpack內部默認的插件(入口文件) 開始-compiler.beforeRun-compiler.run--------compiler.beforeCompile-compiler.compile----

創建 時間

webpack4和webpack5打包資源文件配置差異

項目中會有一些資源文件,比如圖片資源,字體資源文件等。這些文件在打包的時候需要移動到dist目錄 webpack4中,打包這些資源文件,需要用到url-loader和file-loader, file-loader把文件輸出到一個文件夾中,在代碼中通過相對 URL 去引用輸出的文件 (處理圖片和字體) url-loader與 file-loader 類似,區別是用户可以設置一個閾

創建 時間

Gulp基本概念及應用

gulp簡介,基本使用 Gulp.js 是一個自動化構建工具,開發者可以使用它在項目開發過程中自動執行常見任務。 yarn add gulp 安裝gulp的時候會安裝gulp-cli。gulpfile.js中導出一個函數,最新的gulp中取消了同步代碼模式,每一個任務都是異步任務,最後需要調用回調函數或其他方式標記任務完成。如例子中如果沒有done,會報錯.如果任務名是default,運行時的命

創建 時間

一個gulp構建工作流案例

一個構gulp自動化構建工作流案例 需要對樣式文件,js文件,html文件,圖片字體文件,其他額外文件依次構建任務,並在此過程中實現對文件的壓縮合並 const { src, dest, series, parallel, watch, } = require('gulp'); const loadPlugins = require('gulp-lo