使用 Webpack 优化前端开发流程

在现代前端开发中,构建工具的选择和优化流程的设计至关重要。Webpack 是一个功能强大的前端构建工具,能够优化我们的开发流程,提高开发效率和项目性能。本文将介绍如何使用 Webpack 来优化前端开发流程。

代码优化和资源管理也是前端项目中不可忽视的一部分。我们将介绍如何通过压缩和混淆代码来减小文件大小,并探讨如何分割代码和异步加载模块,以优化页面加载速度。此外,我们还将讨论如何处理和优化图片、样式和字体等资源文件,以提高整体项目性能。

我们将探讨如何优化打包大小和性能。通过使用 Webpack 的 Tree Shaking 技术,我们可以消除无用代码,减小打包文件的大小。我们还将介绍如何按需加载模块,以及如何利用缓存和长效缓存来进一步优化性能。

文章目录

  • 1 Webpack基础知识
    • 1.1 Webpack简介和核心概念
    • 1.2 安装和配置Webpack
  • 2 优化开发体验
    • 2.1 使用Webpack Dev Server进行快速开发
    • 2.2 开发环境和生产环境的区分
    • 2.3 使用Webpack实现热模块替换(Hot Module Replacement)
  • 3 模块化管理
    • 3.1 使用 Webpack 管理项目文件结构
    • 3.2 模块加载器和插件的使用
    • 3.3 优化构建性能的常见技巧
  • 4 代码优化和资源管理
    • 4.1 压缩和混淆代码
    • 4.2 代码分割和异步加载
    • 4.3 图片、样式、字体等资源的处理和优化
  • 5 优化打包大小和性能
    • 5.1 Tree Shaking:消除无用代码
    • 5.2 按需加载:动态导入模块
    • 5.3 缓存和长效缓存优化
  • 6 构建优化和自动化
    • 6.1 多环境构建配置
    • 6.2 构建流程优化和自动化
    • 6.3 使用 Webpack 插件增强构建功能
  • 7 应用优化和部署
    • 7.1 静态资源 CDN 加速
    • 7.2 代码优化和性能监测
    • 7.3 渐进式 Web 应用(PWA)的集成和部署
  • 8 结论

1 Webpack基础知识

1.1 Webpack简介和核心概念

Webpack 是一个模块打包工具,它可以将多个模块打包成一个或多个 bundle(包),用于在浏览器中加载。它的主要目的是解决前端开发中的模块化问题。

Webpack 的核心概念包括:

  1. 入口(Entry): 指定 Webpack 开始构建依赖图的入口文件。通过配置入口,Webpack 可以根据代码的依赖关系自动构建整个应用程序的依赖图。

  2. 输出(Output): 定义 Webpack 打包后的文件输出的位置和文件名。可以配置输出文件的路径、文件名和公共路径等。

  3. 加载器(Loaders): Webpack 原生只能处理 JavaScript 和 JSON 文件,但通过加载器(Loaders),Webpack 可以处理其他类型的文件。加载器可以将这些文件转换为有效的模块,供应用程序使用。

  4. 插件(Plugins): 插件用于扩展 Webpack 的功能,例如在打包过程中进行代码压缩、优化,处理环境变量等。通过使用插件,可以满足更复杂的构建需求。

  5. 模式(Mode): Webpack 提供三种模式:development、production 和 none。模式会针对不同的环境自动启用对应的配置项,例如压缩代码、提取公共代码等。

  6. 依赖图(Dependency Graph): Webpack 通过分析模块之间的依赖关系来构建应用程序的依赖图。通过依赖图,Webpack 知道如何按照正确的顺序打包模块,确保应用程序的正确运行。

通过合理配置 Webpack,可以提高开发效率、优化代码质量,并实现复杂的模块化方案。

1.2 安装和配置Webpack

安装和配置 Webpack 通常需要以下步骤:

步骤 1: 创建项目并初始化 package.json

首先,在终端中进入你的项目文件夹,并运行以下命令来创建一个新的项目并初始化 package.json 文件:

npm init

当然,你也可以使用 yarn 来代替 npm

步骤 2: 安装 Webpack

在终端中输入以下命令来安装 Webpack 及其相关的包:

npm install webpack webpack-cli --save-dev

或者使用 yarn

yarn add webpack webpack-cli --dev

这将安装最新的 Webpack 版本和 Webpack 的命令行接口。

步骤 3: 创建 Webpack 配置文件

在项目的根目录下创建一个名为 webpack.config.js 的文件,用于配置 Webpack。

Webpack 配置文件中的一些常用配置项包括入口文件、输出文件、加载器、插件等。以下是一个简单的示例:

const path = require('path');module.exports = {entry: './src/index.js',output: {path: path.resolve(__dirname, 'dist'),filename: 'bundle.js'}
};

在这个示例中,entry 指定了应用程序的入口文件,output 指定了打包后的文件的输出路径和文件名。

你可以根据自己的项目需要添加其他配置项,例如加载器和插件。

步骤 4: 编译和运行

在终端中运行以下命令来打包你的代码:

npx webpack

或者使用全局安装的 Webpack:

webpack

Webpack 将会读取并根据你的配置文件进行打包。

2 优化开发体验

2.1 使用Webpack Dev Server进行快速开发

在开发过程中,使用 Webpack Dev Server 可以大大提高开发效率。Webpack Dev Server 是一个用于开发环境的轻量级服务器,它可以在本地启动一个服务器,并提供实时编译、热模块替换(Hot Module Replacement)等功能。

以下是使用 Webpack Dev Server 进行快速开发的步骤:

步骤 1: 安装 Webpack Dev Server

在终端中运行以下命令来安装 Webpack Dev Server:

npm install webpack-dev-server --save-dev

或者使用 yarn

yarn add webpack-dev-server --dev

步骤 2: 配置 Webpack Dev Server

在 Webpack 配置文件中添加 Dev Server 的配置项,例如:

module.exports = {// ...devServer: {contentBase: path.resolve(__dirname, 'dist'),compress: true,port: 8000}
};

在这个示例中,contentBase 指定了 Dev Server 的根目录,compress: true 启用 Gzip 压缩,port 指定了 Dev Server 的端口号。

你可以根据项目的需要添加自定义配置项,例如代理服务器等。

步骤 3: 启动 Webpack Dev Server

在终端中运行以下命令启动 Webpack Dev Server:

npx webpack serve

或者使用全局安装的 Webpack:

webpack serve

Webpack Dev Server 会自动编译和打包你的代码,并在浏览器中打开你指定的端口上展示。

步骤 4: 实时编译和热模块替换

Webpack Dev Server 会监听文件的改动,并在保存文件后自动重新编译代码。它还支持热模块替换,这意味着你可以在保持应用程序状态的情况下,更改代码并立即在浏览器中看到更新。

2.2 开发环境和生产环境的区分

在项目开发过程中,通常会有开发环境(Development Environment)和生产环境(Production Environment)两种不同的环境。开发环境用于开发和调试代码,而生产环境用于部署和运行最终的产品。

区分开发环境和生产环境的好处是可以根据不同环境的需求进行相应的优化和配置,提供更好的开发体验和更高的性能。

以下是区分开发环境和生产环境的一些常见方式:

不同的 Webpack 配置文件

通常会针对开发环境和生产环境分别使用不同的 Webpack 配置文件。在开发环境中,可以开启一些方便调试和开发的功能,如源映射(Source Maps),热模块替换(Hot Module Replacement)等。而在生产环境中,可以关闭这些功能,并进行代码压缩、代码拆分、资源优化等,以提高性能。

环境变量

使用环境变量可以在代码中动态地根据当前环境进行配置。例如,你可以定义一个环境变量,标识当前是开发环境还是生产环境,然后在不同的配置文件中根据这个变量的值进行不同的配置。

Webpack 的 mode 选项

Webpack 提供了 mode 选项,可用值为developmentproductionnone。根据不同的 mode 值,Webpack 会自动根据环境设置一些默认配置,如开启优化、开启代码压缩等。你可以根据需要设置 mode 选项来优化开发体验和构建性能。

独立的 API 端点

在开发环境和生产环境中,可能需要使用不同的 API 端点或者后端服务器。通过配置不同的端点,在开发环境中可以使用模拟数据或者开发服务器,而在生产环境中使用真实的 API 端点。

2.3 使用Webpack实现热模块替换(Hot Module Replacement)

热模块替换(Hot Module Replacement,HMR)是 Webpack 提供的一项功能,在开发过程中可以实现在应用程序运行的同时,无需刷新页面即可实时更新修改的模块,从而提升开发体验和效率。

以下是使用 Webpack 实现热模块替换的步骤:

步骤 1: 启用热模块替换

在 Webpack 配置文件中添加热模块替换的配置项,例如:

const webpack = require('webpack');module.exports = {// ...devServer: {hot: true},plugins: [new webpack.HotModuleReplacementPlugin()]
};

在这个示例中,devServerhot 选项启用了热模块替换,plugins 中加入了HotModuleReplacementPlugin插件。

步骤 2: 在应用程序中支持 HMR

为了使模块能够接受热替换,你需要在应用程序的入口文件中添加一些代码,用于处理模块的热替换逻辑。

对于 JavaScript 模块来说,可以使用module.hot.accept方法来实现模块的热替换,例如:

if (module.hot) {module.hot.accept('./app', () => {// 在模块发生变化时执行一些逻辑// 例如重新渲染应用程序或者局部更新组件等});
}

对于 CSS 等样式文件,你也可以使用对应的模块加载器来支持 HMR。

步骤 3: 启动开发服务器

使用 Webpack Dev Server 启动开发服务器时,已经启用了热模块替换功能。你可以在终端中运行以下命令来启动开发服务器:

npx webpack serve

或者使用全局安装的 Webpack:

webpack serve

现在,当你修改任意模块的代码并保存时,Webpack 会自动进行重新编译,并通过热模块替换将更新的模块注入到运行中的应用程序中,从而实现实时更新。

3 模块化管理

3.1 使用 Webpack 管理项目文件结构

Webpack 可以帮助我们管理项目文件结构,将代码拆分成多个模块,并通过依赖关系进行组织。以下是一些常见的 Webpack 配置项和技巧,用于管理项目文件结构:

  • 入口文件(Entry Points):通过配置入口文件,Webpack 可以根据依赖关系进行从入口开始的模块加载和构建。

  • 代码拆分(Code Splitting):通过代码拆分,将代码拆分成多个小块,可以提高应用程序的加载速度。Webpack 提供了多种代码拆分的方式,如动态导入、分离第三方库等。

  • 模块解析(Module Resolution):Webpack 使用模块解析规则,根据模块引用的方式来查找模块的代码。可以通过配置 Webpack 的模块解析规则来处理不同类型的模块。

  • 别名(Aliases):通过配置别名,可以为常用的模块路径设置一个简短的别名,方便在代码中引用。

  • 目录结构约定:根据项目的需求,可以对文件和目录进行适当的组织和约定,以方便代码管理和维护。

3.2 模块加载器和插件的使用

Webpack 不仅可以加载 JavaScript 模块,还可以加载其他类型的资源模块,如 CSS、图片、字体等。Webpack 使用加载器(Loader)来处理这些资源模块,并将它们转换为可直接使用的模块。

以下是一些常见的 Webpack 加载器和插件的使用:

  • Babel Loader:用于将 ES6+或者其他高级语法转换为低版本的 JavaScript 代码。

  • CSS Loader:用于加载和解析 CSS 文件,并将其转换为模块。

  • File Loader:用于加载文件,并将其复制到输出目录中。

  • HtmlWebpackPlugin:根据提供的 HTML 模板自动生成 HTML 文件,并将生成的输出文件自动注入到 HTML 中。

根据项目的需求,可以选择适当的加载器和插件来处理不同类型的模块。

3.3 优化构建性能的常见技巧

优化构建性能是一个重要的任务,可以帮助我们更快地构建和部署项目。以下是一些常见的优化构建性能的技巧:

  • 使用生产环境模式:在生产环境中,可以通过 Webpack 的mode选项将模式设置为production,从而应用一些默认的优化配置。

  • 代码拆分和懒加载:通过代码拆分和懒加载,可以将不常用的代码延迟加载,减少初始加载时间。

  • 缓存和持久化:启用缓存和持久化可以减少重复构建的时间。可以使用 Webpack 的缓存配置和持久化构建工具(如 HardSourceWebpackPlugin)来提高构建速度。

  • 并行构建:可以使用 Webpack 的多线程构建工具(如 thread-loader)来并行处理多个任务,加快构建速度。

  • 优化静态资源:对于静态资源如图片、字体等,可以使用压缩工具和优化工具来减小文件大小,加快加载速度。

4 代码优化和资源管理

4.1 压缩和混淆代码

一种常见的优化代码的方式是对代码进行压缩和混淆。代码压缩可以减小文件大小,从而加快加载速度。代码混淆可以将变量名、函数名等重命名为无意义的短名称,使代码难以阅读和理解,提高代码的安全性。

可以使用 Webpack 的TerserPlugin来压缩 JavaScript 代码,例如:

const TerserPlugin = require('terser-webpack-plugin');module.exports = {optimization: {minimize: true,minimizer: [new TerserPlugin()],},
};

同时,也可以借助工具如 UglifyJS 等进行代码混淆,从而进一步优化代码。

4.2 代码分割和异步加载

通过代码分割和异步加载,可以将应用程序拆分为多个代码块,并在需要时按需加载。这样可以减小初始加载的文件大小,提高应用程序的性能。

Webpack 提供了多种代码分割的方式,如动态导入、使用splitChunks配置等。你可以根据项目的需要,将代码拆分成独立的模块,并在需要时按需加载。

例如,使用动态导入语法可以实现按需加载:

import('./module').then((module) => {// 使用模块
});

或者,通过 Webpack 的splitChunks配置可以自动将公共模块拆分出来:

module.exports = {// ...optimization: {splitChunks: {chunks: 'all',},},
};

4.3 图片、样式、字体等资源的处理和优化

在项目中会使用到很多资源,如图片、样式文件(如 CSS、SASS、LESS 等)、字体等。对这些资源进行处理和优化可以进一步提高项目的性能。

  • 图片处理:可以使用url-loaderfile-loader来加载和处理图片资源。可以配置图片的压缩、base64 编码等方式,减小文件大小。

  • 样式处理:Webpack 可以加载和处理各种样式文件,包括 CSS、SASS、LESS 等。可以使用style-loader和相应的 CSS 预处理器加载器(如sass-loaderless-loader)来处理样式文件。

  • 字体处理:可以使用file-loader或者url-loader来加载和处理字体文件。

此外,还可以使用一些优化工具和插件来进一步优化资源,如压缩工具、样式和图片优化插件等。

5 优化打包大小和性能

5.1 Tree Shaking:消除无用代码

Tree Shaking 是一种优化打包大小的技术,可以消除未使用的代码,减小打包后的文件大小。

在使用 Webpack 时,可以通过启用optimization配置中的usedExports选项来开启 Tree Shaking 功能。这会根据代码的导入和导出关系,自动识别并移除未使用的代码。

另外,需要注意的是,Tree Shaking 只能对 ES6 模块进行优化。如果代码是使用 CommonJS 等其他模块系统编写的,需要确保通过其他方式(如 Babel 插件)将其转换为 ES6 模块。

5.2 按需加载:动态导入模块

按需加载是一种优化性能的方式,通过动态导入模块来实现延迟加载和按需加载的效果。

在使用 Webpack 时,可以使用import()语法来进行动态导入模块:

import('./module').then((module) => {// 使用该模块
});

这样可以将模块拆分成多个小块,并在需要时动态加载。这样可以减小初始加载的文件大小,并提高页面加载速度。

5.3 缓存和长效缓存优化

缓存是一种常见的优化策略,可以减少网络请求,加快页面加载速度。在 Webpack 中,可以通过配置输出文件名和使用哈希值来实现缓存优化。

可以使用 Webpack 的output.filename配置项来指定输出文件名,可以使用占位符(如[name][contenthash]等)来自定义输出文件名的格式。其中,[contenthash]可以根据文件内容生成哈希值,当文件内容发生变化时,哈希值也会发生变化。

此外,为了进一步优化缓存,可以配置output.chunkFilename来定义分割的代码块的文件名,以及使用optimization.runtimeChunk配置来提取运行时代码。

这些配置可以保证文件名随内容的更改而变化,从而实现长效缓存优化,确保浏览器可以正确缓存文件并在内容发生变化时重新请求。

6 构建优化和自动化

6.1 多环境构建配置

在项目中,我们通常需要针对不同的环境(如开发环境、测试环境、生产环境)进行不同的构建配置。Webpack 提供了一种灵活的配置方式来支持多环境构建。

可以通过创建多个 Webpack 配置文件,每个文件针对不同的环境进行配置。例如,可以创建一个webpack.dev.js文件来配置开发环境,创建一个webpack.prod.js文件来配置生产环境。

可以在配置文件中定义不同的入口文件、输出路径、优化选项等。然后,通过根据当前环境使用不同的配置文件来进行构建。可以使用 Node.js 的process.env.NODE_ENV变量来判断当前的环境,如:

const isProduction = process.env.NODE_ENV === 'production';module.exports = {// 根据 isProduction 进行不同的配置
};

6.2 构建流程优化和自动化

优化构建流程可以提高开发效率和构建速度。Webpack 提供了一些工具和插件,帮助我们优化和自动化构建流程。

以下是一些常见的构建流程优化和自动化的技巧:

  • webpack-dev-server:Webpack 提供的开发服务器可以在本地启动一个服务器,并监听文件的变化自动进行重新构建,提供实时预览功能。

  • webpack-merge:可以使用webpack-merge工具来合并多个 Webpack 配置文件,从而减少配置的重复代码。

  • 构建脚本:创建自定义的构建脚本,可以利用 Shell 脚本、Node.js 脚本等自动化完成一系列构建操作,如清理输出目录、执行构建命令等。

  • 持续集成(CI)和自动部署:结合持续集成工具(如 Jenkins、Travis CI 等)和自动部署工具,可以实现代码提交后自动触发构建和部署操作,减少人工操作,提高效率。

6.3 使用 Webpack 插件增强构建功能

Webpack 提供了丰富的插件系统,可以通过插件来增强构建功能和实现自定义需求。

以下是一些常用的 Webpack 插件:

  • HtmlWebpackPlugin:根据提供的 HTML 模板自动生成 HTML 文件,并将生成的输出文件自动注入到 HTML 中。
  • CleanWebpackPlugin:用于每次构建前清理输出目录,确保每次构建都是从一个干净的状态开始。
  • MiniCssExtractPlugin:将 CSS 代码从打包的 JavaScript 文件中提取出来,生成单独的 CSS 文件。
  • DefinePlugin:可以用来定义全局常量,如 API 地址等。
  • CopyWebpackPlugin:将静态资源(如图片、字体等)从源目录复制到输出目录。
  • BundleAnalyzerPlugin:生成可视化的报告,展示构建后的模块依赖关系和文件大小,帮助分析和优化打包结果。

以上只是一些常见的 Webpack 插件,还有许多其他插件可以根据具体需求选择和使用。

7 应用优化和部署

7.1 静态资源 CDN 加速

使用 CDN(内容分发网络)可以将静态资源(如 JavaScript 文件、CSS 文件、图片等)分发到全球各地的边缘节点,从而提供更快的加载速度和更好的用户体验。

在使用 Webpack 进行构建时,可以通过配置publicPath选项来指定静态资源的 URL 前缀,使其指向 CDN 地址。例如:

module.exports = {output: {publicPath: 'https://cdn.example.com/assets/',},
};

这样构建后的静态资源文件将会带有指向 CDN 的 URL,加速资源的加载。

7.2 代码优化和性能监测

除了前面提到的代码压缩、混淆、Tree Shaking 等优化策略外,还可以通过性能监测工具来帮助分析和优化应用的性能。

一些常用的性能监测工具包括:

  • Lighthouse:一个由 Google 开发的开源工具,用于评估 Web 应用的性能、可访问性和最佳实践等方面,并提供改进建议。

  • WebPageTest:一个在线的性能测试工具,可以模拟多种网络条件和设备环境,帮助评估网页的加载速度和性能瓶颈。

  • Chrome 开发者工具:Chrome 浏览器提供了丰富的开发者工具,包括性能面板、网络面板、代码覆盖率等,可以用于分析和优化网页性能。

通过使用这些工具,可以检测网页的性能瓶颈,并根据分析结果采取相应的优化措施,提升应用的性能和用户体验。

7.3 渐进式 Web 应用(PWA)的集成和部署

渐进式 Web 应用(PWA)是一种结合了 Web 和原生应用特性的应用程序模型,具有离线访问、推送通知、添加到主屏幕等功能。

要将应用程序转变为 PWA,可以进行以下步骤:

  1. 添加 Web App Manifest:创建一个manifest.json文件,定义应用的名称、图标、主题色等信息。

  2. 添加 Service Worker:编写一个 Service Worker 脚本,用于控制缓存、离线访问和推送通知等功能。

  3. 添加网页支持离线访问:通过 Service Worker 来缓存网页的资源,使应用在离线状态下也能正常访问。

  4. 实现推送通知:使用 Service Worker 和推送通知 API,向用户发送推送通知。

部署 PWA 可以通过将应用程序的代码和资源托管到服务器上,确保应用可访问并注册 Service Worker。

对于移动设备,可以添加manifest.json中的 meta 标签,使用户可以将应用添加到主屏幕,并像原生应用一样启动。

PWA 为用户提供了更加流畅和可靠的体验,可以在离线状态下访问应用,并且具有更好的推送通知支持。通过将应用转为 PWA,可以提高用户留存率和忠诚度。

8 结论

通过本文的介绍,我们深入了解了如何使用 Webpack 来优化前端开发流程。Webpack 作为一个强大的打包工具,能帮助我们处理模块化开发、代码压缩优化以及性能优化等方面的问题。通过配置 Webpack,我们可以将前端代码进行模块化管理,实现代码拆分和按需加载,提高页面加载速度。同时,Webpack 还支持各种优化策略,如代码压缩、缓存和 Tree Shaking 等,减少了页面的请求和大小,提升了网站的性能。在开发过程中,Webpack 还能实现热模块替换,使得代码修改后无需手动刷新页面,提高开发效率。

Webpack 为前端开发提供了更高效、更优化的工作流程,是我们开发过程中不可或缺的重要工具。无论是个人项目还是团队协作,使用 Webpack,能够让我们的前端开发更加高效、愉悦。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/18578.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

传统计算机视觉

传统计算机视觉 计算机视觉难点图像分割基于主动轮廓的图像分割基于水平集的图像分割交互式图像分割基于模型的运动分割 目标跟踪基于光流的点目标跟踪基于均值漂移的块目标跟踪基于粒子滤波的目标跟踪基于核相关滤波的目标跟踪 目标检测一般目标检测识别之特征一般目标检测识别…

18.Netty源码之ByteBuf 详解

highlight: arduino-light ByteBuf 是 Netty 的数据容器,所有网络通信中字节流的传输都是通过 ByteBuf 完成的。 然而 JDK NIO 包中已经提供了类似的 ByteBuffer 类,为什么 Netty 还要去重复造轮子呢?本节课我会详细地讲解 ByteBuf。 JDK NIO…

Spring学习记录----十五、面向切面编程AOP+十六、Spring对事务的支持

目录 十五、面向切面编程AOP 15.1 AOP介绍 总结 15.2 AOP的七大术语 15.3 切点表达式 15.4 使用Spring的AOP 15.4.1 准备工作 15.4.1.1Spring AOP 基于注解之实现步骤 15.4.1.2-Spring AOP 基于注解之切点表达式 代码 运行结果: 代码 运行结果 通知类…

Python高阶技巧 递归

递归的定义 函数作为一种代码封装,可以被其他程序调用,当然,也可以被函数内部代码调用。这种函数定义中调用函数自身的方式称为递归。 递归的思想 把规模大的问题转化为规模小的、具有与原来问题相同解法的问题来解决。在函数实现时&#…

SpringBoot集成Thymeleaf

Spring Boot 集成 Thymeleaf 模板引擎 1、Thymeleaf 介绍 Thymeleaf 是适用于 Web 和独立环境的现代服务器端 Java 模板引擎。 Thymeleaf 的主要目标是为开发工作流程带来优雅的自然模板,既可以在浏览器中正确显示的 HTML,也可以用作静态原型&#xf…

C#+WPF上位机开发(模块化+反应式)

在上位机开发领域中,C#与C两种语言是应用最多的两种开发语言,在C语言中,与之搭配的前端框架通常以QT最为常用,而C#语言中,与之搭配的前端框架是Winform和WPF两种框架。今天我们主要讨论一下C#和WPF这一对组合在上位机开…

后台生成验证码的方法,验证码相关

1、后台生成验证码的方法 /**** [验证码生成] [验证码生成]base64*/RequestMapping(value "/getverifycode", method RequestMethod.POST)public String getVerifyCode(RequestBody String param) {try {Integer codeLength Integer.parseInt("4");Int…

css图标 | 来自 fontawesome 字体文件的586 个小图标

1. css效果 /*!* Font Awesome 4.4.0 by davegandy - http://fontawesome.io - fontawesome* License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)*/.fa-glass:before {content:"\f000"} .fa-music:before {content:"\f001"…

Nginx配置https链接跳转http

由于项目中实际用的http进行发布访问,网址链接没有指定为http类型,导致某些场景下打开链接是https方式进行访问,就会显示404错误,没法正常访问。 为了解决这种情况,需要进行Nginx配置,浏览器以https进行访…

小白如何理解MySQL?一文吃透

从本质上来说,MySQL也是一个软件,以Java为例,Java通过JDBC进行MySQL驱动连接后,通过调用“MySQL”的“接口”将SQL语句传给MySQL,并获取返回结果! 连接器 第一步,你会先连接到这个数据库上&…

el-upload 上传视频并回显

el-upload上传视频&#xff0c;并且显示上传的视频 <el-form-item><label slot"label"><span style"color:#F56C6C">*</span> 视频</label><el-upload class"upload-demo" style"width:360px" :act…

项目管理:项目计划有哪些不可忽视的作用

为了确保项目在我们的预期范围内完成&#xff0c;编制计划是不可或缺的&#xff0c;它可以帮助项目管理团队进行提前思考、识别和管理任何疏漏和风险。 项目计划进行跟踪中有哪些不可忽视的作用&#xff1a; 1、了解成员的工作情况 分配任务后&#xff0c;项目经理应主动与…

蓝海卓越计费管理系统任意文件读取下载

看了大佬的文章&#xff0c;太牛逼啦&#xff0c;下面是大佬文章原文。 蓝海卓越计费管理系统任意文件读取下载 鹰图语法&#xff1a;web.title"蓝海卓越计费管理系统" 访问url 直接更改url就行了 /download.php?file../../../../../etc/passwd

nginx 配置多域名多站点 Ubuntu

nginx 配置多域名多站点 Ubuntu 一、安装 nginx apt install nginx二、配置文件说明 nginx 的配置文件在 /etc/nginx 目录下&#xff0c;它的默认内容是这样的 root2bd0:/etc/nginx# ll total 72 drwxr-xr-x 8 root root 4096 Jul 31 15:21 ./ drwxr-xr-x 104 root root …

需要暴雨天气安全“指南”的不仅仅是个人

昨日&#xff0c;人民日报官微发布#暴雨天气10个安全指南#&#xff0c;从居家防范、行车安全、户外出行、遇灾求救、次生灾害、防疫防病等方面给出了针对暴雨的安全建议。 以上10条指南是主要面向个人的建议&#xff0c;而在城市水利基础设施的运营和维护上&#xff0c;需要一些…

排序进行曲-v1.0

排序 排序是将一组数据按照一定的规则进行排列的过程。在计算机科学中&#xff0c;排序是一 种常见的算法问题&#xff0c;通常用于对数据进行整理、查找、统计等操作。概念解读 基本概念 排序算法&#xff1a;排序算法是实现数据排序的具体方法。常见的排序算法包括冒泡排序…

leetcode 860. 柠檬水找零

2023.8.1 简单的一个思路就是建一个大小为3的数组change &#xff0c;用于存储剩余的零钱&#xff0c;然后遍历账单&#xff0c;每次找零钱的时候判断一下是否有足够的零钱&#xff0c;不够的话直接返回false。 能坚持到结束遍历则返回true。 代码如下&#xff1a; class Solu…

【视觉SLAM入门】5.1. 特征提取和匹配--FAST,ORB(关键点描述子),2D-2D对极几何,本质矩阵,单应矩阵,三角测量,三角化矛盾

"不言而善应" 0. 基础知识1. 特征提取和匹配1.1 FAST关键点1.2 ORB的关键点--改进FAST1.3 ORB的描述子--BRIEF1.4 总结 2. 对极几何&#xff0c;对极约束2.1 本质矩阵(对极约束)2.1.1 求解本质矩阵2.1.2 恢复相机运动 R &#xff0c; t R&#xff0c;t R&#xff0c;…

安全初级知识点详解

OOP 面向对象编程&#xff08;Object Oriented Programming &#xff0c;简称OOP&#xff09;是目前主流的编程范式。它将真实世界各种复杂的关系&#xff0c;抽象为一个个对象&#xff0c;然后由对象之间的分工与合作&#xff0c;完成对真实世界的模拟。 每一个对象都是功能中…

【React】搭建React项目

最近自己在尝试搭建react项目&#xff0c;其实react项目搭建没有想象中的那么复杂&#xff0c;我们只需要使用一个命令把React架子搭建好&#xff0c;其他的依赖可以根据具体的需求去安装&#xff0c;比如AntDesignMobile的UI框架&#xff0c;执行npm install antd-mobile --sa…