zoukankan      html  css  js  c++  java
  • webpack 入门到 应用

    webpack本质上是一个 javascript 程序的静态模块打包器,

    webpack的意义

    一、入门

    1、新建一个文件夹(也可以理解为项目)webpack-demo,如何在文件夹下新建两个目录 dist (存放打包之后的文件资源)、src(打包前的业务逻辑代码);

    2、在src下新建一个 main.js(可以写一些逻辑代码),再新建一个index.html文件

    3、webpack初始化 ,把当前文件夹(项目)在终端打开,输入初始化命令 npm init -y ,初始化完成之后,webpack会自动给项目配置一个 package.json 文件

    4、按照webpack依赖包  npm add webpack webpack-cli -D;webpack-cli(webpack手脚架),-D(development 开发环境),整体意思就是 这个打包依赖只是在开发环境使用,正式环境不需要,

     依赖包安装完成之后,项目下会自动配置node_modules、package-lock.json 两个文件。

    5、配置打包命令;build命令打包 webpack.config.js 文件

    6、新建 webpack.config.js 配置文件,初始配置如下,配置参考官网 https://www.webpackjs.com/

     7、打包;基本配置基本完成,现在打一个简单包,终端输入 npm run build 命令,dist 文件下会生成 配置好的 bundle.js,bundle.js里就可以看到经过打包的内容了

     二、拓展应用

    1、多文件打包;SRC下有很多业务打包需要打包的时候,但是打包的入口文件就只有 main.js 。

      如SRC下还有一个自定义index.js文件需要一起打包

      index.js 

      

       main.js 需要通过node模块化规范 reqiure 引入index.js

      

    2、插件:先看官网文档

       2.1 配置 html-webpack-plugin 插件:

        ① 安装 npm add html-webpack-plugin -D(终端输入即可)

        ② 配置文件 webpack.config.js 中引入插件 const htmlWebpackPlugin = reqiure('html-webpack-plugin')

        ③ 配置 plugins 

        

         输入打包命令 npm run build 

        打包完成,你会发现在dist 文件下也会出现一个 index.html ,且内容也是一模一样,不同点就是 script 引入的脚本文件是自动配置的出口文件bundle.js

        

         dist/index.html

        

    3、loader 

      3.1  css-loader

      首先在SRC文件下新建CSS文件,再在 CSS 文件下 base.css

      

       base.css

      

       index.html (在这里不需要再用link引入css样式了)

      

       

      ① 安装 css-loader、style-loader ( npm add style-loader css-loader -D )

      ② main.js 引入 css 文件

      

       ③ 配置文件 webpack.config.js中配置

      

       打包之后刷新

      

       是通过style动态创建了一个样式,那么问题来了,如果有非常多的样式呢?这样做显然不是很合理,接下来就要用到css文件分离

    4、css文件分离 ( mini-css-extract-plugin )

      首先在css文件下新建一个CSS叫index.css,html 文件新增一个DIV 

      

       ① 安装插件  npm add mini-css-extract-plugin -D

       ② main.js 中引入 index.css (同上)

       ② 配置文件webpack.config.js配置 以及 引入插件

      

       打包运行结果:

     

    5、less文件处理 (和css大同小异)

      首先在SRC 下新建 less文件夹 再再less文件夹下新建 index.less 文件

      

      ① 再main.js中 引入 less文件

      

       ② 安装 less 依赖  npm add less less-loader -D

       ③ webpack.config.js文件中配置 less

       

       打包运行结果:

      

    6、url-loader 图片处理配置

      首先SRC下新建img文件夹,在img文件夹下放两张图片,写好相应的HTML,写好相应的样式

         

       6.1 webpack图片加载

       ① 安装url-loader插件  npm add url-loader file-loader (注意:因为URL也是属于文件的一个类别,所以在这里也要把文件处理插件 file-loader 也安装上)

       ② webpack.config.js 配置

       

      注意:如果是图片大于8K,打包之后dist目录下会生成图片文件,接下来会做讲解方案

        

      6.2 webpack图片输出

       如果很多图片都超过8K,那么打包之后dist目录下会生成很多图片文件,这样显然不是很合理

      下面做个配置就可以把打包之后的所有图片放到一个目录下管理

      

      打包之后目录:

      

        上面例子其实可以举一反三,基本原理都是差不多

      例:现在要把打包之后的JS文件放到一个统一的JS文件夹下管理,该怎么配?

       

    7、dist 目录清除插件 clean-webpack-plugin (每次打包都会清除本次打包之前的dist目录,保留本次打包的最新dist)

      ① 安装依赖包 npm add clean-webpack-plugin -D 

      ② webpack.config.js 配置

      

       

     8、bable (ES6及更高版本语法兼容,转换成浏览器可识别的JS语法)

      ① 安装依赖  

      npm install babel-loader@8.0.0-beta.0 @babel/core @babel/preset-env 

       ② webpack.config.js 配置

      

      打包结果:

        

     9、开发服务器配置(热更新)

       ① 安装依赖 

          npm install webpack-dev-server -D

             ② 配置 package.jaon 里的打包命令行 

        

       ③ webpack.config.js 配置文件

      

       执行 npm run dev ,页面刷新

       

    10、生产环境、开发环境分离配置

      因之前的所有的配置都是在 webpack.config.js 中进行,不是特别的灵活方便,所以进行环境分离很有必要,

      开发环境:配置开发环境所需要的配置

      生产环境:配置生产环境所需配置

      

      10.1 安装 webpack-merge 依赖 

        npm install webpack-mergr -D

      10.2 webpack.config.js 配置文件拆分

      

      公共文件 webpack,base.js 配置基本除了mode 和 server 以外,都需要配置

      

      webpack.dev.js 配置

      

       webpack.pro.js 配置

      

       package.json (命令行打包路径发生了改变,所以路径也要更改)

      

      

      

      

      

  • 相关阅读:
    linux高可用集群(HA)原理详解
    【C#/WPF】修改图像的DPI、Resolution
    【C#】图像的变形/变换/扭曲。用Emgu或YLScsFreeTransform(FreeImageTransformation)或MagickImage
    【C#】遍历List列表的同时,移除访问到的元素
    【WPF】动态设置Binding的ConverterParameter转换器参数
    【SVN/Visual Studio】清除/更换AnkhSVN的用户登录信息
    【C#】允许泛型方法<T>返回空值Null
    【C#】时间日期格式转换:long和DateTime相互转换
    【C#/WPF】ListView的MVVM例子,及禁止拖动ListView的头部Header
    【C#/WPF】保存BitmapImage数据到文件中
  • 原文地址:https://www.cnblogs.com/xxflz/p/14061706.html
Copyright © 2011-2022 走看看