面試總結-webpack/git

說說你對webpack的理解

webpack 是一個靜態模塊打包器,整個打包過程就像是一條生產線,把資源從入口放進去,經過一系列的加工(loader),最終轉換成我們想要的結果,整個加工過程還會有監控,在特定的時機,插件就會對資源做處理

Webpack中Loader和Plugin的區別

  • 1、因為webpack只認識JS和JSON,所以Loader相當于翻譯官,將其他類型資源進行預處理。
  • 2、Plugin功能更強大,主要目的就是解決loader 無法實現的事情,比如打包優化和代碼壓縮等。
    Plugin加載后,在webpack構建的某個時間節點就會觸發plugin定義的功能,幫助webpack做一些事情。實現對webpack的功能擴展。
    常見的Plugin有哪些
    html-webpack-plugin 處理html資源,默認會創建一個空的HTML,自動引入打包輸出的所有資源(js/css)
    mini-css-extract-plugin 打包過后的css在js文件里,該插件可以把css單獨抽出來
    clean-webpack-plugin 每次打包時候,CleanWebpackPlugin 插件就會自動把上一次打的包刪除
  • 3、運行時機
    1.loader運行在編譯階段
    2.plugins 在整個周期都

為什么要用打包工具(開發環境和生存環境有什么區別)

在沒有weapack之前,

  • 作用域問題:所有引用的文件,都掛在在window,如jquery
  • 文件太大:如果分散加載,內容逐漸顯示,如果合并加載文件太大,白屏時間長
  • 可讀性差:和在一個文件里,可讀性差
  • 可維護性弱

在這里插入圖片描述

基本配置:

在這里插入圖片描述
在這里插入圖片描述

開發模式配置介紹:

在這里插入圖片描述

loader:幫助webpack識別不能識別的模塊,只要是對,less/scss/style/jsx/tsx/圖片/視頻

  • style-loader
  • css-loader

plugins

devServer

webpack優化

在這里插入圖片描述

1、提升開發體驗

  • 1、sourceMap在這里插入圖片描述

2、提升打包構建速度(一般是對js處理)

1、 開啟HMR:修改那個文件只會刷新那一個文件,不會整個頁面刷新
- 上面那樣配置css就可以生效了
- js還需要另外的配置,react可以使用react-hot-loader來設置
2、oneOf:讓我們的文件只被其中一個loader文件處理,每個文件只執行一個loader,提升打包速度
3、Include/Exclude:排除第三方和nodeModule文件,這些不需要編譯,只處理src文件,提升打包速度(只能用一種),只能對js進行處理
4、catch:提升第二次編輯及以后的打包速度,第二次打包不會打包所有。只會檢查修改的文件進行重新檢查和babel編譯

在這里插入圖片描述
在這里插入圖片描述

5、Thead:多進程打包

在這里插入圖片描述
配置方法:
在這里插入圖片描述
在這里插入圖片描述
js代碼壓縮:
在這里插入圖片描述

減少代碼體積

1、tree shaking:引用的第三方庫中,移除沒有引用的工具函數等

在這里插入圖片描述

2、plugin-transform-runtime:減少babel打包的文件體積

在這里插入圖片描述

3、圖片壓縮

在這里插入圖片描述

優化代碼運行性能

code split 代碼分割,實現按需加載

在這里插入圖片描述

webpack5和webpack4區別(https://juejin.cn/post/6990869970385109005)

  • Tree Shaking:自動剔除第三方包里面沒有引入的方法
    當我們引入第三方包的時候,如果只引入的一個方法,其他沒有用到的方法是冗余放入,Tree Shaking就可以自動幫我們把那些沒有用的東西提出掉,來減少bundle的體積
  • webpack4需要安裝插件 terser-webpack-plugin 才能實現js壓縮,webpack5內置了插件不需要安裝,而且設置mode=“production” 的時候會自動開啟 js 壓縮功能。
  • webpack5 內部內置了 cache 緩存機制。直接配置即
// webpack.config.js
module.exports= {// 使用持久化緩存cache: {type: 'filesystem',cacheDirectory: path.join(__dirname, 'node_modules/.cac/webpack')}
}

git

  • 1、git pull和git fetch的區別
    • git fetch只是將遠程倉庫的最新的版本下載到本地,但是不會自動merge,相當于工作區中的文件并沒有更新
    • git pull會從遠程倉庫獲取到最新的版本并merge到本地。
    • git pull origin dev=git fetch origin dev+git merge origin/dev;
    • git fetch更保險一些,git pull操作更簡單
  • 2、git merge和git rebase的區別
    • 共同點:將一個分支的更改并入另一個分支,只不過方式有些不同
    • 不同點:
      • merge如果master有新提交,合并之后有沖突,僅需修改之后重新提交,后會生一個新的commit,整個歷史記錄比較混亂
      • rebase如果master有新提交,合并之后有沖突,不會產生額外的commit。這樣的好處是,‘干凈’;如果合并的分支中存在多個commit,需要重復處理多次沖突。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/35150.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/35150.shtml
英文地址,請注明出處:http://en.pswp.cn/news/35150.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

公共服務領域:西安新小區業主自立業主委員會年底分紅83萬以及103萬事件區塊鏈資金透明監管與投票解決方案的嘗試

公共服務領域:西安新小區業主自立業主委員會年底分紅83萬以及103萬事件區塊鏈資金透明監管與投票解決方案的嘗試 作者 重慶電子工程職業學院 | 向鍵雄 杜小敏 前言 本項目想法來源于,西安新小區業主開出物業自立業主委員會年底分紅83萬以及103萬事件,對于此類事件,我們刨…

微信小程序加載本地json和使用gulp壓縮js

加載本地json 創建json.js, data 里是json內容,exports 是數據出口 var data = [ {json1},{json2},{json3},{json10} ....] module.exports = {listData = data } 使用 這個require后面的參數是入口文件的文件路徑,但是注意必須是相對路徑,不能絕對路徑。 let json = re…

redis基礎(三十六)

安裝redis、配置redis 目錄 一、 概述 (一)NoSQL 1、類型 2、應用場景 (二)Redis 二、安裝 (一)編譯安裝 (二)RPM安裝 三、目錄結構 四、命令解析 五、redis登錄更改 1、…

2023國賽數學建模C題思路分析

文章目錄 0 賽題思路1 競賽信息2 競賽時間3 建模常見問題類型3.1 分類問題3.2 優化問題3.3 預測問題3.4 評價問題 4 建模資料 0 賽題思路 (賽題出來以后第一時間在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 競賽信息 全國大學生數學建模…

中睿天下入選河南省網信系統2023年度網絡安全技術支撐單位

近日,河南省委網信辦發布了“河南省網信系統2023年度網絡安全技術支撐單位名單”,中睿天下憑借出色的網絡安全技術能力和優勢成功入選。 本次遴選由河南省委網信辦會同國家計算機網絡與信息安全管理中心河南分中心(以下簡稱安全中心河南分中心…

持續輸出:自媒體持續輸出文字內容、視音頻創作(視頻課程、書籍章節)

以下是自媒體持續輸出文字內容、視音頻創作的最佳方法: 靈感來源:尋找靈感來源是自媒體創作的重要一環。可以從日常生活、網絡熱點、行業動態等方面尋找創作靈感。 確定主題:在確定主題的時候,需要根據讀者和觀眾的需求&#xff…

Zebec Protocol 將進軍尼泊爾市場,通過 Zebec Card 推動地區金融平等

流支付正在成為一種全新的支付形態,Zebec Protocol 作為流支付的主要推崇者,正在積極的推動該支付方案向更廣泛的應用場景拓展。目前,Zebec Protocol 成功的將流支付應用在薪酬支付領域,并通過收購 WageLink 將其納入旗下&#xf…

Pytest測試框架3

目錄: pytest結合數據驅動-yamlpytest結合數據驅動-excelpytest結合數據驅動-csvpytest結合數據驅動-jsonpytest測試用例生命周期管理(一)pytest測試用例生命周期管理(二)pytest測試用例生命周期管理(三&a…

CMake 配置 Vulkan 出現鏈接失敗,找不到 vkEnumerateInstanceExtensionProperties 符號的錯誤的解決方法

使用 CMake 配置 glfw, glm 的時候,總是提示鏈接失敗,找不到 vkEnumerateInstanceExtensionProperties 符號 cmake_minimum_required(VERSION 3.4...3.27)if(${CMAKE_VERSION} VERSION_LESS 3.27)cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_…

UG NX二次開發(C#)-CAM-獲取刀具類型

文章目錄 1、前言2、UG NX中的刀具類型3、獲取刀具類型3.1 刀具類型幫助文檔1、前言 在UG NX的加工模塊,加工刀具是一個必要的因素,其包括了多種類型的類型,有銑刀、鉆刀、車刀、磨刀、成型刀等等,而且每種刀具所包含的信息也各不相同。想獲取刀具的信息,那就要知道刀具的…

2023最新水果編曲軟件FL Studio 21.1.0.3267音頻工作站電腦參考配置單及系統配置要求

音樂在人們心中的地位日益增高,近幾年音樂選秀的節目更是層出不窮,喜愛音樂,創作音樂的朋友們也是越來越多,音樂的類型有很多,好比古典,流行,搖滾等等。對新手友好程度基本上在首位,…

用Python畫多個圓圈代碼

編輯:2023-08-13 15:10 在Python中,我們可以使用turtle庫來繪制各種形狀,包括圓圈。這是一個相當基本的問題,但是對于新手程序員來說,它可能會很有用。在這篇文章中,我們將向你展示如何使用Python的turtle…

【報童模型】隨機優化問題二次規劃

面對需求的不確定性,報童模型是做庫存優化的常見模型。而標準報童模型假設價格是固定的,此時求解一個線性規劃問題,可以得到最優訂貨量,這種模型存在局限性。因為現實世界中價格與需求存在一定的關系,本文假設需求q是價…

LNMP環境介紹和搭建

一.LNMP簡介 1.含義 2.工作原理 二.部署LNMP環境 1.Nginx環境 (1)上傳nginx包,下載編譯安裝工具并解包到指定目錄(tar 參數 tar包 - C 目錄路徑) (2) 開始編譯安裝,每次編譯后…

nbcio-boot升級到3.1后出現online表單新增報錯

nbcio-boot升級springboot、mybatis-plus和JSQLParser后出現新增online表單的時候報錯,如下: 2023-08-13 21:18:01.292 [http-nio-8080-exec-12] [1;31mERROR[0;39m [36mo.jeecg.common.exception.JeecgBootExceptionHandler:69[0;39m - Handler dispat…

【JVM】JVM垃圾收集器

文章目錄 什么是JVM垃圾收集器四種垃圾收集器(按類型分)1.串行垃圾收集器(效率低)2.并行垃圾收集器(JDK8默認使用此垃圾回收器)3.CMS(并發)垃圾收集器(只針對老年代垃圾回收的)4.G1垃圾回收器(在…

設計模式之七:適配器模式與外觀模式

面向對象適配器將一個接口轉換成另一個接口,以符合客戶的期望。 // 用火雞來冒充一下鴨子class Duck { public:virtual void quack() 0;virtual void fly() 0; };class Turkey { public:virtual void gobble() 0;virtual void fly() 0; };class TurkeyAdapter :…

利用爬蟲爬取圖片并保存

1 問題 在工作中,有時會遇到需要相當多的圖片資源,可是如何才能在短時間內獲得大量的圖片資源呢? 2 方法 我們知道,網頁中每一張圖片都是一個連接,所以我們提出利用爬蟲爬取網頁圖片并下載保存下來。 首先通過網絡搜索…

Linux 1.2.13 -- IP分片重組源碼分析

Linux 1.2.13 -- IP分片重組源碼分析 引言為什么需要分片傳輸層是否存在分段操作IP分片重組源碼分析ip_createip_findip_frag_createip_doneip_glueip_freeip_expireip_defragip_rcv 總結 本文源碼解析參考: 深入理解TCP/IP協議的實現之ip分片重組 – 基于linux1.2.13 計網理論…

樹莓派RP2040 用Arduino IDE安裝和編譯

目錄 1 Arduino IDE 1.1 IDE下載 1.2 安裝 arduino mbed os rp2040 boards 2 編程-燒錄固件 2.1 打開點燈示例程序 2.2 選擇Raspberry Pi Pico開發板 2.3 編譯程序 2.4 燒錄程序 2.4.1 Raspberry Pi Pico開發板首次燒錄提示失敗 2.4.2 解決首次下載失敗問題 2.4.2.1…