webpack学习笔记

【学习笔记】Webpack5(Ⅰ) Webpack5(Ⅰ) 阅读详情

1 简介

在这里插入图片描述

环境:nodejs 10+、webpack 4.26+

webpack:前端资源构建工具,静态模块打包器,将前端所有资源作为模块化处理,分析依赖并打包成静态资源bundle。可以编译转换浏览器无法识别最新的语法:es6或者less等。webpack相当于一个工具集合,里面包含了很多小工具。

流程:从入口进入,分析入口文件所依赖的各种资源,并进行引入,形成chunk。对chunk中的各种资源进行分别解析编译形成bundle。

2 webpack五个核心概念

  • Entry:入口,webpack以哪个文件为起点分析和构建关系依赖图。
  • Output:打包好后的bundle输出的目的地,及命名规则
  • Loader:扩展,webpack可识别的文件类型(默认只识别js)
  • Plugins:插件,功能更强,相当于功能扩展
  • Mode:模式,开发和生产,选择不同的模式会自动启用不同的一些插件
    • 开发:process.env.NODE_ENV=development,启用:NamedChunksPlugin和NamedModulesPlugin
    • 生产:process.env.NODE_ENV=production,启用:FlagDependencyUsagePlugin, FlagIncludedChunksPlugin, ModuleConcatenationPlugin, NoEmitOnErrorsPlugin, OccurrenceOrderPlugin, SideEffectsFlagPlugin, UglifyJsPlugin

注意:loader和plugin区别
loader即为文件加载器,操作的是文件,将文件A通过loader转换成文件B,是一个单纯的文件转化过程。
plugin即为插件,是一个扩展器,丰富webpack本身,增强功能 ,针对的是在loader结束之后,webpack打包的整个过程,他并不直接操作文件,而是基于事件机制工作,监听webpack打包过程中的某些节点,执行广泛的任务。

3 尝试

全局安装:npm i webpack webpack-cli -g
本地安装:npm i webpack webpack-cli -D

3.1 打包js/json

前提准备:新建:build目录,src目录,src/index.js文件,并在本地npm安装好了webpack和webpack-cli

执行:webpack ./src/index.js -o ./build/built.js --mode=development (会将es6模块化编译成浏览器可识别模块化)

index.js代码:

import data from './data.json'

console.log(data)

function add(a,b){return a+b}
console.log(add(1,2))

data.json代码:

{
  "name":"pp",
  "age":12,
  "sex":"male"
}

执行:webpack ./src/index.js -o ./build/built.js --mode=production (表示生产环境,还会对代码做压缩)

3.2 打包css/less

index.js中引入css文件然后正常打包,打包报错,说明webpack默认不支持css/img,需要loader来翻译不识别的文件
loader使用需要【下载、配置】才能生效

webpack.config.js 配置文件,如果需要配置详细参数,建立配置文件来使用
特别注意:由于构建工具基于nodejs的,模块化采用的commonjs,所以配置文件导出使用:module.exports

const { resolve } = require('path')

module.exports = {
  entry: './src/index.js',
  output: {
    filename: 'built.js',
    // path必须要是全路径,所以使用nodejs中的path来获取
    path: resolve(__dirname,'build')
  },
  // loader有关配置
  module: {
    rules: [
      // 详细配置
      {
        // test表示匹配文件类型
        test: /\.css$/,
        // 使用哪些loader,执行顺序从后往前
        use: [
          'style-loader', // 将js中样式字符串插入到style标签中,放到head标签中生效
          'css-loader' // 将css文件编程commonjs模块加载到js中,内容是样式字符串
        ]
      }
    ]
  },
  // plugins插件有关配置
  plugins: [

  ],
  mode: 'development',
  // mode: 'production'
}

如果需要打包less:需要配置less的loader才行,如下

处理less文件,在css loader后添加一个loader即可,注意:每个loader只能处理一个文件类型

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

配置好后需要下载相关模块:npm i less less-loader -D

3.3 打包html

打包html使用的是插件,插件需要【下载、引入、配置】,才能生效

下载:html-webpack-plugin:npm i html-webpack-plugin -D
引入和配置:webpack.config.js

const { resolve } = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')

module.exports = {
  entry: './src/index.js',
  output: {
    filename: 'built.js',
    path: resolve(__dirname,'build')
  },
  // loader有关配置
  module: {
    rules: []
  },
  // plugins插件有关配置
  plugins: [
    new HtmlWebpackPlugin({  // 默认创建一个空的html文件,并引入打包输出的所有资源,如果需要模板则需要传入配置{template}
      template: './src/index.html'  // 以该文件为模板
    }) 
  ],
  mode: 'development',
  // mode: 'production'
}

注意:不要在html模板文件中再手动引入资源,会自动引入,只需在入口文件中引入资源即可

3.4 打包图片

引用图片分两种:

  • 样式文件中的url引入
  • html中的src引入

对于css样式文件中引入的,需要安装url-loader和file-loader,并配置webpack:

const { resolve } = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')

module.exports = {
  entry: './src/index.js',
  output: {
    filename: 'built.js',
    path: resolve(__dirname,'build')
  },
  // loader有关配置
  module: {
    rules: [
      {
        // test表示匹配文件类型
        test: /\.css$/,
        // 使用哪些loader,执行顺序从后往前
        use: [
          'style-loader', // 将js中样式字符串插入到style标签中,放到head标签中生效
          'css-loader' // 将css文件编程commonjs模块加载到js中,内容是样式字符串
        ]
      },
      {
        test: /\.(jpg|png|gif)$/, // 多个文件类型这样写
        loader: 'url-loader', // 一个loader这样写
        options: { // 该loader的额外配置
          limit: 8*1024 // 8kb,小于该值会被base64编码
        }
      }
    ]
  },
  // plugins插件有关配置
  plugins: [
    new HtmlWebpackPlugin({  // 默认创建一个空的html文件,并引入打包输出的所有资源,如果需要模板则需要传入配置{template}
      template: './src/index.html'  // 以该文件为模板
    }) 
  ],
  mode: 'development',
  // mode: 'production'
}

base64处理图片可以减少请求数量,减轻服务器压力,但是图片体积可能会更大,所以一般用来处理8kb以下的

对于html中src引入的:需要下载html-loader,该loader专门用于处理html中图片src引入,使其可以被url-loader解析

{
  test: /.\html$/,
  loader: 'html-loader'
}

此处会发现html中的图片引用错误,原因是:html-loader是采用commonjs模块化导出,而url-loader是使用es6模块化解析的
解决方法:关闭url-loader的es6模块化,使用默认的commonjs解析

{
   test: /\.(jpg|png|gif)$/, // 多个文件类型这样写
   loader: 'url-loader', // 一个loader这样写
   options: { // 该loader的额外配置
     limit: 8*1024, // 8kb,小于该值会被base64编码
     esModule: false // 关闭该loader的es6模块化,使用commonjs解析(因为html-loader解析后引入的图片方式采用commonjs)
   }
 }

给引入的图片进行重命名:name:'[hash:10].[ext],取图片hash值前10位

{
   test: /\.(jpg|png|gif)$/, // 多个文件类型这样写
   loader: 'url-loader', // 一个loader这样写
   options: { // 该loader的额外配置
     limit: 8*1024, // 8kb,小于该值会被base64编码
     esModule: false, // 关闭该loader的es6模块化,使用commonjs解析(因为html-loader解析后引入的图片方式采用commonjs)
     name:'[hash:10].[ext]'
   }
 }

3.5 打包其他资源

其他资源:除了css/js/html外的其他资源,可以使用exclude来匹配排除类型外的所有资源,只需要在loader中配置:

{
	 exclude: /\.(css|js|html)$/,
	  loader: 'file-loader',
	  options: {
	    name: '[hash:10].[ext]'
	  }
}

所有不包括css/js/html的资源都会被这个loader打包处理

3.6 devServer

配置开发服务器,可以自动编译打包和打开浏览器,刷新,看到更改后的效果

  // 会在内存中打包,不会有任何输出
  // 启动:webpack-dev-server
  devServer: {
    contentBase: resolve(__dirname,'build'), // 运行项目的目录,如果配置了html-webpack-plugin则该配置不起作用
    compress: true,  // 启动gzip压缩
    port: 3000 // 端口号
    open: true // 自动打开浏览器
  }

需要先安装:npm i -D webpack-dev-server
将指令配置到package.json中去:"start":"webpack-dev-server"然后使用npm run start来启动
注意:webpack5后启动命令改成了:webpack serve

一旦源代码被修改,并保存后,会自动进行编译,并展示到页面上

4 环境基本配置

4.1 开发环境

打包:js、json、html、css、less、img、file等资源

const {resolve} = require("path")
const HtmlWebpackPlugin = require('html-webpack-plugin')

module.exports = {
  entry: './src/index.js',
  output: {
    filename: 'js/built.js', // 入口文件存放地,该文件包括js和css的合并
    path: resolve(__dirname,'build') // 所有资源存放地
  },
  module: {
    rules: [
      {
        test: /\.less$/,
        use: ['style-loader','css-loader','less-loader']
      },
      {
        test: /\.css$/,
        use: ['style-loader','css-loader']
      },
      {
        test: /\.(jpg|png|jpeg|gif)$/,
        loader: 'url-loader',
        options: {
          limit: 8 * 1024,
          name: '[hash:10].[ext]',
          esModule: false,
          outputPath: 'imgs'
        }
      },
      {
        test: /.\html$/,
        loader: 'html-loader'
      },
      {
        exclude: /\.(html|js|css|less|jpg|png|jpeg|gif)$/,
        loader: 'file-loader',
        options: {
          name: '[hash:10].[ext]',
          outputPath: 'medias'
        }
      }
    ]
  },
  plugins: [
    new HtmlWebpackPlugin({
      template: './src/index.html'
    })
  ],
  // 会在内存中打包,不会有任何输出
  // 启动:webpack-dev-server
  devServer: {
    contentBase: resolve(__dirname,'build'), // 运行项目的目录
    compress: true,  // 启动gzip压缩
    port: 3000, // 端口号
    open: true // 自动打开浏览器
  },
  mode: 'development'
}

4.2 生产环境

为了让代码更快,性能更好,稳定性更高(开发环境不需要考虑这些)

  1. 开发环境中css和js是打包到一起的bundle,在加载过程中,先加载js然后再创建style标签加载css,这样会出现闪屏现象
  2. 代码需要统一压缩
  3. 样式的兼容

4.2.1 提取CSS到单独文件

需要安装插件:npm i -D mini-css-extract-plugin
步骤:注册插件 替换style-loader为MiniCssExtractPlugin.loader(sytle-loader为js中的样式字符串创建style标签并插入到html中,现在由MiniCssExtractPlugin.loader来提取js中的样式字符串到单独文件,并引入样式标签)

const {resolve} = require("path")
const MiniCssExtractPlugin = require('mini-css-extract-plugin')

module.exports = {
  entry: './src/index.js',
  output: {
    filename: 'js/built.js', // 入口文件存放地,该文件包括js和css的合并
    path: resolve(__dirname,'build') // 所有资源存放地
  },
  module: {
    rules: [
      ...
      {
        test: /\.css$/,
        use: [MiniCssExtractPlugin.loader,'css-loader']
      },
      ...
    ]
  },
  plugins: [
    ...
    new MiniCssExtractPlugin({
      filename: 'css/built.css'
    })
  ],
  ...
}

4.2.2 css兼容性处理

需要使用:postcss-loader和postcss-preset-env(用于精确到浏览器版本)
安装:npm i -D postcss-loader postcss-preset-env

const {
  resolve
} = require("path")
const HtmlWebpackPlugin = require('html-webpack-plugin')
const MiniCssExtractPlugin = require('mini-css-extract-plugin')

// 这样设置node环境变量,postcss会读取该环境变量来判断读取生产还是开发配置
// process.env.NODE_ENV = "development"
process.env.NODE_ENV = "production"

module.exports = {
  entry: './src/index.js',
  output: {
    filename: 'js/built.js', // 入口文件存放地,该文件包括js和css的合并
    path: resolve(__dirname, 'build') // 所有资源存放地
  },
  module: {
    rules: [{
        test: /\.less$/,
        use: [
          MiniCssExtractPlugin.loader,
          'css-loader', 
          {
            loader: 'postcss-loader',
            options: {
              postcssOptions: {
                ident: 'postcss',
                plugins: [
                  require('postcss-preset-env')()
                ]
              }
            }
          },
          'less-loader',
        ]
      },
      {
        test: /\.css$/,
        use: [MiniCssExtractPlugin.loader, 'css-loader'
        {
            loader: 'postcss-loader',
            options: {
              postcssOptions: {
                ident: 'postcss',
                plugins: [
                  require('postcss-preset-env')()
                ]
              }
            }
          }
        ]
      },
      
    ]
  },
  plugins: [
    new HtmlWebpackPlugin({
      template: './src/index.html'
    }),
    new MiniCssExtractPlugin({
      filename: 'css/built.css'
    })
  ],
}

特别注意:一、需要配置node环境变量:process.env.NODE_ENV = “production”;二、配置postcss-loader及其参数,这个loader需要先css-loader处理。三、在package.json中配置browserlist

在package.json中配置browserslist,来指定加载css兼容性样式

  "browserslist": {
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ],
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ]
  }

关于browserslist详细配置可以去github上查询,注意:默认情况插件执行的是生产环境配置,除非配置了Node环境变量(和webpack.config.js中的mode无关)

编译后的css代码加了兼容样式

#b {
  display: -webkit-flex;
  display: flex;
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
}

4.2.3 css压缩

需要用到插件:optimize-css-assets-webpack-plugin
安装:npm i -D optimize-css-assets-webpack-plugin
配置方法:引入插件,new插件即可。

const {resolve} = require("path")
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
const OptimizeCssAssetsWebpackPlugin = require('optimize-css-assets-webpack-plugin')

module.exports = {
  entry: './src/index.js',
  output: {
    filename: 'js/built.js', // 入口文件存放地,该文件包括js和css的合并
    path: resolve(__dirname,'build') // 所有资源存放地
  },
  module: {
    rules: [
      ...
      {
        test: /\.css$/,
        use: [MiniCssExtractPlugin.loader,'css-loader']
      },
      ...
    ]
  },
  plugins: [
    ...
    new MiniCssExtractPlugin({
      filename: 'css/built.css'
    }),
    new OptimizeCssAssetsWebpackPlugin()
  ],
  ...
}

注意:在postcss-loader中有个:'cssnano': {}的配置,也可以用来压缩css!示例:cssnano: ctx.env === 'production' ? {} : false

4.2.4 JS语法检查——eslint

eslint用于js语法检查,需要安装:eslint-loader和eslint
注意:由于需要限定只检查src下的源代码,不检查第三方库(使用exclude)

eslint检查规则需要在package.json中的eslintConfig属性设置,建议使用airbnb规则

eslint-config-airbnb-base:基本检查库,不包括react插件,该库依赖:eslint-plugin-import eslint
eslint-config-airbnb:包括react插件

步骤:(需要先安装:npm i -D eslint eslint-loader eslint-config-airbnb-base eslint-plugin-import)

  1. loader配置
      {
        test: /\.js$/,
        loader: 'eslint-loader',
        enforce: "pre", // 编译前检查
        exclude: /node_modules/, // 不检测的文件
        include: [path.resolve(__dirname, 'src')], // 指定检查的目录
        options: { // 这里的配置项参数将会被传递到 eslint 的 CLIEngine 
          fix: true // 自动修复错误
        }
      }
  1. package.json配置,这里使用airbnb语法规则
  "eslintConfig":{
    "extends":"airbnb-base"
  }

可以使用注释来取消检查:// eslint-disable-next-line取消下一行语法检查,/* eslint-disable */放在文件第一行表示该文件不检查

参考:https://blog.youkuaiyun.com/kai_vin/article/details/89026115

4.2.5 JS兼容性处理

JS兼容即有些浏览器不支持ES6语法,babel会将其转码成ES5,依赖:@babel/core,称为兼容处理。使用到的loader为:babel-loader,依据使用的预设环境可以转换不同的语法。

【基本兼容处理】:@babel/preset-env,
安装:npm i -D babel-loader @babel/core @babel/preset-env

      {
        test: /\.js$/,
        exclude: /node_modules/,
        loader: 'babel-loader',
        options: {
          presets: ['@babel/preset-env']
        }
      }

只能转换基本的如const、箭头函数等。不支持Promise等。

【暴力处理】全部js兼容处理:@babel/polyfill
安装:npm i -D @babel/polyfill
使用:在入口文件中引入即可:import '@babel/polyfill


@babel/polyfill目前已经替换成了:core-js/stable + regenerator-runtime/runtime,使用:

import "core-js/stable";
import "regenerator-runtime/runtime";

【按需加载兼容处理】使用core-js

 {
   test: /\.js$/,
   exclude: /node_modules/,
   loader: 'babel-loader',
   options: {
     presets: [
       '@babel/preset-env',
       {
         useBuiltIns: 'usage', // 开启按需加载
         corejs: {version: 3}, // 指定core-js版本
         targets: {chrome:'60',firefox:'60',ie:'9',safari:'10',edge:'17'} // 指定兼容性哪个版本以上
       }
     ]
   }
 }

注意:使用该方案则不能使用暴力处理方式

4.2.6 html和js压缩

js压缩:只需要将mode='production'开启即可(发挥作用的插件是:UglifyJsPlugin)
html压缩:同样,只需要开启生产模式即可,当然也可以在插件html-webpack-plugin中配置:

 new HtmlWebpackPlugin({
   template: './src/index.html',
   minify: {
     collapseWhitespace: true, // 移除空格
     removeComments: true // 移除注释
   }
 }),

4.2.7 生产环境终极配置

const { resolve } = require("path")
const HtmlWebpackPlugin = require('html-webpack-plugin')
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
const OptimizeCssAssetsWebpackPlugin = require('optimize-css-assets-webpack-plugin')

// 这样设置node环境变量,postcss会读取该环境变量来判断读取生产还是开发配置
// process.env.NODE_ENV = "development"
process.env.NODE_ENV = "production"

const commonCssLoader = [
  MiniCssExtractPlugin.loader,
  'css-loader', 
  {
    loader: 'postcss-loader',
    options: {
      postcssOptions: {
        ident: 'postcss',
        plugins: [
          require('postcss-preset-env')()
        ]
      }
    }
  }
]

module.exports = {
  entry: './src/index.js',
  output: {
    filename: 'js/built.js', // 入口文件存放地,该文件包括js和css的合并
    path: resolve(__dirname, 'build') // 所有资源存放地
  },
  module: {
    rules: [{
        test: /\.less$/,
        use: [
          ...commonCssLoader,
          'less-loader'
        ]
      },
      {
        test: /\.css$/,
        use: [
          ...commonCssLoader
        ]
      },
      {
        test: /\.(jpg|png|jpeg|gif)$/,
        loader: 'url-loader',
        options: {
          limit: 8 * 1024,
          name: '[hash:10].[ext]',
          esModule: false,
          outputPath: 'imgs'
        }
      },
      {
        test: /.\html$/,
        loader: 'html-loader'
      },
      {
        exclude: /\.(html|js|css|less|jpg|png|jpeg|gif)$/,
        loader: 'file-loader',
        options: {
          name: '[hash:10].[ext]',
          outputPath: 'medias'
        }
      },
      {
        test: /\.js$/,
        exclude: /node_modules/,
        loader: 'babel-loader',
        options: {
          presets: [
            '@babel/preset-env',
            {
              useBuiltIns: 'usage', // 开启按需加载
              corejs: {version: 3}, // 指定core-js版本
              targets: {chrome:'60',firefox:'60',ie:'9',safari:'10',edge:'17'} // 指定兼容性哪个版本以上
            }
          ]
        }
      },
      {
        test: /\.js$/,
        loader: 'eslint-loader',
        enforce: "pre", // 编译前检查,相同test中该属性为true的先执行
        exclude: /node_modules/, // 不检测的文件
        include: [path.resolve(__dirname, 'src')], // 指定检查的目录
        options: { // 这里的配置项参数将会被传递到 eslint 的 CLIEngine 
          fix: true
        }
      }
    ]
  },
  plugins: [
    new HtmlWebpackPlugin({
      template: './src/index.html',
      minify: {
        collapseWhitespace: true, // 移除空格
        removeComments: true // 移除注释
      }
    }),
    new MiniCssExtractPlugin({
      filename: 'css/built.css'
    }),
    new OptimizeCssAssetsWebpackPlugin()
  ],
  // 会在内存中打包,不会有任何输出
  // 启动:webpack-dev-server
  devServer: {
    contentBase: resolve(__dirname, 'build'), // 运行项目的目录
    compress: true, // 启动gzip压缩
    port: 3000, // 端口号
    open: true // 自动打开浏览器
  },
  mode: 'production'
}

package.json中:

{
...
 "scripts": {
    ...
    "build": "webpack",
    "start": "webpack serve"
  },
  ...
  "browserslist": {
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ],
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ]
  },
  "eslintConfig":{
    "extends":"airbnb-base"
  }
}

5 webpack优化

两种环境的优化

开发环境:1 优化打包构建速度 2 优化代码调试
生产环境:1 优化打包构建速度 2 优化代码运行性能

5.1 开发环境

问题1:修改任意模块,整个项目所有模块会重新加载
解决:HMR:热模块替换,一个模块变化只会打包该模块,不会打包所有
在devServer中添加:hot:true

  devServer: {
  contentBase: resolve(__dirname, 'build'), // 运行项目的目录
  compress: true, // 启动gzip压缩
  port: 3000, // 端口号
  open: true, // 自动打开浏览器
  hot: true // 热加载
},

对于样式修改,由于style-loader实现了HMR功能,所以可以实现热模块更新

对于JS文件,没有HMR功能
解决办法:添加HMR功能

// 在入口文件中,对于引入的其他模块进行监听是否更新
if(module.hot){
	module.hot.accept('./xxx.js',function(){回调函数}
}

注意:入口js文件不需要也不可以做HMR,因为他改了其他函数肯定会重新引入的

对于HTML文件,不能使用HMR功能(因为html只有一个文件),且开启后无法响应更新了
解决办法:在webpack.config.js中入口处加上html文件入口:entry: ['./src/index.js','./src/index.html'],

source-map:提供源代码和构建后代码的映射技术,方便查询错误原因和定位
配置:在webpack.config.js中添加:devtool: 'source-map'即可
注意:source-map有多种值:

[inline-|hidden-|eval-][nosources-][cheap-[module-]]source-map

其中:
source-map:外部 错误定位到 【源】 代码,精确到行和列
inline-source-map:内联 错误定位到 【源】 代码
hidden-source-map:外部 错误定位到 【编译后】 代码
eval-source-map:内联 错误定位到 【源】 代码
nosources-source-map:外部 错误定位到 【源】 代码,但是无法查看
cheap-source-map:外部 错误定位到 【源】 代码,之精确到行,不到列
cheap-module-source-map:外部 错误定位到 【源】 代码,精确度稍微好点。。。

内敛生成的映射在打包的js中,构建起来速度更快,外部则在js同级

开发推荐使用:eval-source-map
生产推荐使用:source-map

5.2 生产环境

MAX96712在车载摄像头系统中的带宽分配与传输能力计算解析 在计算摄像头带宽与传输接口的关系时,需要考虑视频流的像素分辨率、帧率、颜色深度等因素。以 MAX96712 这种 GMSL2 产品为例,它支持每个链路在正向方向以 3Gbps 或 6Gbps 的固定速率工作。 阅读详情

相关推荐

LMS Virtual.Lab二次开发:声学仿真结果导出方法(VBScript、Python)

Siemens LMS Virtual.Lab 提供一套集成软件平台用以模拟机械系统的品质属性,如结构完整性、振动噪声、耐久性、系统动力学特性、驾驶的平顺性及操纵的稳定性等。

爱看书的小沐 6021

Webpack 学习笔记

webpack是一个用于现代 JavaScript应用程序的静态模块打包工具。当webpack处理应用程序时,它会在内部从一个或多个入口点构建一个依赖图

yavlgloss的博客 1222

Zabbix华为交换机光衰告警

zabbix使用自动发现监控huawei网络设备光衰

qq_31651649的博客 4529

Webpack学习笔记

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mDTPuj5f-1689042707139)(C:\Users\mzhj\AppData\Roaming\Typora\typora-user-images\image-20230705221304210.png)]

qq_45707021的博客 377

点云数据生成DEM,并导出三维模型

点云数据生成DEM,并导出三维模型

qq_42540466的博客 2万+

21天学会PCIe专栏(4.3)--PCIe配置方法

通过本节的学习,你应该对PCIe配置方法有了更深入的了解。软件配置方法包括直接访问和间接访问,可以通过特定的I/O指令或系统调用进行配置。硬件配置方法包括通过BIOS/UEFI设置和跳线设置,可以根据需要修改PCIe设备的配置参数。

xiaoheshang_123的博客 722

Webpack4学习笔记整理

Webpack4个人学习笔记整理

小天才程序员的博客乐园 8865

【DaVinci Developer工具实战】03 -导入xml文件

本文档描述了 DaVinci Developer 导入数据的的具体功能 ,它适用于导入AUTOSAR SWC 模板【AUTOSAR XML 文件】 文件。

1991

webpack/ vite 学习笔记

webpack、vite学习笔记

qq_53442141的博客 1245

linux 内核OOM问题定位-SLAB_DEBUG

首先看slabinfo按的size排序查看 slub object,可以查看 space 总占用大小,及objects个数判断泄漏点 为kmalloc-128。那个泄露多看/sys/kernel/debug的slab/kmalloc*-的alloc-traces和free-traces。SLAB或者SLUB有一个用就可以,改menuconfig没有clean会覆盖之前的更改,现在看一下编译的过程。或者配置defconfig,配置完之后需要clean后再编译。1,配置menuconfig。

陌上花开缓缓归以的博客 899

SAP 联产品测试

最近领导一直要求研究一下SAP联产品的使用场景,之前只是自己摸索过一次,这个重新对联产品进行一个测试。 1、首先准备好物料主数据 注意主数据中需要勾选联产品标识。 设置好物料的分摊的百分比。 2、检查BOM 在BOM中也需要维护联产品的标识 只有当组件数量未负数时,才能勾选联产品的标识。如果组件数量正值,勾选联产品的标识时会报错。 3、我们创建生产订单 可以看到按正常的生产订单下达时,系统就报错了,问题点在于离散制造的生产订单基本是结算到物料的。但是联产品是按订单结算的, 所以需要对订单类型中的结算参

我小时候很黑的博客 2110

【前端学习笔记】Webpack

Webpack 是一个现代 JavaScript 应用程序的静态模块打包工具,它将 JavaScript、CSS、图片、字体等资源文件打包成一个或多个静态文件,以供浏览器使用。当 webpack 处理应用程序时,它会在内部从一个或多个入口点构建一个 依赖图(dependency graph),然后将项目中所需的每一个模块组合成一个或多个 bundles,它们均为静态资源。

qq_46056318的博客 1341

9.13华为OD机试真题 新系统 - 手机桌面整理 (Java/Py/C/C++/Js/Go)

华为OD机试真题 新系统【手机桌面整理】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题 【 手机桌面整理】多语言题解。

qq_45776114的博客 636

webpack 学习笔记总结(一)

webpack 学习笔记总结(一) Loader的作用 loader能够让webpack去处理非javascript文件 webpack本身只理解javascript Loader 模块匹配规则 // 关于模块配置 rules: [ // 模块规则(配置 loader、解析器等选项) { test: /\.jsx?$/, include: [ path.resolve(__dirname, "app") ], exclud

weixin_48386580的博客 186

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

webpack学习笔记整理(细)

webpack学习笔记整理 1 、webpack-dev-server基本使用 使用webpack-dev-server 这个工具,来实现自动打包编译的功能 运行 npm i webpack-dev-server -D 把工具安装到项目的安装依赖 安装完毕后,这个工具的用法与webpack一样 由于是本地安装,所以,无法把它当做脚本命令,在终端执行。 注意:webpack-dev-server这...

码出精彩 2761

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

webpack4 学习笔记和填坑记录

资料整理中!

wenjunbin的博客 173

webpack5学习笔记—基础篇

目录 1. webpack 1.1 Webpack是什么?有什么用? 1.2 webpack的几个概念 2. webpack的基础使用 3.2.1 安装 3.2.2 webpack配置文件 3.2.3 打包命令 3. 资源模块 resource inline source asset 3. loader 1. 什么是loader 2. 处理css文件 2.1 加载css和less 2.2 抽离和压缩css 3. 图片资源 4. 字体资源 5. 数据资源 1. .

weixin_44215068的博客 2334

webpack 学习笔记-1 demo

学习webpack,直接观看代码理解。将自己的理解过程记录下来,后续若有不同理解,再来修改。 安装 //全局安装 npm install -g webpack //安装到你的项目目录 npm install --save-dev webpack 正式使用Webpack前的准备 Webpack可以使用npm安装,新建一个空的文件夹(此处命名为webpack_sample),在终端中转到该...

weixin_42915204的博客 452
上一篇: JavaScript知识点02
下一篇: JavaScript高级
天落枫
博客等级 码龄10年 91粉丝 92原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值