• webspack 系统学习笔记


    Webpack 系统学习笔记

    2-1.webpack 是什么?

      npx: 寻找可执行脚本,进行临时执行,如果没有找到包,就会临时下载,命令结束后,删除包,避免长期污染。

        npx webpack xx.js.   直接打包JS文件

     

    2-2.什么是打包工具:

    webpack是一个模块打包工具。

    一切皆模块,按需加载

    import header from ‘./header.js’. - - - ES moudule 引入

    require header from  ‘./header.js’ - - - common.js 引入

    CMS,AMD等查看

    https://www.webpackjs.com/api/module-methods/#es6-%E6%8E%A8%E8%8D%90-

     

    课后作业:学会如何读API。

    module-methods,

    module-variables

     

    2-3. 正确的安装方式

    提升webpack打包深度 - - 1.node.js 最新版本。2.webpack最新版本

     

    2-4 使用webpack 打包配置

    npx webpack 优先使用全局webpack,如果没有就往下找

    在script 中webpack,优先使用项目工程的中的webpack

     

    2-5 浅析 Webpack 打包输出内容

    webpack 打包出来之后,现实的内容意义

     

    3-1 loader

    webpack默认能打包JS文件,当遇到其他文件时,会去modules下寻找rules匹配规则,使用相对应的loader来打包。

    官方loader库:https://www.webpackjs.com/loaders/url-loader/

     

    3-2 url-loader

    url-loader中mimetype的设定是用来指定图片以base64格式打包进入到js后的格式。

     

    3-3 loader 打包静态样式

    loader执行顺序是从下往上执行,多个loader从数组最后开始执行,相关API以及配置信息在官网对应配置就好

    3-4 loader 打包静态样式

    引入css,并且有socped的概念,采用方式

    import style from “./index.scss”;

    img.classLists.add(style.avatar);

    资源管理。

    3-5 使用plugins 更健康

    htmlWebpackPlugins会在打包后自动生成一个html 文件,并且把打包生成的JS ,CSS 文件引入

     

    3-6 Entry Output 的基础配置

    eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。

    output 配置多,API,概念 和指导 都可以。

     

    3-7 SourceMap 的配置

    进行映射,方便错误查找,直接查找到源文件,如果不设置sourcemap,能看到就是打包后到文件,不能直接映射到源文件去

    devtool:

    inline-source-map : 打包都文件内部,以date形式嵌入

    inline-cheap-source-map 

    带了cheap的模式 在速度和效率上都会提升,

    1.只打包业务打包,不映射第三方插件。

    2.只提示行错误,不提示列错误

     

    3-8 使用 WebpackDevServer 提升开发效率

    devServer

    1.webpack-devServer.  最常用的方式

    2. —watch  最简单的,但是不全面

    3.node.js 基于express结合webpack 自己写devServer,

    nodeAPi ,https://www.webpackjs.com/api/node/#webpack-

    3-9 Hot Module Replacement 热模块更新(1

      new webpack.HotModuleReplacementPlugin()  配合

    hot:true,  hotOnly:true  做不刷新页面的热替换

    3-10 Hot Module Replacement 热模块更新(2

    module.hot这类可以直接在业务代码中写。对于文件的监听,CSS的监听是laoder中内置了,主要是一些偏的文件,比如,cexl

     

    3-12 使用 Babel 处理 ES6 语法(2

    babel-polypill 是全局注入方式,会造成变量的全局污染,所以在封装内组件库等,使用@babel/plugin-transform-runtime,以闭包形式注入。

     

    4-1 Tree Shaking 概念详解

    Tree Shaking只支持es modules 引入方式(静态引入)

    sideEffects:false。全部设置无副作用。

    sideEffects单独提出来,不做tree shaking 操作,vue项目中都有副作用,

    vue参考配置:

    "sideEffects":[

        "*.css",

        "*.vue",

        "*.less",

          "./src/plugins/element.js"

        ],

     

     

    不支持cmmonjs,AMD 的引入方式(动态引入)

    webpack —config webpack.dev.js.   启动使用webpack.dev.js 配置文件

    4-2 Develoment Production 模式的区分打包 

    提出comon.js  使用webpack-merge 去链接公用部分

    4-3 Webpack Code Splitting1

    解决:(都把代码打包到main.js)

    1.解决打包时间长,加载资源时间长

    2.第三方库资源和业务代码分开,不然每次修改业务代码,用户都需要全量下载

     

    分割方式:

    1.同步代码:webpack自带的配置

    splitChunks:{

    chunks:'all'

    }

    2.异步代码:引入文件,自动做代码分割

    4-5 SplitChunksPlugin 配置参数详解(1

    注意同步异步区别,同步还需要在cachgroups中处理

     

    默认配置:https://www.webpackjs.com/plugins/split-chunks-plugin/

    参数在webpack英文版去找,1中文版部分确实,对于API的说明

    4-7 Lazy Loading 懒加载,Chunk 是什么?

    懒加载:异步加载,通过异步import 的方式

    chunk:打包后得每一个JS代码块,都是一个chunk

    4-8 打包分析,Preloading, Prefetching

    shit+command+p  ->show coverage 等相关的内容

    高性能代码 -> 代码使用率,异步加载代码,非主进程立刻使用代码,均可以使用异步加载。

    Preloading:  同主进程一起加载

    Prefetching:网络空闲后,加载

    4-9 CSS 文件的代码分割

    chunkFilename ->非直接引用在index,html中的文件,打包后使用这个名字

    filename:  -> chunkfilename 相反,直接在indexhtml中引入的

    需要修改打包出来的vender的文件名,在

    cacheGroups:{

    filename:"static/js/vender.[hash].js"

    }修改,同时,需要设置 chunks: 'initial'

     

    mini-css-extract-plugin做CSS 代码分割

    4-10 Webpack 与浏览器缓存( Caching )

    content_hash 避免每次都从那取

     

    4-11 Shimming 的作用

    shinming:垫片,对于underfined,可以用webpack指定

    内置插件(示例):https://www.webpackjs.com/plugins/provide-plugin/

     

    5-1 Library 的打包

    主要是库打包教程,设置UMD格式

    支持AMD,CMD,import等引入方式,需要支持CSDN方式的话, 需要配置library参数

    https://www.webpackjs.com/configuration/output/#output-library

    防止重复包打进:https://www.webpackjs.com/configuration/externals/

     

    5-2 PWA 的打包配置缓存机制

    http-serve 插件可以直接启动本地服务,

    PWA ,服务器挂掉,能短时间访问,workboxPlugin

    5-4 使用 WebpackDevServer 实现请求转发

    der-serve 中配置proxy 中配置代理

    5-5 WebpackDevServer 解决单页面应用路由问题

    historyApiFailback:true  路由寻找的时候,会在本地找

    rewrites:[]. 路由没找到,重定义路由转发 

    参考:https://www.webpackjs.com/configuration/dev-server/#devserver-historyapifallback

    线上环境需要在ng里后端处理,这里处理的只是devserve中的配置

    5-6 EsLint Webpack 中的配置(1

    官网:https://eslint.bootcss.com/docs/user-guide/configuring

    VS -code 中安装es-lint

    在eslintrc 中配置rule 忽略规则

     

    5-8 webpack 性能优化(1)

    1.跟上速度的迭代,升级node,webpack 版本

    2.尽可能少的使用loader

    3尽可能少的pulgin

    4.resolve 的使用https://www.webpackjs.com/configuration/resolve/#resolve-extensions

    5.使用DLLplugin 提高打包速度,把部分第三方模块单独打包一次,处理映射关系

    6.three-loader,happywebpack,paralledl-webpack  多进程打包

    7.合理使用sourceMap

     

     

     

    7-3 Vue CLI 3 的配置方法及课程总结(1

    vue.config.js 需要修改在这个文件自建修改

    https://cli.vuejs.org/zh/guide/

  • 相关阅读:
    Go语言 0 前言
    SVM支持向量机的基本原理
    支持向量机通俗介绍
    线程句柄和线程ID的区别
    分布式事务一致性,事务补偿实战
    ResultSet is from UPDATE. No Data.
    linux 批量kill进程
    mysql数据表拷贝
    Maven assembly 打包
    JS 删除对象属性
  • 原文地址:https://www.cnblogs.com/leolovexx/p/12396685.html
Copyright © 2020-2023  润新知