面试整理之webpack

背景:大约从9月12日开始面试,到现在为止大约面了30余家公司,大厂小厂都有,岗位级别覆盖中级和高级前端,可以很明显看出webpack&构建工具是各个项目考察的重点之一,因此对webpack各个知识点作一些整理和归纳。

1. 前端打包工具的归纳与总结

    1)npm script

            npm本身是node本身附带的npm包管理工具的一个内置功能,其功能点 为在package.json中使用scripts字段定义任务,提供了pre和post两个钩子,缺点功能过于简单,无法方便管理多个任务间的依赖。

    2)Grunt

            进化版的npm script, 有大量现成的插件封装常见任务, 也可以管理任务间依赖,自动执行依赖的任务

            优点: 1.灵活,只执行我们定义的任务   

                        2.有大量已封装的插件可供使用

            缺点:集成度低,需要写大量配置,无法做到开箱即用

    3)Gulp

            相当于Gulp的加强版,最大特点是引入的流的概念,配置简单

            优点:好用不失灵活,可以单独构建也可以搭配其它构建工具,相比Grunt增加监听文件,读写文件,流式处理的功能

            缺点:与Gulp一样,集成度不高,需要配置才能使用,无法做到开箱即用

    4)Webpack

           模块化的打包工具,在webpack中一切皆模块,通过loader转换文件,通过Plugin注入钩子,最后输出多个模块化组合成的文件。

            优点:1.专注于模块化的项目,可以做到开箱即用,一步到位。

                       2.可以通过Plugin实现扩展,好用,且有灵活性

                       3.社区庞大活跃,有非常多紧贴业务的依赖于特性

            缺点:只能用于模块化的项目,而一些非模块化的老项目就不适用了

    5)Rollup

           专注于js的模块化打包工具,提供了很多处理js的一些编译优化概念,如Tree Shaking和Scope Hoisting(当然这些概念也已经被webpack模仿和实现)。


2. Webpack配置&概念

  1. entry(入口)

        指示 webpack 应该使用哪个模块,来作为构建其内部依赖树的开始。进入入口起点后,webpack 会找出有哪些模块和库是入口起点(直接和间接)依赖的。

        默认值:./src/index.js

     2. output(出口)

            output 属性告诉 webpack 在哪里输出它所创建的 bundle,以及如何命名这些文件。

            主要输出文件的默认值是 ./dist/main.js,其他生成文件默认放置在 ./dist 文件夹中。

    3. module(模块)

            module属性配置的是处理模块的规则,webpack原生内置支持处理的文件类型为js,json文件,在遇到对应的其它文件时,则需要对应处理的loader进行处理,module字段通过rule字段传入一个数组,通过正则匹配去在遇到对应类型的文件时使用对应的loader。

    4. resolve(解析)

            resolve属性用于修改拓展webpack解析资源依赖的规则,webpack内置了js模块化解析规则,会按默认的模块解析规则去寻找文件,但有时我们可以优化修改其寻找文件的规则。

    5. plugins(插件)

            plugins是一个数组,其接受的数组元素是为webpack增加各种拓展能力的插件的实例(因此都需要用new调用)

    6. devServer(调试服务器)

            devServer是webpack提供的专门针对于项目代码开发环境的一个封装的服务器,可以提高开发效率

    7. stats (统计输出)

            webpack在打包编译的过程中会有一系列的输出打包情况的输出,stats负责配置对应的输出策略,以便于我们在不同情况下查看不同的打包输出信息

    8. devtool(开发工具)

            针对开发配置对应的source-map策略

    9. externals(拓展)

            externals负责告诉webpack,项目中使用了哪些不需要被打包的模块

    10. target(目标)

            target属性负责配置让webpack针对不同的环境构建出对应环境的代码,其默认值为 'web'(浏览器环境),可以针对node环境,webworker,electron打包出对应环境的代码。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343

推荐阅读更多精彩内容