webpack 常用配置

2023-11-17

环境搭建

既然是前端项目,那么就npm就必不可少 运行 npm install webpack-cli -g 来全局安装脚手架 随后使用 npm install webpack-cli -D 安装到工程下

在工程目录下创建 webpack.config.js (文件名固定) 来作为webpack的配置文件,所有有关webpack的配置都写在此文件中,其中的内容通过es5语法暴露出去

五个核心配置

webpack 五个核心配置是

  1. entry 入口文件

  2. output 输出

  3. module loader配置

  4. plugins 插件

  5. mode 打包模式 其结构如下

 module.exports = {
     //入口起点
     entry:
 ​
     //输出
     output:{
         
     },
     module:{
 ​
     },
     plugins:[
 ​
     ],//插件配置
     mode:'development',
     //mode:'production'
 }

下面详细聊聊这五个配置

entry 入口文件,指示webpack 从哪个文件开始打包,这个入口文件所引用导入的文件都会参与打包

output 输出文件,指示webpack将打包好的文件输出到哪里 其中需要在顶部导入js的内置模块path

webpack 默认只能打包js/json资源,所以当我们想要打包其他资源是,则需要借助loader

module module主要作用是配置loader,而每一个loader都作为一个对象,存在rules数组中。 loader是webpack最重要的一环,只有配置了各种loader webpack才能打包各种各样的资源,其中各种loader通过npm 下载即可

  1. 打包资源

    1. 打包css资源(需要下载css-loader,style-loader)

       {
       //正则表达式 表示匹配哪些文件
       test:/\.css$/,
       ​
           use:[//use为一个数组,将loader按从下至上顺序执行
       ​
               //创建一个style标签 将js中的样式添加到页面中生效
               'style-loader',
       ​
               //将css文件 以字符串的形式变成一个commjs模块加载到js
               'css-loader',
           ]
       }

    2. 打包less资源(需要下载style-loader,css-loader,less-loader)

       {
           test:/\.less$/,//每一种匹配规则 只适用与一种文件
       ​
           use:[
               //创建style标签 将js中的样式添加到页面中
               'style-loader',
       ​
               //将css文件 编译成commjs模块加载到js
               'css-loader',
       ​
               //将less文件编译成css文件
               'less-loader'
           ]
       },

    3. 将css单独打包成一个文件(单独下载mini-css-extract-plugin)

      首先new一个对象  

      const MiniCssExtracetPlugin = requir('mini-css-extract-plugin')

    4. 调用插件对象

      new MiniCssExtracetPlugin({
           filename:'css/built.css'//对输出文件进行重命名
       })

      修改loader信息

       {
           test:/\.css/,
           use:[
               //'style-loader',//创建style标签,将样式放上去
               MiniCssExtracetPlugin.loader,//取代style-loader 提取js中的css为单独文件
               'css-loader'//将css文件整合到js中
           ]
       }

  2. 打包img资源(1)(需要下载url-loader,file-loader) 由于图片数量在实际开发中会很多,在打包过程中就会拖慢打包速度,所以我们需要使用 options来修改loader的一些参数 

     //当只使用了一个loader时,则可以不使用use数组
         loader:'url-loader',
         options:{
             limit:8 * 1024,
             //图片大小小于8kb(项目中较小的图片) 就会被base64编码方式处理
             //优点:减少请求数量 (减轻服务器压力)
             //缺点:图片体积会更大(请求速度更慢)
     ​
         name: '[hash:10].[ext]'
             //文件名取哈希值前十位加上文件原拓展名
         }
     },
     
  3. 打包img资源(2)(需要下载html-loader) 上面那种处理方式只能处理 html引用的css文件中引入的图片,不能处理html页面中引入的图片。解决方法是使用html-loader 但是 url-loader是使用es6model去解析,而html-loader是使用commjs去解析, 为了避免冲突我们需要关闭url-loader的es6Module 改用commjs解析(在option中加入esModule:false)

    {
        //使用html-loader
        test:/\.html$/,
        loader:'html-loader'
    }
        options:{
                limit:8 * 1024,
                name: '[hash:10].[ext]'
    
            //在url-loader中关闭es6Module
                esModule:false
        }

  4. 打包html资源(需要下载适用于html的plugin插件,html-webpack-plugin -D

    在顶部引入 const HtmlWbpackPlugin = requi('html-webpack-plugin');

    随后在plugins列表中new一个对象,其中的template属性,将作为结构模板。

       
      plugins:[
             new HtmlWbpackPlugin({
                 template:'./src/index.html'
             })
             
         ],

  5. 兼容性处理

    1. 兼容css(需要下载postcss-loader,postcss-preset-env) 随着css版本的更新迭代,相对于应的兼容性问题也层出不穷,webpack也提供了css兼容性的解决方案

     修改loader
 {
     test:/\.css/,
     use:[
         MiniCssExtracetPlugin.loader,
         'css-loader',
 ​
         //第一种 使用loader的默认配置 修改loader配置
         //帮postcss找到package.json中browserslist的配置,通过指定配置加载兼容性样式
         {
             loader:'postcss-loader',
             options:{
                 ident:'postcss',
                 plugins:()=>{
                     require('postcss-preset-env')
                 }
             }
         }
     ]
 }

在package.json 中添加支持的browserlist

 "browserslist": {
     "development": [
         "last 1 chrome version",
         "last 1 firefox version",
         "last 1 safari version"
         //兼容最近一个版本的谷歌火狐索菲亚浏览器
     ],
     "production": [
         ">0.2%",//兼容99.8%的浏览器
         "not dead",//不兼容已经死掉的浏览器
         "not op_mini all"//不兼容op_mini
     ]
 },

postcss 默认使用生产环境 如需使用开发环境则需要手动配置nodejs 中的临时环境变量,在webpack.config.js 顶部添加 process.env.NODE_ENV = 'development'

如抛错 ValidationError: Invalid options object. PostCSS Loader has been initialized using an options object that does not match the API schema. 则说明 此插件版本不支持在webpack.config.js中进行配合 需要在项目根目录下 创建 postcss.config.js 添加如下代码

module.exports = { plugins:[ require('postcss-preset-env')() ] }

然后在webpack.config.js 中删除post-loader的额外配置

{
  loader:'postcss-loader',
  //options:{
  //    ident:'postcss',
  //    plugins:()=>{
  //        require//('postcss-preset-env')
  //    }
  //} 
}

  1. 兼容js(1)(需要下载babel-loader,@babel/core,@babel/preset-env)

 {
     test: /\.js$/,
     exclude: /node_modules/,
     loader: 'babel-loader',
     options: {
         // 预设:指示babel 做怎样的兼容处理
         presets: [
             [
                 '@babel/preset-env',
                 {
                     //指定兼容性做到哪个版本的浏览器
                     targets: {
                         chrome: '60',
                         firefox: '50',
                         ie: '9',
                         safari: '10',
                         edge: '17'
                     }
                 }
             ]
         ]
     }
 }

这种方法只能转换基本语法,promise等不能转换

如需要兼容所有js(需要下载@babel/polyfill),在入口文件中引入 import '@babel/polyfill',这种方法会将所有js兼容性都包括,所以打包后会非常大

  1. 压缩处理

  2. 压缩js html 在修改mode属性为 production生成模式

    删除html中无用的内容

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

  3. 压缩css(需要下载optimize-css-assets-webpack-plugin插件),并在插件列表中使用

     plugins:[
         new OptimizeCssAssetsWebpackPlugin()
     ],

性能调优

HMR

HMR:hot module replacement 热模块替换 当某一个模块发生变化时 只会重新加载变化的模块 其他模块不会被加载

在webpack.config.js 结尾处添加

 devServer:{
     contentBase:resolve(__dirname,'build'),
     compress:true,
     port:3000,
     open:true,
     hot: true
 }

js默认不能使用hmr,如需要,在入口文件添加监听即可

 if(module.hot){
     module.hot.accept('./print.js',()=>{
         dosomething()
         //监听print.js 文件,如果发生变化,会执行回调函数
     })
 }

html默认不能使用hmr 而且会导致html文件不能热更新 在入口文件 加上html文件即可(通常不需要hmr功能)

source-map映射

在源代码和构建后代码之间形成映射,当构建后代码出错时,可以映射到源代码 在webpack.config.js 末端添加devtool属性即可属性值及功能如下

 开发环境下使用:eval-source-map(调试好) || eval-cheap-module-source-map(速度快)
 生成环境下使用:source-map(调试好) || cheap-module-source-map(速度好) || 
 nosources-source-map(隐藏全部代码)||hidden-source-map(隐藏源代码)

oneOfLoader

当使用oneOf后 当文件命中loader就会停止 不会接着继续判断 提高效率 将所有loader对象放入oneOf数组即可

 module: {
         rules: [
             {
                 oneOf: [
                     {},
                     {},
                     {}
                 ]
             }
         ]
     },

treeShaking

去除无用代码 减少打包体积 前提:es6module productionEnv 问题:会把一些文件干掉 如css babel(直接引用,没有使用)

在packge.json 中 添加配置sideEffects 以排除相应文件

 "sideEffects": [
     "*.css",
     "*.less"
 ]

codeSplit

将打包后的文件拆分成多个文件 可以实现并行加载/按需加载

  1. 多个入口 多个出口 每一个出口文件都对应一个入口文件

 entry:{
     main:'./js/index.js',
     test:'./js/test.js'
 },
 ​
 output:{
     //    生成的构建后文件将根据入口文件进行命名
     filename:'js/[name].js',
     path:resolve(__dirname,'build')
 },
  1. 添加 属性 将node_modules 中的文件 单独打包成一个chunk,如果是多入口 会将里面公用的modules 单独打包,在配置文件中添加配置

 optimization:{
 splitChunks:{
     chunks:'all'
 }
 },

lazyLoading

只有当需要模块的时候 才去加载,加载完成之后 再次调用会使用缓存

pwa

渐进式网络开发应用程序(离线访问) (需要下载 workbox-webpack-plugin 并导入其GenerateSW方法)

在配置文件plugins中使用插件

 new GenerateSW({
     clientsClaim:true,
     skipWaiting:true
 })

随后在入口文件中 注册service-worker

 //注册serciceworker
 if('serviceWorker' in navigator){
     window.addEventListener('load',()=>{
         navigator.serviceWorker.register('/service-worker.js')
         .then(()=>{
             console.log('serviceworkder 注册成功');
         })
         .catch(()=>{
             console.log('serviceworkder 注册成功');
         })
     })
 }

externals

忽略打包 如果有包通过标签引入了 可以设置不被打包 在配置文件中添加

 //忽略包名 不被打包
     externals:{
         jquery:'jQuery'
     }

完整通用版本

生产版

const { resolve } = require('path');
 const MiniCssExtractPlugin = require('mini-css-extract-plugin');
 const OptimizeCssAssetsWebpackPlugin = require('optimize-css-assets-webpack-plugin');
 const HtmlWebpackPlugin = require('html-webpack-plugin');
 ​
 // 定义nodejs环境变量:决定使用browserslist的哪个环境
 process.env.NODE_ENV = 'production';
 ​
 // 复用loader
 const commonCssLoader = [
   MiniCssExtractPlugin.loader,
   'css-loader',
   {
     // 还需要在package.json中定义browserslist
     loader: 'postcss-loader',
     options: {
       ident: 'postcss',
       plugins: () => [require('postcss-preset-env')()]
     }
   }
 ];
 ​
 module.exports = {
   entry: './src/js/index.js',
   output: {
     filename: 'js/built.js',
     path: resolve(__dirname, 'build')
   },
   module: {
     rules: [
       {
         test: /\.css$/,
         use: [...commonCssLoader]
       },
       {
         test: /\.less$/,
         use: [...commonCssLoader, 'less-loader']
       },
       /*
         正常来讲,一个文件只能被一个loader处理。
         当一个文件要被多个loader处理,那么一定要指定loader执行的先后顺序:
           先执行eslint 在执行babel
       */
       {
         // 在package.json中eslintConfig --> airbnb
         test: /\.js$/,
         exclude: /node_modules/,
         // 优先执行
         enforce: 'pre',
         loader: 'eslint-loader',
         options: {
           fix: true
         }
       },
       {
         test: /\.js$/,
         exclude: /node_modules/,
         loader: 'babel-loader',
         options: {
           presets: [
             [
               '@babel/preset-env',
               {
                 useBuiltIns: 'usage',
                 corejs: {version: 3},
                 targets: {
                   chrome: '60',
                   firefox: '50'
                 }
               }
             ]
           ]
         }
       },
       {
         test: /\.(jpg|png|gif)/,
         loader: 'url-loader',
         options: {
           limit: 8 * 1024,
           name: '[hash:10].[ext]',
           outputPath: 'imgs',
           esModule: false
         }
       },
       {
         test: /\.html$/,
         loader: 'html-loader'
       },
       {
         exclude: /\.(js|css|less|html|jpg|png|gif)/,
         loader: 'file-loader',
         options: {
           outputPath: 'media'
         }
       }
     ]
   },
   plugins: [
     new MiniCssExtractPlugin({
       filename: 'css/built.css'
     }),
     new OptimizeCssAssetsWebpackPlugin(),
     new HtmlWebpackPlugin({
       template: './src/index.html',
       minify: {
         collapseWhitespace: true,
         removeComments: true
       }
     })
   ],
   mode: 'production'
 };

开发版

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

module.exports = {
  entry: './src/js/index.js',
  output: {
    filename: 'js/built.js',
    path: resolve(__dirname, 'build')
  },
  module: {
    rules: [
      // loader的配置
      {
        // 处理less资源
        test: /\.less$/,
        use: ['style-loader', 'css-loader', 'less-loader']
      },
      {
        // 处理css资源
        test: /\.css$/,
        use: ['style-loader', 'css-loader']
      },
      {
        // 处理图片资源
        test: /\.(jpg|png|gif)$/,
        loader: 'url-loader',
        options: {
          limit: 8 * 1024,
          name: '[hash:10].[ext]',
          // 关闭es6模块化
          esModule: false,
          outputPath: 'imgs'
        }
      },
      {
        // 处理html中img资源
        test: /\.html$/,
        loader: 'html-loader'
      },
      {
        // 处理其他资源
        exclude: /\.(html|js|css|less|jpg|png|gif)/,
        loader: 'file-loader',
        options: {
          name: '[hash:10].[ext]',
          outputPath: 'media'
        }
      }
    ]
  },
  plugins: [
    // plugins的配置
    new HtmlWebpackPlugin({
      template: './src/index.html'
    })
  ],
  mode: 'development',
  devServer: {
    contentBase: resolve(__dirname, 'build'),
    compress: true,
    port: 3000,
    open: true
  }
};

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

webpack 常用配置 的相关文章

  • 如何将vue文件样式提取到一个单独的style.css文件中

    我正在使用 vue loader 默认情况下 对于每个 vue 文件 您的视图中都有一个样式标签 这不是一件好事 根据 vue loader 文档我可以做到这一点 https vue loader vuejs org en configur
  • 解决方案:动态加载独立编译的 Webpack 2 包 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想分享如何捆绑一个充当插件主机以及它如何加载已安装的插件动态地 应用程序和插件都与 Webpack 捆绑在一起 应用程序和插件被编译和分
  • 如何避免在 webpack 生产构建中重复模块“bn.js”?

    我的应用程序使用了 webpack 4 不知何故 bn js包在生产构建中占用了大量资源 从图中可以看出 它占用了594 22KB 数据 有没有办法让1个文件bn js对于所有依赖于的包bn js 发生这种情况可能是因为您的依赖项都需要不同
  • vuejs 延迟加载组件,无需路由器

    vue 中的延迟加载组件使用 webpack 并不困难 https alligator io vuejs lazy loading vue cli 3 webpack https alligator io vuejs lazy loadin
  • 让Webpack不捆绑文件

    所以现在我正在使用一个原型 我们使用 webpack 用于构建 tsx 文件和复制 html 文件 和 webpack dev server 之间的组合来提供开发服务 正如您可以假设的那样 我们也使用 React 和 ReactDOM 作为
  • ./types 的大小写与底层文件系统不匹配

    所以我从 eslint 收到了一些奇怪的警告 types 是流类型文件 我认为 eslint 将 checkbox 读取为小写 而实际上它是 Checkbox 大写 C I try git mv casesensitive tmp git
  • 将 sass 变量导入 gatsby 组件中引用的第二个 Sass 文件

    我正在使用 Gatsby 构建一个静态站点项目 我已经成功安装了 gatsby sass 插件并让 sass 正常工作 但是 我无法将自定义 sass 变量文件正确导入到其他组件 sass 文件中 下面是我的文件夹结构 src compon
  • 如何使用 Webpack 缩小 ES6 代码?

    我正在使用 webpack 并想要部署我的网站 如果我缩小并捆绑 JavaScript 代码 则会出现以下错误 解析错误 意外标记 名称 Button 这是我未捆绑的代码 use strict export class Button lt
  • React JS 服务器端问题 - 找不到窗口

    你好 我正在尝试在我的reactJS项目中使用react rte 我有服务器端渲染 每次我想使用这个包时 我都会得到 return msie 6 9 b test window navigator userAgent toLowerCase
  • 在旧浏览器上使用 Fetch 的 ReactJS

    我正在使用 Webpack 和 Babel 实现 React JS 但是 我在让 Fetch 与 IE 11 配合使用时遇到问题 我的 babelrc 文件中有以下内容 presets env stage 0 react 以及我的 webp
  • TypeScript 编译速度极慢 > 12 秒

    只是把它放在那里看看其他人是否也遇到这个问题 我已经使用 webpack 作为我的构建工具 使用 typescript 构建了一个 Angular 2 应用程序 一切都运行良好 但是我注意到 typescript 编译超级超级慢 我现在只有
  • 没有使用 Angular 2 和 Http 服务的 XHRBackend 提供程序

    我正在构建一个基于 angular2 生成 angularcli webpack scss 和面向模块的项目 对于 http 请求 我决定创建一个由身份验证服务使用的服务 全部在 CoreModule 中引用 import NgModule
  • 将 monaco 编辑器集成到 ember 辛烷中

    我尝试整合摩纳哥代码 https github com Microsoft monaco editor编辑到我的 ember 辛烷应用程序中 目前我正在使用 ESM 导入样式并确认手册 我安装了 webpack 加载器插件并将其集成到我的
  • 如何使用 Webpack 将我的 React 网站打包为“生产”?

    我设法使用这个反应热样板 https github com gaearon react hot boilerplate配置脚本来创建和测试一个简单的 React Flux Web 应用程序 现在我有了一个跑步时喜欢的网站npm start
  • 将 React 构建输出合并到单个 js 文件中

    这类似于这个问题 https stackoverflow com questions 49123097 generate single physical javascript file using create react app然而 这两
  • 文件操作耗时较长,收到“正在运行[文件、保存、删除创建参与者”消息

    使用 JavaScript React 和 Node 时 会发生在 VSCode 版本 1 52 1 中 我已经在 VSCode 中从事 React 项目几个月了 在那两个月的某个时刻 我开始注意到 VSCode 处理文件操作的速度显着下降
  • 压缩 webpack 插件

    我正在尝试弄清楚如何正确使用webpack html 插件与压缩插件 后者的文档有点匮乏 我的 webpack 配置声明 output filename js name hash js 最后运行压缩插件 new CompressionPlu
  • 如何让 webpack 和 iis express 协同工作?

    I have Angular 2 和 Webpack 2 入门 https github com qdouble angular webpack2 starter它通过 webpack dev server 在节点上运行 我如何使用 web
  • 如何减少 WEBPACK + VUEJS 中的包大小

    我遵循了很多有关如何减小捆绑包大小的教程 但没有任何内容对捆绑包大小产生任何影响 我不知道为什么 每次当我向 webpack 添加一些新代码时 我的包大小都保持与以前相同 我的应用程序是使用 vue cli 3 pwa 插件 webpack
  • workbox webpack 插件从预缓存清单中排除文件夹

    我正在将 workbox webpack 插件与 vue cli 3 一起使用 并且我想将文件夹中的文件排除在外 以免添加到预缓存清单中 请参阅下面我当前的文件结构 src 资产 CSS 壳文件1 svg文件2 svg文件3 svg svg

随机推荐

  • TCP的拥塞控制算法:慢启动、拥塞避免、快重传、快恢复

    TCP的拥塞控制 一 前言 什么是拥塞 什么是拥塞控制 拥塞 随着网络中的主机增加其发送速率并使网络变得十分拥挤 此时会经常发生丢包现象 导致网络的传输效率急剧降低 分组的超时重传通常被作为网络拥塞的标志 如果不对网络拥塞进行控制 整个网络
  • 评测报告的结论如何写?

    背景 最近组内同学开始编写评测报告 报告中的结论中存在以下几种情况 1 结论是一大段文字 像散文一样 2 评测数据结果中存在多个数据维度 将所有的数据结果都罗列到结论中 主要信息不突出 3 只是将评测数据罗列到结论中 没有根据数据推理出结论
  • 局部变量与成员变量的·区别!

    局部变量与成员变量的不同 1 定义的位置不同 重要 局部变量 在方法的内部 成员变量 在方法外部 直接写在类当中 2 作用范围不一样 局部变量 只有在方法体内才有效 出了方法就不能在用了 成员变量 整个类都可以用 3 默认还是不一样的 局部
  • 区块链底层平台FISCO BCOS的证书机制

    FISCO BCOS是完全开源的联盟区块链底层技术平台 由金融区块链合作联盟 深圳 简称金链盟 成立开源工作组通力打造 开源工作组成员包括博彦科技 华为 深证通 神州数码 四方精创 腾讯 微众银行 亦笔科技和越秀金科等金链盟成员机构 代码仓
  • LLaMA, ChatGLM, BLOOM的参数高效微调实践

    作者 回旋托马斯x 腾讯NLP算法工程师 项目地址 https zhuanlan zhihu com p 635710004 1 开源基座模型对比 大语言模型的训练分为两个阶段 1 在海量文本语料上的无监督预训练 学习通用的语义表示和世界知
  • JDBC讲解

    SUN公司于1996年提供了一套访问数据库的标准Java类库 即JDBC 一 什么是JDBC JDBC的全称是Java数据库连接 Java Database Connectivity 它是一套用于执行SQL语句的Java API 应用程序可
  • Rider Solution

    新建空的solution Add gt Existing Project gt 选择项目xx csproj导入 选某个项目 dotnet build 然后 Unload 再load加载完成 如果出现引包冲突 直接注释那句就好了 如果建了一个
  • 一文看懂怎么用Python做数据分析

    常遇到两类朋友 一类是会爬虫但不知道如何进一步做数据分析的 一类是平常用 Excel 做分析但不太会用 Python 分析的 如果和你很像 那下面这篇系统长文会很适合你 建议先收藏 Excel 是数据分析中最常用的工具 本文通过 Pytho
  • Selenium成长之路-25 日历控件的处理

    今天来分享一下日历控件的处理方式 以下用12306来举例子 使用firbug查看 12306 网站 查看js属性是 readonly 没错 就是这个属性 来控制日历控件 我们就要对它进行一些处理 1 去掉 readonly 属性 直接去掉
  • MOS管使用的条件

  • delphi JSONObject 助手 uSZHN_JSON,SuperObject语法

    Helper实现的类似SuperObject的写法 使用这个方法 需要引入单元uSZHN JSON pas 访问密码 168168 procedure TForm1 Button1Click Sender TObject var jo TJ
  • Hypervisor介绍及在智能驾驶的应用

    转自Hypervisor 智能座舱和智能驾驶融合的关键技术 腾讯新闻
  • 2023年计算机专业毕业设计选题有哪些?(附源码)

    计算机毕业设计这个选题的话其实有很多的 就看你自己能接受怎么样的 比如可以做网站类 系统类 小程序类 安卓app 大数据类等等 这个也要看你个人能力和技术问题 如果技术小白或者有一点点基础的话建议选择网站类和系统类的 如果有扎实的基础技能可
  • 【编程笔试】美团2021校招笔试-通用编程题第10场(附思路及C++代码)

    导览 练习地址 淘汰分数 正则序列 公司食堂 最优二叉树II 练习地址 点此前往练习 淘汰分数 某比赛已经进入了淘汰赛阶段 已知共有n名选手参与了此阶段比赛 他们的得分分别是a 1 a 2 a n 小美作为比赛的裁判希望设定一个分数线m 使
  • 过压保护芯片,高输入电压(OVP)

    PW2606是一种前端过电压和过电流保护装置 它实现了广泛的输入电压范围从2 5V到40V 过电压阈值可在外部编程或设置为内部默认设置 集成功率路径nFET开关的超低电阻确保了更好的性能电池充电系统应用的性能 它可以提供高达2A的电流 以满
  • python random.randint(0、2)_如何使用python random模块中的randint()函数?

    python中的random模块用于生成随机数 而要生成随机整数则需要用到 random模块里的randint 函数 randint 函数随机产生括号里两个参数之间的整数 且包括这两个参数 划定随机生成整数的范围 最小最大值 1 rando
  • ESP8266使用AT指令连接MQTT服务器

    注 不同的AT固件在使用时存在差异 此处使用的是安信可官方提供的MQTT透传AT固件 固件号 1471 本文为学习记录 仅作参考 如有不对之处 请留言 附 固件地址 AT固件汇总 安信可科技 ai thinker com https doc
  • JSON.parse()方法

    一 JSON的解析方法有两种 eval 和JSON parse var jsonstr str1 Hello str2 world var evalJson eval jsonstr var jsonParseJson JSON parse
  • python获取矩阵某一列元素

    今天写线性回归问题的时候遇到了一个问题 对于一个二维矩阵 python如何遍历其某一列元素 遍历一行是很简单的 直接使用索引即可 但是遍历一列呢 方法一 直接遍历法 使用一个循环 对每一行单独找出这列上的对应元素 方法二 列表解析法 这个方
  • webpack 常用配置

    环境搭建 既然是前端项目 那么就npm就必不可少 运行 npm install webpack cli g 来全局安装脚手架 随后使用 npm install webpack cli D 安装到工程下 在工程目录下创建 webpack co