前端面試題大合集7----模塊化/工程化/ES6+標準

一、簡述webpack的核心原理

(1)一切皆模塊

正如JS文件可以是一個“模塊”一樣,其它的文件也可視作模塊。因此可以執行require(myJsFile.js),亦可執行require(myCssFile.css),這意味著我們可以將事物分割成更小的、易于管理的片段,從而達到重復利用的目的。

(2)按需加載

傳統的模塊打包工具最終將所有的模塊編譯并生成一個龐大的bundle.js文件。但是,在真實的APP里,bundle.js文件的大小在10M-15M之間的話,可能會導致應用一直處于加載狀態。因此,webpack使用許多特性來分割代碼,然后生成多個bundle.js文件,而且異步加載部分代碼用于實現按需加載。

二、webpack打包流程

具體流程如下:

  1. 通過entry配置入口文件;
  2. 通過output制定輸出文件;
  3. 使用各種loader處理CSS、JavaScript、image等資源,并將它們編譯與打包成瀏覽器可以解析的內容等。
三、webpack中的loader
  • 具體作用:

(1)實現對不同格式文件的處理,比如將scss轉換為css,或將TypeScript轉化為JavaScript;

(2)可以編譯文件,從而使其能夠添加到依賴關系中。loader是webpack最重要的部分之一。通過使用不同的loader,我們能夠調用外部的腳本或者工具,實現對不同格式文件的處理,loader需要在webpack.config.js里單獨用module進行配置。

  • 敘述工作中常用的loader

babel-loader:將下一代的JS語法規范轉換成現代瀏覽器能夠支持的語法規范。因為babel有些復雜,所以大多數開發者都會新建一個.babelrc進行配置。

css-loader、style-loader:這兩個建議配合使用,用來解析css文件依賴。

less-loader、sass-loader:分別用來解析less文件,sass文件。

file-loader:生成的文件名就是文件內容的MD5散列值,并會保留所引用資源的原始擴展名。

url-loader:功能類似于file-loader,但是當文件大小低于指定的限制時,可以返回一個DateUrl。?

四、簡述webpack的plugins和loaders有什么區別

(1)作用不同

  • loader直譯為「加載器」,作用是讓webpack擁有加載和解析非JS文件的能力,是用來加載文件的。
  • plugin直譯為「插件」,可以拓展webpack的功能,讓webpack具有更多的靈活性。在webpack運行的生命周期中會廣播出許多事件,plugin可以監聽這些事件,在合適的時機通過webpack提供的API改變輸出結果。

(2)用法不同

  • loader在module.rules中配置,也就是說他作為模塊的解析規則存在,類型為數組,每一項都是一個Object,里面描述了對于什么類型的文件,使用什么加載和使用的參數。
  • plugin在plugins中單獨配置。類型為數組,每一項事宜額plugin的實例,參數都通過構造函數傳入。

(3)常見的loader和plugin

  • 常見的loader:

樣式:style-loader、css-loader、less-loader、sass-loader等;
文件:raw-loader、file-loader 、url-loader等可以處理資源;
編譯:babel-loader(把 ES6 轉換成 ES5)、coffee-loader 、ts-loader等;
vue-loader、coffee-loader、babel-loader等可以將特定文件格式轉成js模塊、將其他語言轉化為js語言和編譯下一代js語言;

  • 常見的plugin:

內置UglifyJsPlugin:壓縮代碼,通過UglifyES壓縮ES6代碼;

內置CommonsChunkPlugin:提取公共代碼,提高打包效率,將第三方庫和業務代碼分開打包;

ProvidePlugin:自動加載模塊,代替require和import;

  new webpack.ProvidePlugin({$: 'jquery',jQuery: 'jquery'})

html-webpack-plugin:可以根據模板自動生成html代碼,并自動引用css和js文件;

extract-text-webpack-plugin:將js文件中引用的樣式單獨抽離成css文件;

HotModuleReplacementPlugin:熱更新插件,修改代碼后,自動刷新,實時預覽修改后的效果。

五、webpack如何切換開發環境和生產環境

生產環境與開發環境的區別無非就是調用的接口地址、資源存放路徑、線上的資源是否需要壓縮等方面。目前的做法是在package.json中設置node的一個全局變量,然后在webpack.config.js文件里面進行開發環境與生產環境的配置切換。

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

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

相關文章

堆排序和Topk問題

堆排序 堆排序即利用堆的思想來進行排序, 總共分為兩個步驟: 1. 建堆 升序:建大堆; 降序:建小堆 2 .利用堆刪除思想來進行排序 利用堆刪除思想來進行排序 建堆和堆刪除中都用到了向下調整,因此掌握了…

外賣系統關于redis使用解決高并發情況

1、如何配置redis 在java中操作redis 操作步驟: 1、導入Spring Data Redis的maven坐標 2、配置Redis數據源 3、編寫配置類,創建RedisTemplate對象 4、通過RedisTemplate對象操作Redis 2、Redis結合Lua腳本 減少網絡開銷:使用Lua腳本&#xf…

FolkMQ v1.5.1 發布(“新式”國產消息中間件)

FolkMQ 是個“新式”的消息中間件。強調:“小而巧”、“簡而強”。 功能簡表 角色功能生產者(客戶端)發布普通消息、Qos0消息、定時消息、順序消息、可過期消息、事務消息、廣播消息消費者(客戶端)訂閱、取消訂閱。消…

前端面試題日常練-day27 【面試題】

題目 希望這些選擇題能夠幫助您進行前端面試的準備,答案在文末。 1. 在Vue中,以下哪個選項可以用于監聽數據的變化并執行相應的操作? a) computed b) methods c) data d) watch 2. 在Vue中,以下哪種方式可以實現組件之間的通信…

中醫理療元宇宙 科技賦能中醫藥產業走向國際市場

基于380億參數量,對中醫藥海量文本進行數據訓練,實現方劑優化、機制闡釋和新適應癥的精準發現……日前在天津召開的數智賦能大健康產業新質生產力暨第四屆中醫藥國際發展大會上,由天士力醫藥集團與華為云共同開發的“數智本草”中醫藥大模型正…

37. 解數獨 - 力扣(LeetCode)

基礎知識要求: Java: 方法、for循環、if else語句、數組 Python: 方法、for循環、if else語句、列表 題目: 編寫一個程序,通過填充空格來解決數獨問題。 數獨的解法需 遵循如下規則: 數字 1-9 在每一行…

Windows搭建Nginx代理本地盤的文件(共享路徑或本地路徑)

文章目錄 Windows搭建Nginx代理本地盤的文件 - 前言需求背景掛載網絡共享路徑檢查連接狀態下載Nginx編輯 Nginx 配置文件啟動 Nginx檢測Nginx是否成功啟動使用方法遠程共享路徑示例本地文件示例 測試 Windows搭建Nginx代理本地盤的文件 - 前言 在開發過程中,確保文…

ChatGPT Mac客戶端 下載安裝教程(免費 不限次數使用 還支持語音聊天)

ChatGPT Mac客戶端 下載安裝教程(免費 不限次數使用 還支持語音聊天) 原文鏈接:https://blog.csdn.net/weixin_48311847/article/details/139248625 免費 不限次數使用 還支持語音聊天

mysql 排序、查詢執行流程、幻讀

文章目錄 MySQL的 ORDER BY 執行流程示例表和查詢語句執行流程全字段排序Rowid 排序全字段排序 VS rowid排序聯合索引優化覆蓋索引優化 小結思考題問題執行過程中是否需要排序?如何在數據庫端實現不排序?實現分頁需求 使用ORDER BY RAND()內存臨時表與磁…

ANDROID OLLVM 混淆配置

安裝環境 MacOSGITCMAKENDK - 21.1.6352462 步驟 1. 編譯項目 此項目版本較低 https://github.com/obfuscator-llvm/obfuscator ,我們使用 https://github.com/heroims/obfuscator 進行編譯 git clone https://github.com/heroims/obfuscator.gitcd obfuscator…

曼城四連冠,劍南春與萬千球迷共同見證“榮耀時刻”

執筆 | 洪大大 編輯 | 揚 靈 5月19日,英超2023-2024賽季第38輪比賽全面開打,憑借隊員的出色發揮,曼城最終以3-1戰勝西漢姆聯,成功捧起了英超聯賽的獎杯,成為英格蘭足球頂級聯賽100多年歷史上第一支成就四連冠的豪門…

事務報錯沒有顯示回滾導致DDL阻塞引發的問題

在業務開發過程中,顯示的開啟事務并且在事務處理過程中對不同的情況進行顯示的COMMIT或ROLLBACK,這是一個完整數據庫事務處理的閉環過程。 這種在應用開發邏輯層面去handle的事務執行的結果,既確保了事務操作的數據完整性,又遵循了…

簡單句語法

簡單句是指包含一個主語和一個謂語的句子,它表達一個完整的思想。簡單句是構成更復雜句子的基礎。 簡單句的兩種基本結構 簡單句可以分為兩種基本結構: 主謂結構: 描述主語所做的動作或行為,也就是 “做什么”。 主系結構: 描述主語的狀態…

Python2和Python3對utf8的實現方式有什么區別?

# -*- coding: utf8 -*- 是一個特殊的文件頭部注釋,通常出現在Python 2的源代碼文件的開頭。這個注釋告訴Python解釋器,該源文件使用的是UTF-8編碼。這對于包含非ASCII字符(例如中文字符、特殊符號等)的Python源代碼文件來說非常重…

探索未來設計新境界,PSAI插件 藝術創作神器來襲!

想象一下,如果有一個工具,能夠讓你的設計工作變得既簡單又高效,那會是怎樣的體驗?現在,夢想成真了! 這是一款革命性的PSAI設計插件,專為創意人士打造。它將徹底改變你的設計流程,讓你…

【OpenCV】像素信息統計

介紹了計算像素均值、方差的API,以及統計像素信息的方法。相關API: minMaxLoc()mean()meanStdDev() 代碼: #include "iostream" #include "opencv2/opencv.hpp"using namespace std; using namespace cv;int main(int…

談談如何建立可落地的數字化轉型戰略

數字化轉型戰略是指將數字技術集成到企業或組織的所有領域,從根本上改變其運營方式以及為客戶提供價值的方式。它涉及采用新技術并重新思考現有業務流程,以提高效率、生產力和客戶滿意度。 成功的數字化轉型戰略需要采用涉及人員、流程和技術的整體方法。…

【全開源】JAVA同城搬家系統源碼小程序APP源碼

JAVA同城搬家系統源碼 特色功能: 強大的數據處理能力:JAVA提供了豐富的數據結構和算法,以及強大的并發處理能力,使得系統能夠快速地處理大量的貨物信息、司機信息、訂單信息等,滿足大規模物流的需求。智能路徑規劃&a…

香橙派 AIPro開發板上手測評

前言 最近拿到了一個新玩具:香橙派 AIPro。一個只比銀行卡大一點點的開發板能帶給我們多少驚喜呢?接下來就跟我一起來體驗下這塊開發板的魅力。 一、硬件配置 CPU:配備了4核64位ARM處理器,其中默認預留1個給AI處理器使用 NPU&am…

SpringBoot和Apache Doris實現實時廣告推薦系統

本專題旨在向讀者深度解讀Apache Doris技術,探討其與SpringBoot框架結合在各類實際應用場景中的角色與作用。本專題包括十篇文章,每篇文章都概述了一個特定應用領域,如大數據分析、實時報告系統、電商數據分析等,并通過對需求的解析、解決方案的設計、實際應用示例的展示以…