北龙建设集团有限公司企业网站网站建设描述怎么写

news/2025/9/24 2:21:17/文章来源:
北龙建设集团有限公司企业网站,网站建设描述怎么写,网络营销师证书含金量,网络建设工程师本文目录 一、项目基本信息二、分析当前项目情况1、使用 webpack-bundle-analyzer 插件2、使用 speed-measure-webpack-plugin 插件 三、解决构建问题1、caniuse-lite 提示的问题2、 warning 问题 四、打包速度优化1、修改source map2、处理 loader 五、webpack性能优化1、使用… 本文目录 一、项目基本信息二、分析当前项目情况1、使用 webpack-bundle-analyzer 插件2、使用 speed-measure-webpack-plugin 插件 三、解决构建问题1、caniuse-lite 提示的问题2、 warning 问题 四、打包速度优化1、修改source map2、处理 loader 五、webpack性能优化1、使用Tree Shaking2、配置Gzip压缩3、配置devtool4、适用 uglifyjs-webpack-plugin 压缩js5、chunks 分割 一、项目基本信息 本次要进行webpack优化的项目是vue2开发的基本信息如下 vue.config.js配置如下 module.exports {productionSourceMap: false,chainWebpack: config {config.plugin(html).tap(args {args[0].chunksSortMode none;return args;});},devServer: {disableHostCheck: true,before: function(app) {app.get(/api/version, function(req, res) {res.json({data: V1.0.0,message: ,status: 0,});});},proxy: {/api: {target: http://localhost:8080/,changeOrigin: true,autoRewrite: true,pathRewrite: {^/api/: /,},},},}, };可以发现这个项目基本没有做任何的优化。 二、分析当前项目情况 1、使用 webpack-bundle-analyzer 插件 该插件主要是分析项目各个模块的大小。 安装npm i webpack-bundle-analyzer -D使用 // vue.config.js const BundleAnalyzerPlugin require(webpack-bundle-analyzer).BundleAnalyzerPlugin;module.exports {productionSourceMap: false,// webpack相关配置该对象将会被webpack-merge合并入最终的webpack配置configureWebpack: config {config.plugins.push(new BundleAnalyzerPlugin());}, }执行npm run build --report 浏览器默认打开http://127.0.0.1:8888/ 得到 可以看到不仅打包过程有warning而且打包后最大的文件达竟然有4.17M new BundleAnalyzerPlugin 参数配置说明 new BundleAnalyzerPlugin({analyzerMode:server, // 可以是 server、static、json、disabled。在server模式下分析器将启动HTTP服务器来显示软件包报告。在“静态”模式下会生成带有报告的单个HTML文件。在disabled模式下你可以使用这个插件来将generateStatsFile设置为true来生成Webpack Stats JSON文件。analyzerHost: 127.0.0.1, // 将在“服务器”模式下使用的端口启动HTTP服务器analyzerPort: 8888, // 端口号reportFilename: report.html, // 路径捆绑将在static模式下生成的报告文件。相对于捆绑输出目录defaultSizes: parsed, // 默认显示在报告中的模块大小匹配方式。应该是statparsed或者gzip中的一个openAnalyzer: false, // 在默认浏览器中是否自动打开报告默认 truegenerateStatsFile: false, // 如果为true则Webpack Stats JSON文件将在bundle输出目录中生成statsFilename: stats.json, // 相对于捆绑输出目录statsOptions: null, //stats.toJson()方法的选项。例如您可以使用sourcefalse选项排除统计文件中模块的来源。在这里查看更多选项https://github.com/webpack/webpack/blob/webpack-1/lib/Stats.js#L21logLevel: info, // 日志级别可以是info, warn, error, silentexcludeAssets:null, // 用于排除分析一些文件 })2、使用 speed-measure-webpack-plugin 插件 通过这个插件分析 webpack 的总打包耗时以及每个 plugin 和 loader 的打包耗时从而让我们对打包时间较长的部分进行针对性优化。 安装npm i speed-measure-webpack-plugin -D使用 const SpeedMeasurePlugin require(speed-measure-webpack-plugin);module.exports {productionSourceMap: false,// webpack相关配置该对象将会被webpack-merge合并入最终的webpack配置configureWebpack: config {config.plugins.push(new BundleAnalyzerPlugin());config.plugins.push(new SpeedMeasurePlugin());}, }重新执行打包命令npm run build --report 在控制台就能看到如下信息 通过smp 日志可以看到打包整体输出时间竟然需要将近29s打包速度慢主要集中在eslint-loader、less-loader等一些loader中。 但总的来说无论是项目打包的文件大小还是打包时间都是无法忍受的 三、解决构建问题 1、caniuse-lite 提示的问题 在进行打包的时候发现控制台很多提示Building for production...Browserslist: caniuse-lite is outdated. Please run: npx update-browserslist-dblatest 办法1根据日志提示的信息caniuse lite过时了直接按提示执行npx update-browserslist-dblatest caniuse-lite is outdated 仍然还有1个提示说明其实问题并没有完全解决。 方法2直接删了 node_modules/caniuse-lite 文件夹然后重新安装npm i caniuse-lite -g 额。。。还是不能完全解决。 办法3先删了 node_modules/caniuse-lite 和 node_modules/browserslist 两个文件夹然后执行npm i caniuse-lite browserslist -D 然后执行打包命令发现报错了 好吧删除了caniuse-lite 和 browserslist导致了之前安装的 speed-measure-webpack-plugin 插件有问题原因可能是三者之间存在某种关联关系反正解决办法就是先删除package.json中的speed-measure-webpack-plugin: ^1.5.0,然后重装speed-measure-webpack-plugin。 至此终于把 caniuse-lite 过期的问题解决了。 2、 warning 问题 打包过程中还发现有2个warning必须给它解决了。 两个warning提示其实都差不多一个意思就是文件过大的问题。 修改vue.config.js配置 module.exports {productionSourceMap: false,configureWebpack: config {config.plugins.push(new BundleAnalyzerPlugin());config.plugins.push(new SpeedMeasurePlugin());// 性能提示配置config[performance] {hints: false, // 简单粗暴关闭webpack的性能提示maxEntrypointSize: 512000, // 入口起点的最大体积限制500kbmaxAssetSize: 512000, // 生成文件的最大体积};},执行打包命令然后就不会再有warning提示。 接下来就可以继续进行优化了。 四、打包速度优化 1、修改source map 执行打包命令后会发现打包后每个js文件都有一个map文件。 map文件的作用在于项目打包后代码都是经过压缩加密的如果运行时报错输出的错误信息无法准确得知是哪里的代码报错。有了map就可以像未加密的代码一样准确的输出是哪一行哪一列有错也就是说map文件相当于是查看源码的一个东西。 当然这也会导致构建后的包体积会更大所以一般可以甚至生产环境不用生成source map文件。 只需要vue.config.js里面配置module.exports { productionSourceMap: false } 生成map文件的包大小 没有map文件的包大小 2、处理 loader 在前面的速度分析中我们已经知道了打包速度主要耗费在 loader 的处理上。所以要想提升速度就得针对性的解决各个loader。 // vue.config.js module.exports {// 生产环境是否生成 sourceMap 文件productionSourceMap: false, configureWebpack: config {// 新增配置config.module.rules.push({test: /\.vue$/,loader: vue-loader,include: path.resolve(src),exclude: /node_modules/,},{test: /\.js$/,use: [babel-loader],include: path.resolve(src),exclude: /node_modules/,},{test: /\.less$/,use: [cache-loader],include: path.resolve(src),exclude: /node_modules/,});}运行打包命令速度喜人 浏览器上各个模块如下 至此其实本文的主要目的提升webpack打包速度就算达成了当然webpack还有很多可以优化的手段和措施。 此时完整的vue.config.js如下 const BundleAnalyzerPlugin require(webpack-bundle-analyzer).BundleAnalyzerPlugin; const SpeedMeasurePlugin require(speed-measure-webpack-plugin);const path require(path);module.exports {// 生产环境是否生成 sourceMap 文件productionSourceMap: false, configureWebpack: config {// 性能配置config.performance {hints: false, // 关闭性能提示maxEntrypointSize: 512000, // 入口起点的最大体积限制500kbmaxAssetSize: 512000, // 生成文件的最大体积};// 打包文件分析插件config.plugins.push(new BundleAnalyzerPlugin({openAnalyzer: true,analyzerPort: 8085,}),new SpeedMeasurePlugin() // 打包速度分析插件);// loader配置config.module.rules.push({test: /\.vue$/,loader: vue-loader,include: path.resolve(src),exclude: /node_modules/,},{test: /\.js$/,use: [babel-loader],include: path.resolve(src),exclude: /node_modules/,},{test: /\.less$/,use: [cache-loader],include: path.resolve(src),exclude: /node_modules/,});},chainWebpack: config {config.plugin(html).tap(args {args[0].chunksSortMode none;return args;});},devServer: {}, };接下来的优化重点阐述方案和实施数据就不做过多对比了。 五、webpack性能优化 1、使用Tree Shaking webpack官方说明https://www.webpackjs.com/guides/tree-shaking/ 修改vue.config.js module.exports {// ...configureWebpack: config {// ...config.optimization {usedExports: true, // 设置 tree-shaking// ...}} }修改package.json: sideEffects: true true 所有文件都不会受到 tree shaking 的影响 false 所有文件都会受到 tree shaking 的影响 [] 数组内的文件不受 tree shaking 的影响其他受 tree shaking 的影响例[“.css, .vue”] 2、配置Gzip压缩 从 webpack-bundle-analyzer 的分析结果可以看到如果对打包的文件进行压缩差异十分巨大所以首先考虑优化的手段就是文件压缩。 本文中将利用 compression-webpack-plugin 插件来实现Gzip压缩。 安装npm i compression-webpack-plugin -D 适用 const CompressionPlugin require(compression-webpack-plugin); module.exports {// ...configureWebpack: config {// ...config.plugins.push(new CompressionPlugin()); // 开启gzip压缩} }配置说明 // 只在生产环境配置Gzip压缩 if (process.env.NODE_ENV production) {new CompressionPlugin({filename: [path].gz[query], // 使得多个.gz文件合并成一个文件这种方式压缩后的文件少建议使用默认是[path][base].gzalgorithm: gzip, // 默认压缩算法是gziptest: /\.js$|\.css$|\.html$|\.ttf$|\.eot$|\.woff$/, // 使用正则给匹配到的文件做压缩这里是给html、css、js以及字体.ttf和.woff和.eot做压缩threshold: 10240, // 以字节为单位压缩超过此大小的文件使用默认值10240吧minRatio: 0.8, // 最小压缩比率官方默认0.8// 是否删除原有静态资源文件即只保留压缩后的.gz文件建议这个置为false还保留源文件。以防假如出现访问.gz文件访问不到的时候还可以访问源文件双重保障deleteOriginalAssets: false}) }但是要进行Gzip压缩同时必须要服务端支持也就是在服务器上进行配置。 比如Nginx服务器可配置大概如下 server {# ....gzip on; # 开启gzip压缩gzip_min_length 4k; # 小于4k的文件不会被压缩大于4k的文件才会去压缩gzip_buffers 16 8k; # 处理请求压缩的缓冲区数量和大小比如8k为单位申请16倍内存空间使用默认即可不用修改gzip_http_version 1.1; # 早期版本http不支持指定默认兼容不用修改gzip_comp_level 2; # gzip 压缩级别1-9理论上数字越大压缩的越好也越占用CPU时间。实际上超过2的再压缩只能压缩一点点了但是cpu确是有点浪费因为2就够用了# 压缩的文件类型MIME类型gzip_types text/plain application/x-javascript application/javascript text/javascript text/css application/xml application/x-httpd-php image/jpeg image/gif image/png application/vnd.ms-fontobject font/x-woff font/ttf;gzip_vary on; # 是否在http header中添加Vary: Accept-Encoding一般情况下建议开启 }参数详细说明 gzip是否开启gzip模块。gzip_disable指定哪些不需要gzip压缩的浏览器(将和User-Agents进行匹配)(IE5.5和IE6 SP1使用msie6参数来禁止gzip压缩)。gzip_vary增加响应头“Vary: Accept-Encoding”。gzip_proxiedNginx做为反向代理的时候启用 off关闭所有的代理结果数据压缩 expired如果header中包含“Expires”头信息启用压缩· no-cache如果header中包含“Cache-Control:no-cache”头信息启用压缩 no-store如果header中包含“Cache-Control:no-store”头信息启用压缩 private如果header中包含“Cache-Control:private”头信息启用压缩 no_last_modified如果header中包含“Last_Modified”头信息启用压缩 no_etag如果header中包含“ETag”头信息启用压缩 auth如果header中包含“Authorization”头信息启用压缩 any无条件压缩所有结果数据 gzip_comp_level设置gzip压缩等级范围是1-9等级越低压缩速度越快文件压缩比越小反之速度越慢文件压缩比越大。gzip_buffers设置用于处理请求压缩的缓冲区数量和大小。比如32 4K表示按照内存页one memory page大小以4K为单位即一个系统中内存页为4K申请32倍的内存空间。建议此项不设置使用默认值。gzip_http_version用于识别http协议的版本早期的浏览器不支持gzip压缩用户会看到乱码所以为了支持前期版本加了此选项。默认在http/1.0的协议下不开启gzip压缩。gzip_types设置需要压缩的MIME类型如果不在设置类型范围内的请求不进行压缩。 由于本次只是前端优化暂时没有服务端支持所以Gzip压缩效果暂时没办法测试。 3、配置devtool 在上文其实介绍过source map了但是只是建议对生产环境不需要map文件实际上也可以在生产环境生成map文件那么就可以参考以下配置和说明。 configureWebpack: config {// ...if (process.env.NODE_ENV production) {// 生产环境config[devtool] source-map; // 整个source map作为一个单独的文件生成。为bundle添加了一个引用注释以便开发工具知道在哪里可以找到它。} else {// 非生产环境config[devtool] eval;} }配置说明 开发环境的配置 eval每个模块都使用eval()执行并且都有// sourceURL。此选项会非常快地构建。主要缺点是由于会映射到转换后的代码而不是映射到原始代码没有从 loader 中获取 source map所以不能正确的显示行数。eval-source-map每个模块使用eval()执行并且 source map 转换为 DataUrl 后添加到eval()中。初始化 source map 时比较慢但是会在重新构建时提供比较快的速度并且生成实际的文件。行数能够正确映射因为会映射到原始代码中。它会生成用于开发环境的最佳品质的 source map。cheap-eval-source-map类似eval-source-map每个模块使用eval()执行。这是 “cheap(低开销)” 的 source map因为它没有生成列映射(column mapping)只是映射行数。它会忽略源自 loader 的 source map并且仅显示转译后的代码就像evaldevtool。cheap-module-eval-source-map类似cheap-eval-source-map并且在这种情况下源自 loader 的 source map 会得到更好的处理结果。然而loader source map 会被简化为每行一个映射(mapping)。 生产环境的配置 none:省略devtool选项不生成 source map。这是一个不错的选择。source-map整个 source map 作为一个单独的文件生成。它为 bundle 添加了一个引用注释以便开发工具知道在哪里可以找到它。hidden-source-map与source-map相同但不会为 bundle 添加引用注释。如果你只想 source map 映射那些源自错误报告的错误堆栈跟踪信息但不想为浏览器开发工具暴露你的 source map这个选项会很有用。nosources-source-map创建的 source map 不包含sourcesContent(源代码内容)。它可以用来映射客户端上的堆栈跟踪而无须暴露所有的源代码。你可以将 source map 文件部署到 web 服务器。 更多可查看官方https://webpack.js.org/configuration/devtool/ 4、适用 uglifyjs-webpack-plugin 压缩js 安装npm install uglifyjs-webpack-plugin --save-dev 使用 const UglifyJsPlugin require(uglifyjs-webpack-plugin); module.exports {config.plugins.push(new UglifyJsPlugin({uglifyOptions: {compress: {drop_debugger: true,drop_console: true, // 生产环境自动删除console},warnings: false,},sourceMap: false,parallel: true, // 使用多进程并行运行来提高构建速度。默认并发运行数os.cpus().length - 1。})) }官方更多字段说明https://www.npmjs.com/package/uglifyjs-webpack-plugin?activeTabreadme 5、chunks 分割 module.exports {configureWebpack: config {config.optimization {// 设置 tree-shakingusedExports: true, // 抽离公共的代码splitChunks: {chunks: all,cacheGroups: {common: {name: common, // 指定chunks名称minChunks: 1,test: /[\\/]node_modules[\\/]vue[\\/]|[\\/]node_modules[\\/]vue-router[\\/]|[\\/]node_modules[\\/]vuex[\\/]|[\\/]node_modules[\\/]axios[\\/]/,chunks: initial, // 仅限于最初依赖的第三方priority: -1, // 优先级数字越大优先级越高默认值为0自定义的一般是负数形式决定cacheGroups中相同条件下每个组执行的优先顺序。},elementUI: {name: elementUI,minChunks: 1,test: /[\\/]node_modules[\\/]_?element-ui[\\/]/,chunks: initial,priority: -2,reuseExistingChunk: true,enforce: true,},},},};} }splitChunks字段说明 chunks: async, // 需要进行分割的chunks可选值有asyncinitial和all minSize: 30000, // 新分离出的chunk必须大于等于minSize默认为30000约30kb。 minChunks: 1, // 一个模块至少应被minChunks个chunk所包含才能分割。默认为1。 maxAsyncRequests: 5, // 按需加载文件时并行请求的最大数目。默认为5。 maxInitialRequests: 3, // 加载入口文件时并行请求的最大数目。默认为3。 automaticNameDelimiter: ~, // 拆分出的chunk的名称连接符。默认为~。如chunk~vendors.js name: true, // 设置chunk的文件名。默认为true。当为true时splitChunks基于chunk和cacheGroups的key自动命名。 cacheGroups: {// cacheGroups 下可以可以配置多个组每个组根据test设置条件符合test条件的模块就分配到该组。// 模块可以被多个组引用但最终会根据priority来决定打包到哪个组中。// 默认将所有来自 node_modules目录的模块打包至vendors组将两个以上的chunk所共享的模块打包至default组。vendors: {test: /[\\/]node_modules[\\/]/,priority: -10}, default: {minChunks: 2,priority: -20,reuseExistingChunk: true} }webpack优化的措施还有使用CDN、使用缓存、设置预解析、优化图片/字体等等。 没有绝对的优化措施只有适合的方案 性能优化之路漫漫

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

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

相关文章

网站做虚假广告青海省建设监理协会网站

假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去。 给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花&…

城建公司建设网站基础资料wordpress底部添加菜单

题目 跳房子,也叫跳飞机,是—种世界性的儿童游戏,游戏参与者需要分多个回合按顺序跳到第1格直到房子的最后—格。跳房子的过程中,可以向前跳,也可以向后跳。 假设房子的总格数是count,小红每回合可能连续跳…

河东区腾讯网站建设怎么做网站的内部链接

UniApp是一个跨平台的应用开发框架,可以帮助开发者快速地在多个平台上构建应用程序。其中,实现路线规划是一个常见的需求,特别是对于地图类应用或者出行类应用来说,路线规划功能是非常重要的。 首先引入QQMapWX; impo…

如何判断网站是否被收录html5自学教程

在公司开发的时候遇到的一个很玄幻的问题,这个项目是21年开发的,现在我是24年中途二开增加新功能 这个项目经过多人之手,现在已经出现了问题------项目依赖安不上,我能启动完全是因为在23年的时候写这个项目的时候将依赖费九牛二虎之力下载好后打成了压缩包发给另外一个安不上依…

云抢购网官方网站北京信息发布平台

随着互联网应用的不断发展,网站的访问速度成为了用户体验的重要指标之一。为了解决网站访问速度过慢的问题,CDN(内容分发网络)技术被广泛应用。CDN作为一种分布式的网络架构,可以将静态资源如图片、视频、JS、CSS等内容…

建网站麻烦吗专业网站设计公司排名

返回:SQLite—系列文章目录 上一篇:SQLiteC/C接口详细介绍sqlite3_stmt类(四)- 下一篇: 无 12. sqlite3_bind_text16函数 sqlite3_bind_text16函数用于将UTF-16编码的文本数据(字符串)绑定…

传统pc网站货架网站开发

目录 描述 相关属性 使用 描述 盒子模型 例如下面房子模型 • Content 矩形区域: 存放控件内容.⽐如包含的⽂本/图标等. • Border 矩形区域: 控件的边框. • Padding 矩形区域: 内边距. 边框和内容之间的距离. • Margin 矩形区域: 外边距. 边框到控件 geometry 返回的矩形…

镇江网站制作哪家公司比较好我的小程序入口

基本概念:进程和程序的区别 :1、程序是静态概念,本身作为一种软件资源长期保存;而进程是程序的执行过程,它是动态概念,有一定的生命期,是动态产生和消亡的。2、程序和进程无一一对应关系。一个程…

怎么搭建自己的网站服务器南京公司网站建设怎么收费

Docker最全教程之MySQL容器化 (二十四) 原文:Docker最全教程之MySQL容器化 (二十四)前言 MySQL是目前最流行的开源的关系型数据库,MySQL的容器化之前有朋友投稿并且写过此块,本篇仅从笔者角…

中国建设银行对公网站网页在线生成app

1、表格插入 方法一:直接创建表添加 #导入库 from docx import Document #创建文档对象 document Document()#创建5行7列表格 table document.add_table(rows5, cols7)#修改第2行第3列单元格的内容为中国 table.cell(1,2).text中国 #修改第3行第4列单元格的内容…

网站上的彩票走势图是怎么做的wordpress 导入分类

JAR包正常的情况下出现 服务器没有找到驱动jar 报错Cannot load JDBC driver class com.mysql.jdbc.Driv 原因是没有把MYSQL驱动放在TOMCAT的LIB目录下 解决方法:把JDBC驱动放到Tomcat的common/lib下,重新启动服务器 转载于:https://www.cnblogs.com/leiteng/archiv…

个人团购网站 转入备案代账公司注册条件

损失函数(Loss Function)和代价函数(Cost Function)是同一个东西;例如:有一组样本数据,用f1(x),f2(x),f3(x)三个函数(模型)分别来拟合,三个函数的输出F(x)与真实值可能相同也可能不同,为了表示拟…

iis怎么部署网站用dz做网站怎么设置数据库

Filter 可认为是 Servlet的一种 “ 加强版 ”,它主要用于对用户请求进行预处理, 也可以对HttpServletResponse 进行后处理,是个典型的处理链。Filter 也可对用户请求生成响应,这一 点与Servlet 相同, 但实际上很少会使…

徐州模板网站wordpress默认动态路径

前言 最近在写一个项目,在写react的过程中遇到过很多坑,现在总结一下,为以后的项目作参考.另外借此项目来比较一下 vue.js 和 react.js 之间的一些异同. 先说说组件 刚刚开始写组件的时候,感觉难度不大(跟vue差不多)。最有意思的应该是jsx语法…

公司做网上推广哪家好seo排名优化教程

现在有一段时间,我正在研究“云”。 研究它的功能,它可以做什么,为什么我们应该切换到“云”,进行讨论,与RealDolmen的云专家maartenballiauw等人交谈。 我已经在Google App Engine(用于Java)上…

素材网站开发wordpress上传安装包

雨是柔弱的,是世界上最轻灵的东西,敲不响那钢筋水泥造的高楼。而瓦屋则不同,雨滴在上面,叮叮当当的,立即奏出悦耳的声音。身在小屋的人也就有了在雨中亲近自然的福气。而且在雨天睡觉是最舒服的了~在阴雨天气中最熟悉的…

电商网站开发平台有哪些北京 建公司网站要多少钱

JDK 11是预定被释放的一般可用性上周二,9月25日2018年2018年8月16日马克莱因霍尔德消息上OpenJDK的JDK-dev邮件列表宣布“ JDK 11现在在候选发布版阶段 。” 但是,Reinhold在2018年8月17日同一封邮件列表中的消息中提供了更新的详细信息,他在…

wordpress多站点 用户网站建设管理条例

创建并显示文本提示框、对话框和操作菜单。 说明 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 该模块不支持在UIAbility的文件声明处使用,即不能在UIAbility的生命周期中调用,需要在创建…

大学生如何建立网站网页设计与制作好学吗

身为一个伟大的程序员,我不允许你不懂isBlank和isEmpty的区别 正文 StrUtil.isBlank(message)和StrUtil.isEmpty(message)这两个方法都是用来检查一个字符串是否为空,但它们的行为是不同的: StrUtil.isEmpty(message):这个方法会检查字符串是…

wordpress仿站教程2016在网站建设中 为了防止工期拖延

引言 相信大家都玩过贪吃蛇这个游戏! 玩家控制一个不断移动的蛇形角色,在一个封闭空间内移动。随着时间推进,这个蛇形角色会逐渐增长,通常是通过吞食屏幕上出现的物品(如点或者其他标志)来实现。每当贪吃…