首页 > 其他分享 >webpack的部分知识

webpack的部分知识

时间:2023-08-01 15:58:55浏览次数:40  
标签:文件 知识 js webpack 打包 loader 部分 css

webpack

真的好累啊

什么是webpack

webpack是一个现代javascript应用的静态模块打包工具,其主要功能就是模块和打包

这里我一直觉得和maven很像,早在之前的学习过程中,maven具体的工作是什么我一直百思不得其解,认为我们普通的java程序就能够很好的跑起来为什么还要maven呢?

这里先说webpack,

模块化前端:

(这里我插一句嘴,这里的模块可以看作java中的类,但是不一样,不一样,不一样。块内的数据是私有的只是暴露一些接口与外部的其他模块进行通信)

早在之前模块化的概念就被提出并且执行,不过那个时候模块化开发必须借助其他工具,并且在完成代码的编写之后,还需要处理模块之间的各种依赖关系,(这里我必须插一嘴什么是依赖,标识这个项目需要依靠其他的组件库或者组件才能够运行,在java的开发中,通常使用maven或gradle构建工具来管理依赖,前端的工具也有很多这里我只学习webpack,之后的话还会考虑学习最近很火的vite。)并且将其进行整合打包。在webpack中不仅仅javascript可以被当作模块来使用,基本的图片,css,json文件等等都在webpack中都可以被当作模板来使用,这就是webpack中模块化的概念。

打包:

将webpack中的各种资源进行打包,并且打包的过程中进行资源的处理,比如将scss转换成css,将ES6转换成ES5,等等,(这里我再次插一句嘴,这里的包的概念,不是java中的package,这里的打包是bundle,是一个十分抽象的概念,把多个文件整合成一个文件的过程就是打包,举个例子,在之前我们都知道可以使用script标签来进行插入javascript代码,这个时候的javascript必须要依靠浏览器和html才能够运行的起来,如果没有html那就没有用,直到node的出现才能够,让javascript在终端运行,这个时候我们就能够像后端一样,将这些代码用import,export,require连接起来,但是在网页中这些连接的方法不能够使用,这个时候webpack的作用就来了,将代码打包处理文件之间的关系,让import等能够在html中使用,没讲清楚但是我能理解:-p)

webpack打包数据的流程
  1. 读取webpack的配置参数,

  2. 启动webpack,创建compiler对象并且开始解析项目,

  3. 从入口文件开始解析,并且导入依赖模块,递归遍历分析,形成依赖树

  4. 对不同文件类型的依赖模块文件使用对应的loader进行编译,最终转换成javascript文件,

  5. 整个过程中webpack会通过发布订阅模式,像外抛出一些hooks,为webpack插件即可通过监听这些关键的事件节点,执行插件认为u进而达到干预输结果的目的。

再往深处将就离谱了,就是原理了,目前也没有必要知道,目前来说吧除了搭建node服务器和vue使用过webpack以外,其他的地方暂时还没有用到。

这里开始我的正文:

webpack的安装和基本使用

因为webpack是node.js写的,所以在项目开始的时候 npm install webpack webpack-cli --dev

这里我选择使用yarn add -D webpack webpack-cli安装webpack的依赖

(这里我再次插一句嘴,-D表示这个依赖是开发依赖,就是指在编写代码的过程中需要使用的依赖,如果不加-D那引入的就是生产依赖,表示这个依赖在我开发的时候要用,开发完成执行项目的时候也需要引用。)

使用的步骤:

  1. 初始化项目yarn init -y

  2. 安装依赖

  3. 在项目中创建src目录,然后编写代码(index.js)这是默认的文件,之后会学习如何让更改 注意*这里src下的文件是要给浏览器使用的使用的是ES规范而不是node规范,但是当离开src之后,外部的代码全部都是依赖于node的使用的是commonJS规范。

  4. 执行yarn webpack命令打包项目

这里要说明一下,webpack在打包我们的文件的时候,会遍历我们的代码,当我们的模块暴露了但是没有被index.js引用,那么在打包好的js文件之中就不会引用该模块,(当然这里有个前提需要我们在,webpack的webpack.config.js中需要配置一行代码:mode:"production"设置打包模式,设置为生产模式,同理还有development可以将模式设置为开发模式。)但是如果模块中写了函数和表达式,虽然没有暴露但是在引用的过程中webpack还是会将这些代码进行打包。

entery

在webpack.config.js文件中添加entey:" ",这行代码用来指定打包时候的主文件, 默认是./src/index.js,如果你要修改主文件则添加主文件的路径,但是这个我们这个作为习惯,之后尽量不要修改。

entry的值可以是一个字符串,也可以是一个数组,还可以是一个对象,当这个值是一个对象的时候,就不会再打包成一个dist.js文件,就会根据对象的属性名打包属性值的文件,生成对应属性名的多个打包好的文件。

这里举个例子:

module.exports = {
   mode:"production",

   // entery:".src/a.js,"

   // entery:["./src/a.js","./src/b.js"],
   
   // entery:{
   //     a:'./src/a.js',
   //     b:'./src/b.js'
   // },
}

output

顾名思义上一个是入口,那么这个就是出口

    output:{
       path: path.resolve(__dirname,"hello"), //指定打包的目录这里必须使用绝对路径
       filename:"main.js",//打包后后的文件名
       clean:true,//自动清理打包目录
  }

属性有很多,这里仅仅介绍一下,多了的得去自己学

loader

关键东西

webpack默认情况下只能处理js文件,举个例子如果想要处理css文件就需要引入cssloader。

以下以css为例子:

使用css-loader可以处理js中的样式

使用步骤:

  1. 安装:yard add css-loader -D

  2. 配置:

    webpack.config.js

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

    原理是直接将css转换成js代码,单一职责,意思是这玩意只负责将css打包,不负责将css生效

    于是为了让css生效必须继续引入一个loader


       module:{
           rules:[
               //css
              {
                   test:/\.css$/i,
                   use:["style-loader","css-loader"]
              },
               //图片类型
              {
                   test:/\.(png|svg|jpg|jpeg|gif)$/i,
                   type:'asses/resource'
              }
          ]
      }

    use的顺序很重要,因为loader是从后往前执行的,顺序不能乱,活该被vite取代

    babel

    一个工具可以将新的js代码转换成旧的js代码,提高代码的兼容性

    1.npm install -D babel-loader @babel/core @babel/preset-env webpack

    安装babel

    2.webpack.config.js


    module: {
     rules: [
      {
         test: /\.m?js$/,
         exclude: /(node_modules|bower_components)/,
         use: {
           loader: 'babel-loader',
           options: {
             presets: ['@babel/preset-env']
          }
        }
      }
    ]
    }

    3.再package.json配置浏览器

plugin

插件用来为webpack扩展功能

html-webpack-plugin

  • 这个插件可以打包完成之后,自动生成html页面

  • 使用步骤:

  1. 安装依赖

yarn add html-webpack-plugin -D

2.配置插件


plugin:{
   new HTMLPlugin({
       title:"Hello Webpack",//更换生成html的title标签
    template:"./sec/index.html"//这里的html文件是一个模板,之后生成的html文件都是按照这个html为模板生成的。
  })
}

开发服务器

每次写完代码之后都需要yarn webpack

一天天啥也别干了,就webpack得了

于是我们输入代码:yarn webpack --watch

但是这种方式访问的方式是以静态文件的方式访问的,但是我们希望在服务器上访问

安装:yarn add -D webpack-dev-server

将项目放到开发服务器

这时我就想到了vue自动产生的服务器

sourceMap

webpack.config.js

devtool:"inline-source-map"

开发工具使用sourcemap工具,这个东东能够让我们再浏览器的开发者工具中的源码处看到源码,直接修改源码对代码进行调试。

标签:文件,知识,js,webpack,打包,loader,部分,css
From: https://www.cnblogs.com/laonianrenws/p/17596708.html

相关文章

  • 【C++】PACS基础知识学习
    1、PACSPACS是PictureArchivingandCommunicationSystems首字母缩写,全称为影像储存和传输系统,涉及放射医学、计算机技术、通讯技术及数字图像技术等,是医院信息系统的重要组成部分,是将数字医疗设备(如X线、CT、MRI、超声、病理等)所产生的医疗图像进行获取、储存、管理、诊断及......
  • 医疗知识图谱问答 ——Neo4j 基本操作
    前言说到问答机器人,就不得不说一下ChatGPT啦。一个预训练的大预言模型,只要是人类范畴内的知识,似乎他回答得都井井有条,从写文章到写代码,再到解决零散琐碎的问题,不光震撼到我们普通人,就百度和阿里也因此紧追其后分别推出了文心一言和通义千问。所以好像我们也可以通过GPT,并训练特......
  • DICOM 知识基础篇
    DICOM(DigitalImagingandCommunicationsinMedicine)即医学数字成像和通信,是医学图像和相关信息的国际标准(ISO12052)学习DICOM知识,建议参考DICOM3.0文档,重点关于DICOM数据篇、DICOM协议篇。1、DICOM3.0文档说明:自1993年DICOM3.0首次发布后,DICOM标准不断的发展,每年都会进行多次......
  • 以太网的基础知识
    以太网技术采用的“存取方法”是带冲突检测的载波监听多路访问协议(CarrierSenseMultipleAccesswithCollisionDection,简称CSMA/CD)技术。以太网执行的标准是IEEE802.3标准,所使用的介质访问协议CSMA/CD是让整个网络上的主机都以竞争的方式来抢夺传送数据的权力。工作过程为:首......
  • 医院影像PACS系统和放射影像科业务知识和实现
    对于医院的放射科来说,要实现其业务效率,增强患者的就医体验,提升医院的服务质量,那么一个良好的PACS系统能够高效实现这一目标。本文以放射科为例,对PACS系统和就医流程进行一个简单的介绍,希望对你有所帮助。一、什么是医院的PACS系统?对医院的放射科来说,要实现科室的信息化工作,提高患......
  • 【知识卡片 | 积累中】Lumerical _ INTERCONNECT
    案例1:https://optics.ansys.com/hc/en-us/articles/360042800433-Waveguide-crossing案例2:https://optics.ansys.com/hc/en-us/articles/360042800353-Y-branch......
  • PyTorch基础知识-新手笔记
    逐元素操作Tensor中也有逐元素操作,大部分的数学运算都属于逐元素操作,逐元素操作的输入与输出的形状相同。常见的逐元素操作可参考下表:abs/add:绝对值/加法addcdiv(t,t1,t2,value=1):t1与t2按元素除后,乘以value加t,即t+(t1/t2)*valueaddcmul(t,t1,t2,value=1):t1与t2按元素乘后,乘......
  • 【知识卡片 | 积累中】 Lumerical _ Examples
     ......
  • 企业网站设计建设包括哪些部分?
    企业网站设计建设包括以下几个部分:网站策划、网站设计、网站开发、网站测试和上线以及后期维护。网站策划:网站策划是企业网站设计建设的第一步,它包括确定网站的目标和定位、分析目标用户群体、制定网站的内容架构和功能模块、确定网站的设计风格和色彩搭配等。在网站策划阶段,需要......
  • 关于汽车违章抓拍的一些知识点
    电话搞明白了,现在电子抓拍分为2种,一种是固定抓拍可以上12123处理。一种是移动抓拍,这个无法上12123处理。移动抓拍的要到线下处理完以后,12123上就可以查到。然后可以参加学法减分处理。现在12123的学法减分,都是先处理违章交罚款扣分。然后再到12123去学法减分。只不过移动抓拍......