前端小白webpack学习(三)
不写不知道,一写发现自己真是罗里吧嗦,尽量改进
之前写了webpack的主要概念和一些使用,今天再记一下webpack的plugins和loaders的使用
7.webpack plugins使用
例:html-webpack-plugin ,这个插件的作用主要有两点
1.自动在内存中根据指定页面生成一个内存的页面
2.自动把打包好的 bundle.js 追加到页面中去
安装插件,终端输入
npm i html-webpack-plugin -D
- 插件使用前需引入,在webpack.config.js文件中
const HtmlWebpackPlugin = require('html-webpack-plugin')
- 配置插件
const path = require('path')
const htmlWebpackPlugin = require('html-webpack-plugin')
module.exports = {
entry:path.join(__dirname,'./src/main.js'),
output:{
path:path.join(__dirname,'./dist'),
filename:"bundle.js"
},
plugins:[
new htmlWebpackPlugin({
template:path.join(__dirname,'./src/index.html'), //以src目录下的index.html为模板
filename:"index.html" //生成一个自动注入bundle.js的index.html文件
})
]
}
- 运行
webpack
重新打包,dist目录下生成一个新的index.html,输入npm run dev
运行当前页面 - webpack自身也带有插件,如HotModuleReplacementPlugin(热替换模块)插件,也被成为HMR(永远不要在生产环境(production)下启用 HMR)
//使用webpack所携带的插件,只需引入webpack,再用webpack.***获取即可
const webpack = require('webpack')
module.exports = {
entry:path.join(__dirname,'./src/main.js'),
output:{
path:path.join(__dirname,'./dist'),
filename:"bundle.js"
},
plugins:[
new webpack.HotModuleReplacementPlugin(),
new htmlWebpackPlugin({
template:path.join(__dirname,'./src/index.html'), //以src目录下的index.html为模板
filename:"index.html" //生成一个自动注入bundle.js的index.html文件
})
]
}
8.webpack loader使用
前面提到webpack自身只能解析JavaScript和JSON文件,所有当我们需要打包其他类型文件如css文件、image文件等,需要使用loader配置。
- 以.css文件为例,在src/css目录下创建一个index.css文件,随便写一点样式,如
ul>li{
background-color: cadetblue;
}
- 安装解析css文件需要使用到的loader,打开终端输入
npm i style-loader css-loader -D
- 在main.js中引入index.css(main.js为项目入口)
import './css/index.css'
- webpack.config.js中配置loader
const path = require('path')
const webpack = require('webpack')
const htmlWebpackPlugin = require('html-webpack-plugin')
module.exports = {
entry:path.join(__dirname,'./src/main.js'),
output:{
path:path.join(__dirname,'./dist'),
filename:"bundle.js"
},
plugins:[
new webpack.HotModuleReplacementPlugin(),
new htmlWebpackPlugin({
template:path.join(__dirname,'./src/index.html'), //以src目录下的index.html为模板
filename:"index.html" //生成一个自动注入bundle.js的index.html文件
})
],
module:{
rules:[
//loader的顺序不能颠倒,webpack使用loader的顺序是从右到左(从下到上)
{test:/\.css$/,use:['style-loader','css-loader']}
]
}
}
- 重新打包,运行,css解析成功
前端小白webpack学习(三)的更多相关文章
- 前端小白webpack学习(二)
前一篇写了自我总结的webpack定义:为JavaScript服务的静态模块打包器 和几大基本概念 entry.output.plugins.loaders等.指路前端小白webpack学习(一) 下 ...
- 前端小白webpack学习(一)
俗话说得好,好记性不如烂笔头. 之前就在学习中看过webpack的教程,然而一段时间没用,火速的忘光了.写这篇博文,做个总结,也让自己以后有个地方回顾. 看webpack之前,我先去看了一下官方文档, ...
- 前端小白webpack学习(四)
.less文件与.scss文件使用与.css文件相仿 less-loader使用需要借助less插件,终端输入npm i less less-loader -D安装; sass-loader使用需要借 ...
- webpack学习三——output
output的两个参数filename,path 一.path输出路径,输出路径要绝对路径,否则报错.做法如下: path:__dirname + 'path' 二.filename 输出文件命,相对 ...
- webpack 学习三 模式
开发环境(development)和生产环境(production)的构建目标差异很大.在开发环境中,我们需要具有强大的.具有实时重新加载(live reloading)或热模块替换(hot modu ...
- 前端小白的学习之路html与css的较量【二】
标签的划分 块级元素 独占一行 设置 宽 高可以起作用 排列方式: 上下排列 行内元素 可以共占一行 设置 宽 高 不起作用,大小由内容决定 排列方式:左右排列 行内块 可以共占一行 可以设置宽 高 ...
- 前端小白的学习之路html与css的较量【一】
html和css的较量 web结构的组成 html标签规则 快速生成一个html html的基本结构 标签的关系 标签 标题标签 段落 图片 超链接 a 属性 a标签里面的值 字符实体 新增的标签 1 ...
- webpack前端构建工具学习总结(二)之loader的使用
Webpack 本身只能处理 JavaScript 模块,如果要处理其他类型的文件,就需要使用 loader 进行转换. Loader 可以理解为是模块和资源的转换器,它本身是一个函数,接受源文件作为 ...
- webpack前端构建工具学习总结(四)之自动化生成项目中的html页面
接续上文:webpack前端构建工具学习总结(三)之webpack.config.js配置文件 插件的介绍文档:https://www.npmjs.com/package/html-webpack-p ...
随机推荐
- 伪共享 FalseSharing (CacheLine,MESI) 浅析以及Java里的解决方案
起因 在阅读百度的发号器 uid-generator 源码的过程中,发现了一段很奇怪的代码: /** * Represents a padded {@link AtomicLong} to preve ...
- 二叉树的建立&&前中后遍历(递归实现)&&层次遍历
下面代码包含了二叉树的建立过程,以及三种遍历方法了递归实现,代码中还利用队列实现了层次遍历. import java.util.LinkedList; import java.util.Queue; ...
- 如何用vue-cli3脚手架搭建一个基于ts的基础脚手架
目录 准备工作 搭建项目 vue 中 ts 语法 项目代理及 webpack 性能优化 其他 忙里偷闲,整理了一下关于如何借助 vue-cli3 搭建 ts + 装饰器 的脚手架,并如何自定义 web ...
- 【Java库】如何使用优秀的加密库Jasypt来保护你的敏感信息?
1 简介 今天我们介绍一个Java库-Jasypt,全称为Java Simplified Encryption,用于加密解密.它能够让开发者用花费最小的工作而把加密集成到项目中,并且不需要对加密/解密 ...
- Golang中的布隆过滤器
目录 1. 布隆过滤器的概念 2. 布隆过滤器应用场景 3. 布隆过滤器工作原理 4. 布隆过滤器的优缺点 5. 布隆过滤器注意事项 6. Go实现布隆过滤器 1. 布隆过滤器的概念 布隆过滤器(Bl ...
- luogu P5058 [ZJOI2004]嗅探器
题目描述 某军搞信息对抗实战演习,红军成功地侵入了蓝军的内部网络,蓝军共有两个信息中心,红军计划在某台中间服务器上安装一个嗅探器,从而能够侦听到两个信息中心互相交换的所有信息,但是蓝军的网络相当的庞大 ...
- Vue.js命名风格指南
前言 本命名风格指南推荐了一种统一的命名规范来编写 Vue.js 代码.这使得代码具有如下的特性: 统一团队的命名规范,其它开发者或是团队成员更容易上手阅读和理解. IDEs 更容易理解代码,从而提供 ...
- Apple 应用内支付心得
http://tank2308635.iteye.com/blog/1238687Apple 应用内支付 首先简要说一下IAP 流程 简要步骤说明: 用户进入购买虚拟物品页面,App从后台服务器获取产 ...
- Creating your first iOS Framework
转自:https://robots.thoughtbot.com/creating-your-first-ios-framework If you’ve ever tried to create yo ...
- Balls in the Boxes
Description Mr. Mindless has many balls and many boxes,he wants to put all the balls into some of th ...