魔影迷踪:(output 出口)
cd:10秒
派克在经过n(取决于当前派克进行工作的复杂度)秒的吟唱后传送至指定地点。
(output用于配置打包完成文件的输出和命名,配置output的最低标准是设置一个对象包含以下两点:)
-
filename 输出文件的文件名
-
path 输出目录的绝对路径
基础使用:
const path = require(‘path’);
module.exports = {
entry: ‘./src/js/file.js’,
output: {
path: path.resolve(__dirname, ‘dist’),
filename: ‘test.bundle.js’
}
};
进阶使用:
当配置了多入口文件并且想输出不同chunk时应该对filename使用占位符来保证文件名称的唯一性。
占位符:
-
name——使用入口名称
-
id——使用内部chunk id
-
hash——使用每次构建过程中的唯一hash
-
chunkhash——使用基于每个chunk内容的hash
-
query——使用文件名?后面的字符串
{
entry: {
app: ‘./src/app.js’,
search: ‘./src/search.js’
},
output: {
filename: ‘[name].js’,
path: __dirname + ‘/dist’
}
}
吸星大法(loader)
cd:8秒
派克可以同化其他英雄的技能,将其转换为自身可用的能量。成功吸取基础属性+200%。
(webpack本身只能处理js文件。loader可以将其它文件类型转换为webpack能够处理的模块,并对其进行打包或其它操作。它与modules模块配合使用,通过配置module.rules实现。loader相当于其他工具中的task(任务)。)
loader的核心有两个属性:
-
test:匹配需要通过loader进行转换的文件
-
use: 指定通过哪个loader进行转换
基础配置:
const path = require(‘path’);
const config = {
output: {
filename: ‘test.bundle.js’
},
module: {
rules: [
{ test: /.txt$/, use: ‘raw-loader’ }
]
}
};
module.exports = config;
进阶配置:
rules允许你在处理一个文件时配置多个loader,只需要给use传入一个数组包含不同loader对象
module: {
rules: [
{
test: /.css$/,
use: [
{ loader: ‘style-loader’ },
{
loader: ‘css-loader’,
options: {
modules: true
}
}
]
}
]
}
骚操作:可以在import语句使用!将资源中的loader分开,这样可以不配置webpack从而使用一个内联方式进行loader处理,但不推荐这种方式,因为它很难维护。
import Styles from ‘style-loader!css-loader?modules!./styles.css’;
光荣进化(plugins 插件)
cd:35秒
派克进化loader,通过plugin对5000码范围内的己方英雄进行增幅、强化,并进入霸体状态持续10秒。
(不同于loader用来解析非js的文件类型,plugin可以用来处理更复杂的任务,包括打包、优化、压缩,最小到重定义环境变量。它是非常强大的,除了插件市场提供的成熟插件,还可以自己进行编写。plugin为loader带来了更多的特性,它存在的目的在于解决loader无法实现的其他事情。
使用插件只需要require()
它,然后再添加到plugin模块中,通常情况下多数插件是可自定义的,所以想在一个配置文件中使用不同配置功能的插件,必须通过new创建一个新的实例。)
基础配置:
const HtmlWebpackPlugin = require(‘html-webpack-plugin’); // 通过 npm 安装
const webpack = require(‘webpack’); // 用于访问内置插件
const config = {
module: {
rules: [
{ test: /.txt$/, use: ‘raw-loader’ }
]
},
plugins: [
new HtmlWebpackPlugin({template: ‘./src/index.html’})
]
};
module.exports = config;
双重人格(mode 模式)
cd:1.5秒
派克切换形态,工作狂模式:移速增加50%,艺术家模式:减速30%同时增加自身韧性50%,免疫控制。
(通过mode
配置开发环境(development)和生产环境(production),可以启用相应模式下webpack的内置优化。)
development:启用NamedChunksPlugin和NamedModulesPlugin插件
production:启用
FlagDependencyUsagePlugin,
FlagIncludedChunksPlugin,
ModuleConcatenationPlugin,
NoEmitOnErrorsPlugin,
OccurrenceOrderPlugin,
SideEffectsFlagPlugin和 UglifyJsPlugin插件。
配置:
module.exports = {
mode: ‘production’ // 或development
};
智者光辉(reslove 模块解析)
cd:60秒
派克指定位置进入快速寻路模式,并自动分析最近路线,且无视地形障碍。
(通过配置resolve来解析文件路径,reslove中可以配置使用专属插件。)
目前支持解析三种文件路径: 绝对路径、相对路径、模块路径
配置alias别名(最常用)
创建 import 或 require 的别名可以使模块引入变简单。 例:
alias: {
Utilities: path.resolve(__dirname, ‘src/utilities/’),
Templates: path.resolve(__dirname, ‘src/templates/’)
}
未配置alias:
import Utility from ‘…/…/utilities/utility’;
已配置alias:
import Utility from ‘Utilities/utility’;
百宝箱(module 模块)
派克拥有可以储存任何物质的空间物,可以分类储存装备。激活后装备栏增加3,自身移速减20%
(通过配置module处理项目中的不同类型的模块。) rules匹配规则数组(最常用) 创建模块时,匹配请求的规则数组。通过规则能够修改模块的创建方式。这些规则能够对模块(module)应用 loader,或者修改解析器(parser)。
const config = {
module: {
rules: [
{ test: /.css$/, use: ‘css-loader’ }
]
}
};
推荐出装
文件处理
-
raw-loader
加载文件原始内容(utf-8) -
val-loader
将代码作为模块执行,并将 exports 转为 JS 代码 -
url-loader
像 file loader 一样工作,但如果文件小于限制,可以返回 data URL -
file-loader
将文件发送到输出文件夹,并返回(相对)URL
JSON
-
json-loader
加载 JSON 文件(默认包含) -
json5-loader
加载和转译 JSON 5 文件 -
cson-loader
加载和转译 CSON 文件
转换编译(Transpiling)
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)
完整版面试题资料免费分享,只需你点赞支持,动动手指点击此处就可领取了。
回顾项目
往往在面试时,面试官根据你简历中的项目由点及面地展开问答,所以请对你做过的最好的项目进行回顾和反思。回顾你做过的工作和项目中最复杂的部分,反思你是如何完成这个最复杂的部分的。
面试官会重点问你最复杂的部分的实现方法和如何优化。重点要思考如何优化,即使你项目中没有对那部分进行优化,你也应该预先思考有什么优化的方案。如果这部分答好了,会给面试官留下很不错的印象。
重点在于基础知识
这里指的基础知识包括:前端基础知识和学科基础知识。
前端基础知识:html/css/js 的核心知识,其中 js 的核心知识尤为重要。比如执行上下文、变量对象/活动对象(VO/AO)、作用域链、this 指向、原型链等。
学科基础知识:数据结构、计算机网络、算法等知识。你可能会想前端不需要算法,那你可能就错了,在大公司面试,面试官同样会看重学生这些学科基础知识。
你可能发现了我没有提到React/Vue
这些框架的知识,这里得说一说,大公司不会过度的关注这方面框架的知识,他们往往更加考察学生的基础。
这里我的建议是,如果你至少使用或掌握其中一门框架,那是最好的,可以去刷刷相关框架的面试题,这样在面试过程中即使被问到了,也可以回答个 7788。如果你没有使用过框架,那也不需要太担心,把重点放在基础知识和学科基础知识之上,有其余精力的话可以去看看主流框架的核心思想。
行回顾和反思。回顾你做过的工作和项目中最复杂的部分,反思你是如何完成这个最复杂的部分的。
面试官会重点问你最复杂的部分的实现方法和如何优化。重点要思考如何优化,即使你项目中没有对那部分进行优化,你也应该预先思考有什么优化的方案。如果这部分答好了,会给面试官留下很不错的印象。
重点在于基础知识
这里指的基础知识包括:前端基础知识和学科基础知识。
前端基础知识:html/css/js 的核心知识,其中 js 的核心知识尤为重要。比如执行上下文、变量对象/活动对象(VO/AO)、作用域链、this 指向、原型链等。
学科基础知识:数据结构、计算机网络、算法等知识。你可能会想前端不需要算法,那你可能就错了,在大公司面试,面试官同样会看重学生这些学科基础知识。
你可能发现了我没有提到React/Vue
这些框架的知识,这里得说一说,大公司不会过度的关注这方面框架的知识,他们往往更加考察学生的基础。
这里我的建议是,如果你至少使用或掌握其中一门框架,那是最好的,可以去刷刷相关框架的面试题,这样在面试过程中即使被问到了,也可以回答个 7788。如果你没有使用过框架,那也不需要太担心,把重点放在基础知识和学科基础知识之上,有其余精力的话可以去看看主流框架的核心思想。