上集回顾:javascript
话音刚落 ~ npm老大哥又来电话了【有大工程】。
“喂,老大哥,对方啥阵形啊?”
“4-4-2? 踢你的?”
“行,立刻带上大姨夫嗷,拜拜!”css
webpack小老弟在接到npm老大哥的介绍后,立马动身参与到大项目中。准备狠狠地大展身手~~~html
本篇文章知识内容:vue
正文开始java
webpack哼着小曲:“画画的baby,画画的baby...”;过了半个小时车程后,终于见到了大工程负责人:茂狸【校园商铺公众号开发负责人】。webpack打完招呼后就匆匆忙忙的去见一下工程:school-store。react
“哇!这...有点棘手啊,又图片、css啥的,不过还行,难不倒我”。webpack
“额~是这样的,webpack兄”;茂狸此时说到,web
“打包以前,咱们有些想问您一些关于代码组织的事情,您看行吗?”npm
“嗯嗯,茂狸请讲!”缓存
“是这样的,请先看下咱们的项目结构。”
assset - cat.jpg css - public.css // 项目公共css home - home.js - home.html - home.css - index.js // home模块的入口(顺着该入口组织代码) login - login.js - login.html - login.css - index.js // login模块的入口
部分核心代码:
// login - index.js代码 import './login.css' import '../css/public.css' import login from './login' /*设置页面得交互逻辑* */ function initPage() { let elAccount = document.getElementById('account'); let elPass = document.getElementById('pass'); let elLogin = document.getElementById('login'); elLogin.onclick = function (el) { if(login.login(elAccount.value, elPass.value)) { login.jumpToHome() }else { alert('帐号或密码错误') } } } initPage();
茂狸继续说道:“上一个来打包的同志报错了,在引入login.css的时候发生的,请问下是怎么回事?并且,咱们本身已经写好的html怎么使用到勒?”
“e,上个兄弟也是冤枉,这确定是大家的打包设计图纸没有定义对css的支持啊,咱们这行默认只认识es5的。这样吧,你看看其余客户的设计”
module.exports = { ... module: { rules: [ { test: /\.css$/, use: ['style-loader', 'css-loader'], }, ], }, ... }
"不过你确定要先让老大哥先把style-loader和css-loader这两个朋友叫过来,另外啊,告诉您个经验:除了es5外,你想要支持其余的都得另外摇人,先让npm老大哥喊人,而后在图纸的rules中设置对其余文件类型的支持。"
“我懂了,我立刻试试”。
“可是这种作法不适合客户端缓存喔,能不能帮我把css单独抽出文件来?”
“嗯,先生,能够的。我介绍【MiniCssExtractPlugin】给您认识,这个适合webpack4及以上的版本。若是您下次请到的是webpack1-3的话,您就找【extract-text-webpack-plugin】,下面再给您看一下其余客户关于【MiniCssExtractPlugin】的写法吧。”
我只认识js文件,若是遇到css、jpg这些我不认识的文件呢,您必定要想到【loader】
若是您还想在loader的过程当中想要增长其余功能,那就要想到 【plugin】
而后经常使用的loader跟plugin的好朋友我也列个:
loader
plugin
辛辛苦苦干完这一票以后,webpack小老弟已经满头大汗勒,忽然发现今天已经周五了喔。
心想:
“周五就该有周五的态度,有什么事,下周一再说吧。” “老大哥来了都很差使” “今晚整个醉仙脆皮烧鸡吃吃先” “不,我今晚还要来把极地大乱斗”