一:为什么使用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. 云原生之旅 - 14)遵循 GitOps 实践的好工具 ArgoCD

    前言 Argo CD 是一款基于 kubernetes 的声明式的Gitops 持续部署工具. 应用程序定义.配置和环境都是声明式的,并受版本控制 应用程序部署和生命周期管理都是自动化的.可审计的,并 ...

  2. 篇(18)-Asp.Net Core入门实战-文章管理之文章内容管理(下拉框二级结构递归)

    篇(18)-Asp.Net Core入门实战-文章管理之文章内容管理(下拉框二级结构递归实现) 文章管理是CMS系统的核心表之一,存储文章内容,特点就是字段端,属性多,比如是否标识为热点.推荐等属性, ...

  3. 自动增加 Android App 的版本号

    一般的 C# 应用程序中都有一个 AssemblyInfo.cs 文件,其中的 AssemblyVersion attribute 就可以用来设置该应用程序的版本号.譬如, [assembly: As ...

  4. Shell及Linux常见易错题目题库-Shell/Linux-选择、简答、判断、编程

    1.以下不合法的shell头是(不合法指运行会报错)(   ) A. #!/bin/bash B. #-/bin/bash C. !#/bin/bash 答案:C 2.if [ $2 -a $2 = ...

  5. JavaEE Day02MySQL

    今日内容 数据库的基本概念 MySQL数据库软件 安装 卸载 配置 SQL语句 一.数据库的基本概念 1.数据库DataBase,简称DB 2.什么是数据库?         用于存储和管理数据的仓库 ...

  6. 《HTTP权威指南》 – 11.验证码和新鲜度

    服务器应当告知客户端能够将内容缓存多长时间,在这个时间内就是新鲜的.服务器可以用这两个首部之一来提供信息: Expires(过期) Cache - Control(缓存控制) Expires首部 规定 ...

  7. 安装es可视化软件Kibana

    一 Kibana介绍 Kibana 是一款开源的数据分析和可视化平台,它是 Elastic Stack 成员之一,设计用于和 Elasticsearch 协作. 您.可以使用 Kibana 对 Ela ...

  8. Karmada多云多集群生产实践专场圆满落幕

    摘要:CNCF Karmada社区Cloud Native Days China 2022南京站成功举办. 本文分享自华为云社区<Karmada多云多集群生产实践专场圆满落幕|Cloud Nat ...

  9. DenseNet 论文解读

    目录 目录 摘要 网络结构 优点 代码 问题 参考资料 摘要 ResNet 的工作表面,只要建立前面层和后面层之间的"短路连接"(shortcut),就能有助于训练过程中梯度的反向 ...

  10. Lombok介绍和配置

    什么是Lombok Lombok是一个Java库,能自动插入编辑器并构建工具,简化Java开发. 官网: https://www.projectlombok.org/ Lombok的作用 通过 添加注 ...