一:为什么使用webpack

1. 代码转换、文件优化、代码分割、模块合并、自动刷新、等等

2. webpack上手

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<!--
模块化: -->
<script src="../dist/main.js"></script>
</body>
</html>

使用:

1安装webpack

 npm install webpack webpack-cli -g

##### 2webpack初体验

在创建项目的使用,我们回顾一下我们写vue和react项目,是不是都有一个模块化的思想,将一个方法,一个组件单独文件中进行处理,在引入到我们想要的文件中。

案例目录:webpack1

问题:在文件的浏览器中不用使用这些模块化

解决方法:使用webpack进行打包处理

在终端执行 webpack  =>生成 dist目录

代码:webpack2

3webpack的配置

(1) 在项目目录中创建一个webpack.config.js文件

const path = require('path');

module.exports = {
entry: './src/index.js',
output: {
path: path.resolve(__dirname, 'dist'), //不是绝对路径
filename: 'index.js',
},
};

(2) 我们要向和vue,react,通过命令产生打包文件

   "build":"webpack"

4:webpack主文件(依赖图)

就是这个src/index.js 文件

这个文件就是vue.中的main.js文件,这个里面引入的所有代码都会被执行

5:处理loader

//1webpack为什么需要loader
//就是webpack处理的文件,不是js,文件类型,都需要loader来进行处理
//2loader是什么?
//就是用来辅助webpack,解析不是js文件的方法

案例一:处理css-loader

//1 创建元素

//例子登录
function Login(){
//创建元素
let oH = document.createElement('h2')
oH.innerHTML = '你好同学' //添加内容
oH.className ='title' return oH
}
//放到body上面去
document.body.appendChild(Login())

2创建css样式

// 引入我们的css
import '../css/login.css' //报错因为webpack不能处理 css为文件 //例子登录
function Login(){
//创建元素
let oH = document.createElement('h2')
oH.innerHTML = '你好同学' //添加内容
oH.className ='title' return oH
}
//放到body上面去
document.body.appendChild(Login())

解决方法

1 安装css-loader

npm install css-loader

2 配置webpack解析的文件

 module: {
rules: [
{ test: /\.css$/, use: 'css-loader' } ],
},

发现页面样式没有效果,就是我们刚刚的配置,让webpack,可以解析css文件,但是没有使用

在安装一个loader =》style -loader

  module: {
rules: [
// { test: /\.css$/, use: 'css-loader' } //单个
//注意又有一个问题: use执行的顺序 从右向做
{ test: /\.css$/, use:[ 'style-loader','css-loader'] } ],
},

案例处理less文件

import '../css/login.less'
//创建了一个标签
function ohs(){
let oh = document.createElement('h2')
oh.innerHTML ='你好'
oh.className ='title'
return oh
}
//webpack 只能处理.js 文件 =》其他的文件不能处理 // 提供的loader?这个loader是什么?loader作用? //就是一个webpack中用来解析成webpack认识的文件
//例子=》css
//安装 css-loader
//配置 document.body.appendChild(ohs())

需要安装less-loader ,webpack才能解析这个文件

  module: {
rules: [
// { test: /\.css$/, use: 'css-loader' } //单个
//注意又有一个问题: use执行的顺序 从右向做
{ test: /\.css$/, use:[ 'style-loader','css-loader'] },
//注意这里的解析方式
// less=>css =>在通过style-loader使用样式
{ test: /\.less$/, use:[ 'style-loader','css-loader','less-loader'] }
],
},

6:webpack中babel的使用

作用:就是将es6的语法变成 es5的语法

案例 将es6箭头函数变成es5的语法

var title= '小明'
const show =()=>{
console.log(title);
} show()

1安装babel

npm install --save-dev @babel/core @babel/cli
npm install babel-loader
npm install @babel/plugin-transform-arrow-functions

2配置规则

    // 处理js文件
mode:'development',
{
test: /\.js$/,
// 需要使用babel提供的几个插件
// use:[ 'babel-loader']
use: {
loader: "babel-loader",
options: { //选项
plugins: [
'@babel/plugin-transform-arrow-functions' ]
} }
}

7:webpack中plugins的使用(插件的使用)

我们的这个模板是需要自己写的,=》index.html,

我们通过使用插件自动创建模板

1安装插件

npm install html-webpack-plugin

2webpack配置插件

  //配置插件=>在modult.exports上添加一个属性   plugins
let HtmlWebpackPlugin = require('html-webpack-plugin') //类
plugins:[ //数组可以放多个
new HtmlWebpackPlugin()
]

8:webpack加载vue文件

1 安装相关依赖

npm install vue-template-compiler
npm install vue@2.6.14
npm install vue-loader@15.9.8

2 创建根组件

<template>
<div class="title">
<h2>{{msg}}</h2>
</div>
</template> <script>
export default {
data(){
return{
msg:'你好同学'
}
}
}
</script> <style scoped lang='less'>
.title{
color:red;
}
</style>

3在index.js中创建vue实例

//main.js入口主文件

import Vue from 'vue'
import App from './App.vue' new Vue({
render:h=>h(App)
}).$mount('#app')

4配置解析vue-loader

 const VueLoaderPlugin = require('vue-loader/lib/plugin')
{ test: /\.vue$/, use: ['vue-loader'] },
],
//配置插件
plugins:[
new HtmlWebpackPlugin(),
new VueLoaderPlugin()
]

webpack 我们需要掌握的知识:

1 知道webpack 作用:

2知道微博pack 使用 loader 和插件

​ 3 你在项目中有没有配置webpack, 配置过

​ 1)代理 devServer

​ 2) 通过webpack 处理性能优化的 =》 js ,css , 图片,等等

​ 4webpack 执行流程

webpack核心用法,为什么要使用webpack的更多相关文章

  1. 手写webpack核心原理,再也不怕面试官问我webpack原理

    手写webpack核心原理 目录 手写webpack核心原理 一.核心打包原理 1.1 打包的主要流程如下 1.2 具体细节 二.基本准备工作 三.获取模块内容 四.分析模块 五.收集依赖 六.ES6 ...

  2. webpack核心模块tapable用法解析

    前不久写了一篇webpack基本原理和AST用法的文章,本来想接着写webpack plugin的原理的,但是发现webpack plugin高度依赖tapable这个库,不清楚tapable而直接去 ...

  3. webpack进阶用法你都get到了么?

    如何消除无用代码:打包自己的私有js库:实现代码分割和动态import提升初次加载速度:配置eslint规范团队代码规范:打包异常抓捕你都get到了么? 摇树优化:Tree Shaking webpa ...

  4. webpack基本用法及原理(10000+)

    1 webpack是什么 所有工具的出现,都是为了解决特定的问题,那么前端熟悉的webpack是为了解决什么问题呢? 1.1 为什么会出现webpack js模块化: 浏览器认识的语言是HTML,CS ...

  5. Webpack 核心开发者 Sean Larkin 盛赞 Vue

    dev.io 近日邀请了 Webpack 核心开发者 Sean Larkin 回答开发者提问,其中几个问提比较有意思,和掘金的小伙伴们分享一下. 先上点前菜: 有一个开发者问 Sean 如何成为一个热 ...

  6. [js高手之路]深入浅出webpack教程系列2-配置文件webpack.config.js详解(上)

    [js高手之路]深入浅出webpack教程系列索引目录: [js高手之路]深入浅出webpack教程系列1-安装与基本打包用法和命令参数 [js高手之路]深入浅出webpack教程系列2-配置文件we ...

  7. webpack入门和实战(一):webpack配置及技巧

    一.全面理解webpack 1.什么是 webpack? webpack是近期最火的一款模块加载器兼打包工具,它能把各种资源,例如JS(含JSX).coffee.样式(含less/sass).图片等都 ...

  8. [js高手之路]深入浅出webpack教程系列3-配置文件webpack.config.js详解(下)

    本文继续接着上文,继续写下webpack.config.js的其他配置用法. 一.把两个文件打包成一个,entry怎么配置? 在上文中的webpack.dev.config.js中,用数组配置entr ...

  9. 【Webpack的使用指南 02】Webpack的常用解决方案

    说是解决方案实际上更像是webpack的插件索引. 写这一篇的目的是为了形成一个所以,将来要用时直接来查找即可. 索引目录 1.自动构建HTML,可压缩空格,可给引用的js加版本号或随机数:html- ...

  10. webpack从零开始第1课:安装webpack和webpack-dev-server

    原文地址:https://segmentfault.com/a/1190000012536871 webpack目录 第1课: 安装webpack和webpack-dev-server 第2课: 配置 ...

随机推荐

  1. CPU TLB原理 [转载好文]

    首先,我们知道MMU的作用是把虚拟地址转换成物理地址.虚拟地址和物理地址的映射关系存储在页表中,而现在页表又是分级的.64位系统常见的配置是4级页表,就以4级页表为例说明.分别是PGD.PUD.PMD ...

  2. CheckBox 选中取值以及回填

    html: <td align="left" style="word-wrap:break-word;word-break:break-all;" col ...

  3. linux开机进入grub rescue界面修复

    一.先输入ls回车,查看显示内容 如: (hd0) (hd0,msdos1) (hd0,msdos2)... 二.然后找出哪个盘安装了系统 ls (hd0,msdos1)/boot/grub/ ls( ...

  4. Django的manytomany字段

    manytomany字段 用于表示多对多的关系,最常见的就是老师和班级的例子 一个老师可以教多个班级,一个班级也可以有多个老师 add 添加关系 teachers=models.Teacher.obj ...

  5. 【每日一题】【双端降序队列Deque】2021年12月28日-239. 滑动窗口最大值

    给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧.你只可以看到在滑动窗口内的 k 个数字.滑动窗口每次只向右移动一位. 返回滑动窗口中的最大值. 来源:力扣(L ...

  6. RequestMappingHandlerMapping请求地址映射流程!

    上篇文章里,我们讲解了RequestMappingHandlerMapping请求地址映射的初始化流程,理解了@Controller和@RequestMapping是如何被加载到缓存中的. 今天我们来 ...

  7. 【Vue】启动vue项目报错: errno: -4058, code: ‘ENOENT‘, syscall: ‘spawn cmd‘

    运行vue项目(npm run dev)报错 报错如下 问题原因 缺少cmd运行程序的环境变量 解决方法在环境变量Path中加上C:\windows\system32

  8. python进阶之路15 之异常处理、生成器相关

    异常捕获处理 1.异常 异常就是代码运行报错 行业术语叫bug 代码运行中一旦遇到异常会直接结束整个程序的运行 我们在编写代码的过程中要尽可能避免 2.异常分类 语法错误 不允许出现 一旦出现立刻改正 ...

  9. python进阶之路12之有参装饰器、多层语法糖、递归函数简介

    多层语法糖 def outter1(func1): print('加载了outter1') def wrapper1(*args, **kwargs): print('执行了wrapper1') re ...

  10. UnoCSS 简化 CSS 的书写,Nice!

    CSS 样式太多,重复写 在学习 UnoCSS 之前,我提出几个问题: 你是否有过写完了 HTML 之后,跳转到 style 写 CSS 这样来回跳转的痛苦? 你是否有过不知道如何给节点取类名的痛苦( ...