Webpack在Vue CLI中的应用
webpack 作为目前最流行的项目打包工具,被广泛使用于项目的构建和开发过程中,其实说它是打包工具有点大材小用了,我个人认为它是一个集前端自动化、模块化、组件化于一体的可拓展系统,你可以根据自己的需要来进行一系列的配置和安装,最终实现你需要的功能并进行打包输出。
而在 Vue 的项目中,webpack 同样充当着举足轻重的作用,比如打包压缩、异步加载、模块化管理等等,初学者做初步了解就可以。接下来开始介绍webpack在vue项目中的配置和功能。
1. 与 vue-cli 2.x 的差异
如果你使用过 vue-cli 2.x,那么你应该了解其构建出的目录会包含相应的 webpack 配置文件,但是在 vue-cli 3.x 中你却见不到一份关于 webpack 的配置文件,难道 3.x 抛弃了 webpack?其实不然,3.x 提供了一种开箱即用的模式,即你无需配置 webpack 就可以运行项目,并且它提供了一个 vue.config.js 文件来满足开发者对其封装的 webpack 默认配置的修改

2. vue.config.js 的配置
a. baseurl
在前面的文章中,通过 vue-cli 3.x 成功构建并在浏览器中打开 http://localhost:8080/ 展示了项目首页。如果现在你想要将项目地址加一个二级目录,比如:http://localhost:8080/vue/,那么我们需要在 vue.config.js 里配置 baseurl 这一项:
// vue.config.js
module.exports = {...baseUrl: 'vue',...
}
其改变的其实是 webpack 配置文件中 output 的 publicPath 项,这时候你重启终端再次打开页面的时候我们首页的 url 就会变成带二级目录的形式。
b. outputDir
如果你想将构建好的文件打包输出到 output 文件夹下(默认是 dist 文件夹),你可以配置:
// vue.config.js
module.exports = {...outputDir: 'output',...
}
然后运行命令 yarn build 进行打包输出,你会发现项目跟目录会创建 output 文件夹, 这其实改变了 webpack 配置中 output 下的 path 项,修改了文件的输出路径。
c. productionSourceMap
该配置项用于设置是否为生产环境构建生成 source map,一般在生产环境下为了快速定位错误信息,我们都会开启 source map:
// vue.config.js
module.exports = {...productionSourceMap: true,...
}
该配置会修改 webpack 中 devtool 项的值为 source-map。
开启 source map 后,我们打包输出的文件中会包含 js 对应的 .map 文件,其用途可以参考:JavaScript Source Map 详解
d. chainWebpack
chainWebpack 配置项允许我们更细粒度的控制 webpack 的内部配置,其集成的是 webpack-chain 这一插件,该插件可以让我们能够使用链式操作来修改配置,比如:
// 用于做相应的合并处理
const merge = require('webpack-merge');module.exports = {...// config 参数为已经解析好的 webpack 配置chainWebpack: config => {config.module.rule('images').use('url-loader').tap(options =>merge(options, {limit: 5120,}))}...
}
以上操作我们可以成功修改 webpack 中 module 项里配置 rules 规则为图片下的 url-loader 值,将其 limit 限制改为 5M,修改后的 webpack 配置代码如下:
{...module: {rules: [{ /* config.module.rule('images') */test: /\.(png|jpe?g|gif|webp)(\?.*)?$/,use: [/* config.module.rule('images').use('url-loader') */{loader: 'url-loader',options: {limit: 5120,name: 'img/[name].[hash:8].[ext]'}}]}]}...
}
这里需要注意的是我们使用了 webpack-merge 这一插件,该插件用于做 webpack 配置的合并处理,这样 options 下面的其他值就不会被覆盖或改变。
e. configureWebpack
除了上述使用 chainWebpack 来改变 webpack 内部配置外,我们还可以使用 configureWebpack 来进行修改,两者的不同点在于 chainWebpack 是链式修改,而 configureWebpack 更倾向于整体替换和修改。示例代码如下:
// vue.config.js
module.exports = {...// config 参数为已经解析好的 webpack 配置configureWebpack: config => {// config.plugins = []; // 这样会直接将 plugins 置空// 使用 return 一个对象会通过 webpack-merge 进行合并,plugins 不会置空return {plugins: []}}...
}
configureWebpack 可以直接是一个对象,也可以是一个函数,如果是对象它会直接使用 webpack-merge 对其进行合并处理,如果是函数,你可以直接使用其 config 参数来修改 webpack 中的配置,或者返回一个对象来进行 merge 处理。
你可以在项目目录下运行 vue inspect 来查看你修改后的 webpack 完整配置,当然你也可以缩小审查范围,比如:
# 只查看 plugins 的内容
vue inspect plugins
f. devServer
vue.config.js 还提供了 devServer 项用于配置 webpack-dev-server 的行为,使得我们可以对本地服务器进行相应配置,我们在命令行中运行的 yarn serve 对应的命令 vue-cli-service serve 其实便是基于 webpack-dev-server 开启的一个本地服务器,其常用配置参数如下:
// vue.config.js
module.exports = {...devServer: {open: true, // 是否自动打开浏览器页面hot: true, // 启用热模块替换,在代码变更时,页面会自动更新。port: 8080, // 端口地址https: true, // 启用 HTTPShttps: false, // 使用https提供服务proxy: {//用于设置代理,以解决跨域问题。可以将请求代理到其他服务器。'/api': {target: 'http://localhost:3000', // 目标服务器changeOrigin: true, // 允许跨域pathRewrite: { '^/api': '' }, // 重写路径},},// 提供在服务器内部的其他中间件之前执行自定义中间件的能力before: (app) => {app.get('/api/custom', (req, res) => {res.json({ message: 'Custom API response' });});},...
}
以上讲解了 vue.config.js 中一些常用的配置项功能,具体的配置实现需要结合实际项目进行,完整的配置项可以查看:vue.config.js
拓展1
1.什么是webpack-merge
webpack-merge 是一个用于合并多个 Webpack 配置文件的工具。它通常用于将基本配置与特定环境(如开发、生产)或功能集(如加载器、插件等)的配置进行合并,便于在不同环境下灵活调整 Webpack 配置。
假设我们有一个基本的 Webpack 配置 webpack.base.js 和一个开发特定的配置 webpack.dev.js。
1. 基础配置 (webpack.base.js)
// webpack.base.js
const path = require('path');module.exports = {entry: './src/index.js',output: {filename: 'bundle.js',path: path.resolve(__dirname, 'dist'),},module: {rules: [{test: /\.js$/,exclude: /node_modules/,use: {loader: 'babel-loader',},},],},
};
2. 开发配置 (webpack.dev.js)
// webpack.dev.js
const { merge } = require('webpack-merge');
const baseConfig = require('./webpack.base.js');module.exports = merge(baseConfig, {mode: 'development',devtool: 'source-map',devServer: {contentBase: './dist',},
});
3. 生产配置 (webpack.prod.js)
// webpack.prod.js
const { merge } = require('webpack-merge');
const baseConfig = require('./webpack.base.js');module.exports = merge(baseConfig, {mode: 'production',optimization: {minimize: true,},
});
运行构建
在 package.json 中配置 scripts 以运行不同的构建:
"scripts": {"build:dev": "webpack --config webpack.dev.js","build:prod": "webpack --config webpack.prod.js"
}
现在,您可以使用以下命令来构建项目:
- 开发环境:
npm run build:dev - 生产环境:
npm run build:prod
合并细节
webpack-merge 提供了多种合并策略:
merge: 简单合并,后面的配置会覆盖前面的配置。smartMerge: 智能合并,避免重复合并相同的内容。unique: 合并数组时去重。
2.configureWebpack和chainWebpack的区别
在 Vue CLI 项目中,configureWebpack 和 chainWebpack 是用于自定义 Webpack 配置的两个不同方法。它们各自有不同的特点和适用场景。
1. configureWebpack
- 用途: 用于直接修改 Webpack 配置对象。适用于简单的配置修改。
- 使用方式: 你可以在
vue.config.js文件中设置configureWebpack属性,可以是一个对象或一个返回配置对象的函数。
示例
// vue.config.js
const path = require('path');module.exports = {configureWebpack: {resolve: {alias: {'@': path.resolve(__dirname, 'src'),},},plugins: [// 添加自定义插件],},
};
或者使用函数:
module.exports = {configureWebpack: (config) => {// 修改配置config.devtool = 'source-map'; // 仅示例,实际可根据需要修改},
};
2. chainWebpack
- 用途: 通过链式 API 修改 Webpack 配置,提供更多的灵活性和控制能力。适用于更复杂的配置场景,例如修改现有插件或加载器的选项。
- 使用方式: 在
vue.config.js中设置chainWebpack属性,它是一个接受webpack-chain实例作为参数的函数。
示例
// vue.config.js
module.exports = {chainWebpack: (config) => {// 修改现有的规则config.module.rule('vue').use('vue-loader').tap(options => {// 修改选项return {...options,loaders: {scss: 'vue-style-loader!css-loader!sass-loader',},};});// 添加新的插件config.plugin('html').tap(args => {args[0].title = 'My App';return args;});},
};
1. .config.module
- 定义:
config.module访问到 Webpack 的模块配置部分。 - 功能: 在这里可以定义和修改模块的加载规则。
2. .rule('vue')
- 定义:
rule('vue')用于访问处理.vue文件的规则。Vue 文件是 Vue.js 框架的组件文件,通常包含模板、脚本和样式。 - 功能: 这里的
vue表示的是该规则的名称,即用于处理 Vue 单文件组件。
3. .use('vue-loader')
- 定义:
use('vue-loader')表示访问该规则中使用的vue-loader加载器。 - 功能:
vue-loader是一个专门用于处理 Vue 单文件组件的加载器,负责将 Vue 文件中的内容解析为可被浏览器理解的 JavaScript、HTML 和 CSS。
4. .tap(options => { ... })
- 定义:
tap是一个用于修改加载器选项的方法。 - 功能: 通过
tap,可以获取当前vue-loader的配置选项,并进行修改。
5. return { ...options, loaders: { ... } }
- 展开运算符:
...options用于将现有的加载器选项展开,确保保留原有的配置。 - 修改加载器: 在返回的对象中,添加或修改了
loaders属性,特别是对scss文件的处理。这里设置了使用链式加载器:vue-style-loader: 将样式注入到 DOM 中。css-loader: 解析 CSS 文件。sass-loader: 将 SCSS 文件转换为 CSS。
主要区别
| 特性 | configureWebpack | chainWebpack |
|---|---|---|
| 语法 | 直接修改配置对象或返回配置对象 | 使用链式 API 进行更细粒度的修改 |
| 使用的灵活性 | 相对简单,适合简单的修改 | 更灵活,适合复杂的配置和插件的修改 |
| 适用场景 | 基本的插件添加、别名配置等 | 复杂的加载器配置、条件添加插件等 |
何时使用
- 使用
configureWebpack: 当你需要简单地添加一个插件、设置路径别名或修改一些基础配置时,可以使用configureWebpack。 - 使用
chainWebpack: 当你需要对现有的配置进行细致的修改、删除、替换或在条件下进行配置时,选择chainWebpack会更合适。
3. 默认插件
通过对 vue.config.js 的了解,我们知道了 vue-cli 3.x 为我们默认封装了项目运行的常用 webpack 配置,那么它给我们提供了哪些默认插件,每一个 plugin 又有着怎样的用途呢?除了使用 vue inspect plugins 我们还可以通过运行 vue ui 进入可视化页面查看,步骤如下:
-
打开可视化页面,点击对应项目进入管理页面(如果没有对应项目,需要导入或新建)
-
点击侧边栏 Tasks 选项,再点击二级栏 inspect 选项
-
点击 Run task 按钮执行审查命令

最后我们从输出的内容中找到 plugins 数组,其包含了如下插件(配置项已经省略,增加了定义插件的代码):
// vue-loader是 webpack 的加载器,允许你以单文件组件的格式编写 Vue 组件
const VueLoaderPlugin = require('vue-loader/lib/plugin');// webpack 内置插件,用于创建在编译时可以配置的全局常量
const { DefinePlugin } = require('webpack');// 用于强制所有模块的完整路径必需与磁盘上实际路径的确切大小写相匹配
const CaseSensitivePathsPlugin = require('case-sensitive-paths-webpack-plugin');// 识别某些类型的 webpack 错误并整理,以提供开发人员更好的体验。
const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin');// 将 CSS 提取到单独的文件中,为每个包含 CSS 的 JS 文件创建一个 CSS 文件
const MiniCssExtractPlugin = require("mini-css-extract-plugin");// 用于在 webpack 构建期间优化、最小化 CSS文件
const OptimizeCssnanoPlugin = require('optimize-css-assets-webpack-plugin');// webpack 内置插件,用于根据模块的相对路径生成 hash 作为模块 id, 一般用于生产环境
const { HashedModuleIdsPlugin } = require('webpack');// 用于根据模板或使用加载器生成 HTML 文件
const HtmlWebpackPlugin = require('html-webpack-plugin');// 用于在使用 html-webpack-plugin 生成的 html 中添加 <link rel ='preload'> 或 <link rel ='prefetch'>,有助于异步加载
const PreloadPlugin = require('preload-webpack-plugin');// 用于将单个文件或整个目录复制到构建目录
const CopyWebpackPlugin = require('copy-webpack-plugin');module.exports = {plugins: [/* config.plugin('vue-loader') */new VueLoaderPlugin(), /* config.plugin('define') */new DefinePlugin(),/* config.plugin('case-sensitive-paths') */new CaseSensitivePathsPlugin(),/* config.plugin('friendly-errors') */new FriendlyErrorsWebpackPlugin(),/* config.plugin('extract-css') */new MiniCssExtractPlugin(),/* config.plugin('optimize-css') */new OptimizeCssnanoPlugin(),/* config.plugin('hash-module-ids') */new HashedModuleIdsPlugin(),/* config.plugin('html') */new HtmlWebpackPlugin(),/* config.plugin('preload') */new PreloadPlugin(),/* config.plugin('copy') */new CopyWebpackPlugin()]
}
我们可以看到每个插件上方都添加了使用 chainWebpack 访问的方式,同时我也添加了每个插件相应的用途注释,需要注意的是要区分 webpack 内置插件和第三方插件的区别,如果是内置插件则无需安装下载,而外部插件大家可以直接访问:npm | Home 搜索对应的插件,了解其详细的 api 设置。
拓展2
1.vue.config.js 中还有哪些配置
1. publicPath
-
作用: 指定应用的根 URL,通常用于设置基础路径。默认情况下为
'/'。 -
示例:
module.exports = {publicPath: process.env.NODE_ENV === 'production' ? '/my-app/' : '/', };
2. outputDir
-
作用: 指定构建输出目录,默认值为
dist。 -
示例:
module.exports = {outputDir: 'build', // 输出到 build 目录 };
3. assetsDir
-
作用: 指定静态资源的目录,默认值为
''。 -
示例:
-
module.exports = {outputDir: 'build', // 输出到 build 目录 };
4. indexPath
-
作用: 指定生成的 index.html 文件的输出路径,默认值为
index.html。 -
示例:
module.exports = {indexPath: 'main.html', // 输出为 main.html };
5. lintOnSave
-
作用: 在开发期间是否启用 ESLint,默认为
true。 -
示例:
module.exports = {lintOnSave: false, // 禁用 ESLint };
6. configureWebpack
-
作用: 用于直接修改 Webpack 配置。
-
示例:
module.exports = {configureWebpack: {plugins: [// 自定义插件],},
};
7. chainWebpack
-
作用: 使用 Webpack Chain API 进行更详细的配置。
-
示例:
module.exports = {chainWebpack: (config) => {config.module.rule('vue').use('vue-loader').tap(options => {// 修改选项return { ...options, loaders: { scss: 'vue-style-loader!css-loader!sass-loader' } };});},
};
8. devServer
-
作用: 用于配置开发服务器的行为。
-
示例:
module.exports = {devServer: {port: 8080,open: true,proxy: {'/api': {target: 'http://localhost:3000',changeOrigin: true,},},},
};
9. transpileDependencies
-
作用: 指定需要转译的依赖,通常用于支持 ES6+ 的第三方库。
-
示例:
module.exports = {transpileDependencies: ['some-library'],
};
10. productionSourceMap
-
作用: 在生产环境是否生成 source maps,默认为
true。 -
示例:
module.exports = {productionSourceMap: false, // 禁用生产环境的 source map
};
11. css
-
作用: 用于配置 CSS 相关的选项,如模块化、预处理器等。
-
示例:
module.exports = {css: {modules: true, // 启用 CSS 模块sourceMap: true, // 启用 CSS source maps},
};
12. pluginOptions
-
作用: 用于配置额外的插件选项,通常与 Vue CLI 插件一起使用。
-
示例:
module.exports = {pluginOptions: {i18n: {locale: 'en',fallbackLocale: 'en',localeDir: 'locales',enableLegacy: false,},},
};
2.使用 chainWebpack获取到 webpack 中的某一插件后,如何修改其配置
示例:修改 HtmlWebpackPlugin 的配置
假设我们想要修改 HtmlWebpackPlugin 的配置,比如设置模板文件路径或添加一些选项。可以按照以下步骤进行:
-
使用
chainWebpack方法:在vue.config.js中定义chainWebpack方法。 -
获取插件实例:使用
config.plugin方法获取到指定的插件。 -
修改配置:通过调用
.tap()方法来修改插件的选项。
以下是一个完整的示例:
// vue.config.js
module.exports = {chainWebpack: (config) => {// 修改 HtmlWebpackPlugin 的配置config.plugin('html').tap(args => {// args 是传递给 HtmlWebpackPlugin 的参数数组args[0].title = 'My Custom Title'; // 修改页面标题args[0].template = './public/my-template.html'; // 指定自定义模板return args; // 返回修改后的参数});},
};
要点说明
-
获取插件:使用
config.plugin('pluginName')获取到指定的插件实例。在此示例中,'html'是HtmlWebpackPlugin的名称,通常是根据插件在 Webpack 配置中注册的名称。 -
使用
.tap()方法:此方法接收一个函数,函数的参数是传给插件的原始参数数组,您可以在此数组中做出修改。 -
返回修改后的参数:最后,需要返回修改后的参数数组,以便插件使用。
修改其他插件
类似的方法可以用于修改其他 Webpack 插件的配置。例如,若要修改 MiniCssExtractPlugin 的配置,可以使用如下方式:
config.plugin('extract-css').tap(args => {args[0].filename = 'custom.css'; // 修改输出的 CSS 文件名return args;});相关文章:
Webpack在Vue CLI中的应用
webpack 作为目前最流行的项目打包工具,被广泛使用于项目的构建和开发过程中,其实说它是打包工具有点大材小用了,我个人认为它是一个集前端自动化、模块化、组件化于一体的可拓展系统,你可以根据自己的需要来进行一系列的配置和安…...
继承超详细介绍
一 、继承 1 继承的概念 继承是面向对象程序设计使得代码可以复用的最重要手段,它使得我们可以在原有类的特性的基础上进行扩展,增加方法和属性(成员函数与成员变量),这样产生新的类,叫作派生类。继承呈现了…...
wordpress调用指定ID分类下浏览最多的内容
要在WordPress中调用指定ID分类下浏览最多的内容,你可以通过以下方法实现: <?php $post_num 8; // 设置调用条数 $wdpidproduct 2; // 假设这是你要查询的分类ID $args array(post_password > ,post_status > publish, // wodepress.comca…...
18.springcloud_openfeign之扩展组件二
文章目录 一、前言二、子容器默认组件FeignClientsConfigurationDecoder的注入Contract约定 对注解的支持对类上注解的支持对方法上注解的支持对参数上注解的支持MatrixVariablePathVariableRequestParamRequestHeaderSpringQueryMapRequestPartCookieValue FormattingConversi…...
FreePBX修改IP地址和端口以及添加SSL证书开启HTTPS访问
最近给单位部署了freepbx网络电话系统,我的系统是安装在ibm x3650 m4物理机上的,iso镜像下载后直接用Rufus烧录到U盘,服务器上先做好了raid1,插上U盘重启服务器开撸。安装过程略过了,在虚拟机上安装就不用那么麻烦。 …...
运算符 - 算术、关系、逻辑运算符
引言 在编程中,运算符是用于执行特定操作的符号。C 提供了多种类型的运算符,包括算术运算符、关系运算符和逻辑运算符等。理解这些运算符及其用法对于编写高效且无误的代码至关重要。本文将详细介绍 C 中的这三种基本运算符,并通过实例帮助读…...
大模型-ChatGLM2-6B模型部署与微调记录
大模型-ChatGLM2-6B模型部署与微调记录 模型权重下载: 登录魔塔社区:https://modelscope.cn/models/ZhipuAI/chatglm2-6b 拷贝以下代码执行后,便可快速权重下载到本地 # 备注:最新模型版本要求modelscope > 1.9.0 # pip insta…...
RDFS—RDF模型属性扩展解析
目录 前言1. 什么是RDFS?1.1 RDFS的核心概念1.2 RDFS与RDF的区别 2. RDFS的基础概念2.1 类(Class)2.2 属性(Property)2.3 关系(Relation)2.4 定义域(Domain)2.5 值域&…...
pyqt和pycharm环境搭建
安装 python安装: https://www.python.org/downloads/release/python-3913/ python3.9.13 64位(记得勾选Path环境变量) pycharm安装: https://www.jetbrains.com/pycharm/download/?sectionwindows community免费版 换源: pip config se…...
salesforce 控制 Experience Cloud 站点用户可以看到哪些用户
在 Salesforce 的 Experience Cloud 中,您可以通过多种方式控制站点用户(如社区用户)之间的可见性。这包括用户之间的信息可见性以及他们可以访问的其他用户数据。以下是几种方法和设置,用于实现对 Experience Cloud 站点用户可见…...
【玩转OCR】 | 腾讯云智能结构化OCR在多场景的实际应用与体验
文章目录 引言产品简介产品功能产品优势 API调用与场景实践图像增强API调用实例发票API调用实例其他场景 结语相关链接 引言 在数字化信息处理的时代,如何高效、精准地提取和结构化各类文档数据成为了企业和政府部门的重要需求。尤其是在面对海量票据、证件、表单和…...
面试题整理20----什么是蓝绿部署、灰度发布、金丝雀发布他们有什么区别?
面试题整理20----什么是蓝绿部署、灰度发布、金丝雀发布,他们有什么区别? 1. 蓝绿部署2. 灰度发布3. 金丝雀发布4. 滚动更新5. 它们的区别 蓝绿部署、灰度发布、金丝雀发布和滚动更新都是软件部署策略,旨在减少发布新版本时的风险,提高系统的稳定性和用…...
c语言传参数路径太长,导致无法获取参数
把这个 httpd_opts.h 文件里的 这行代码#define LWIP_HTTPD_MAX_CGI_PARAMETERS 改大根据需要改就可以 /* The maximum number of parameters that the CGI handler can be sent. */ #if !defined LWIP_HTTPD_MAX_CGI_PARAMETERS || defined __DOXYGEN__ #define LWIP_HTTP…...
React性能优化:构建更高效的应用
在现代前端开发中,React已经成为构建复杂、交互频繁应用的首选框架。然而,随着应用规模的扩大和功能的丰富,组件的频繁重渲染可能会成为性能瓶颈,影响用户体验。为了提升React应用的性能,开发者需要掌握一系列性能优化技巧和工具。本文将详细介绍React性能优化的各个方面,…...
python+PyMuPDF库:(一)创建pdf文件及内容读取和写入
目录 文档操作 打开文档 获取文档信息 删除页 复制页 移动页 选择重构合并 保存关闭 页对象操作 内容读取 获取页对象的字体样式 插入文本标签 插入文本内容 字体设置 insert_text添加文本 insert_textbox添加文本 插入图片 获取页面注释、链接、表单字段 …...
vue3配置测试环境、开发环境、生产环境
第一步:在src同级新建 .env.production 、.env.test 、.env.development文件 第二步:在文件中配置开发环境、生产环境、测试环境 // 开发环境 .env.developmentNODE_ENV developmentVUE_APP_MODE development outputDir dist_dev // 打出包的名称VUE_…...
Jsonlizer,一个把C++各类数据转成 Json 结构体的玩意儿
这段时间突发奇想,觉得可以弄一个Json和C各种数据类型互转的工具,因为Json在进行数据储存的时候,有一些先天的优势,传统的C的序列化方式是将数据序列化到流数据里面,而流数据是典型的串行结构(或则说是一维…...
Qt仿音乐播放器:设置窗口、部件属性
// 设置窗口标志 this->setWindowFlag(Qt::FramelessWindowHint); //此设置将窗口设置成无边框模式//设置窗口背景透明 this->setAttribute(Qt::WA_TranslucentBackground,true); attribute:属性 Translucent:半透明 Qt::WA_TranslucentBackgro…...
使用 .NET 6 或 .NET 8 上传大文件
如果您正在使用 .NET 6,并且它拒绝上传大文件,那么本文适合您。 我分享了一些处理大文件时需要牢记的建议,以及如何根据我们的需求配置我们的服务,并提供无限制的服务。 本文与 https://blog.csdn.net/hefeng_aspnet/arti…...
基于特征工程(pca分析)、小波去噪以及数据增强,同时采用基于注意力机制的BiLSTM、随机森林、ARIMA模型进行序列数据预测
本文采用特征工程(pca分析)、小波去噪以及数据增强,同时采用基于注意力机制的BiLSTM、随机森林、ARIMA模型进行序列数据预测 基于BILSTM(双向长短期记忆网络)、随机森林回归和ARIMA(自回归积分滑动平均&am…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...
面向无人机海岸带生态系统监测的语义分割基准数据集
描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...
wpf在image控件上快速显示内存图像
wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像(比如分辨率3000*3000的图像)的办法,尤其是想把内存中的裸数据(只有图像的数据,不包…...
Qt 事件处理中 return 的深入解析
Qt 事件处理中 return 的深入解析 在 Qt 事件处理中,return 语句的使用是另一个关键概念,它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别:不同层级的事件处理 方…...
vue3 daterange正则踩坑
<el-form-item label"空置时间" prop"vacantTime"> <el-date-picker v-model"form.vacantTime" type"daterange" start-placeholder"开始日期" end-placeholder"结束日期" clearable :editable"fal…...
