2026/1/23 2:28:00
网站建设
项目流程
网站开发w亿玛酷1流量订制,宿州专业网站建设,公众号取名简单大气,wordpress函数文件夹工具亮点使用简单本软件只有一个 BlazorWASMPackager.html 文件#xff0c;BlazorWASMPackager-en.html 为其英文版本。将 HTML 文件直接放置在 Blazor WebAssembly 程序发布后的根目录下#xff08;一般为 wwwroot 目录#xff09;#xff0c;用主流浏览器打开即可使用BlazorWASMPackager-en.html 为其英文版本。将 HTML 文件直接放置在 Blazor WebAssembly 程序发布后的根目录下一般为 wwwroot 目录用主流浏览器打开即可使用不依赖任何第三方软件。核心特性提供可视化进度反馈和详细处理日志支持自定义输出文件名和脚本合并规则突破跨域与本地运行限制解决传统 Blazor WASM 应用的跨域资源调用问题CORS通过资源内嵌避免跨域请求支持直接从本地文件系统启动应用file:// 协议无需依赖 Web 服务器适用于离线场景或本地演示环境无需配置服务器跨域策略简化部署流程将数十甚至上百个分散的资源文件合并为单个 JS 文件减少部署文件数量简化软件文件部署、网络缓存、版本升级和回滚等工作降低多文件传输时的网络请求开销减少网络防火墙或代理对多文件请求的限制风险提升加载性能对所有资源进行最大级别 GZIP 压缩显著减小传输体积减少 HTTP 请求次数降低网络延迟影响支持自定义脚本精简移除冗余代码增强部署灵活性生成的单一文件可轻松集成到各种静态资源托管服务支持微前端架构MicroApp / QianKun的环境适配便于版本管理和缓存策略实施我是如何开发这个软件的本工具借助于豆包 AIhttps://www.doubao.com开发完成。首先笔者使用了以下提示词逐步创建 HTML 文件的主体生成一个HTML页面包含JS代码实现以下功能解析当前路径下的 _framework/blazor.boot.json 文件解析其中的 resources/runtime|assembly|runtimeAssets|pdb 节点下的属性名以这个属性名来当做文件名然后下载这些文件获得二进制内容使用GZIP压缩然后转换为base64字符串。base64字符串换行每行128个字符创建一个新字符串采用JavaScript格式。然后定义 window.__DCFileContents {文件名:base64字符串}界面上提供一个下载按钮以js的minitype加载生成的js字符串不要使用pako直接使用浏览器内置的GZIP模块这是一个blazor wasm的程序打包器修改HTML的文字说明base64字符串不能太长128个字符就自动换行而且输出文本时自动追加显示在最下面。每次生成前先清空调试输出文本的界面然后调试输出文本开始追加显示不要输出base64的内容预览去掉当前的调试文本只保留下方的调试文本追加方式输出调试输出文本框宽度为100%下方添加一个进度条。中间的status元素去掉调试输出文本框有个初始化的固定宽度进度条中间显示进度文本提示信息。添加版权信息南京都昌信息科技有限公司版权所有修改 uint8ArrayToBase64()在这里每32个字节进行一次转换然后添加换行回车符在这里面直接生成带换行的BASE64字符串进度条文本左对齐uint8ArrayToBase64() 里面每组字节是129个避免base64转换长度不匹配不要使用json中间格式转换直接拼接生成JS字符串对于base64字符串输出采用 格式避免 \n 转义字符JS中直接输出换行的BASE64字符串这里的字节长度都格式化输出按照大小输出KB,MB单位。精确到小数点后2位。打包时把 blazor.boot.json也包含进去。GZIP采用最大压缩比率。总结报告中添加手动点击下载链接。处理完成后进度条重置。进度条颜色调整一下蓝色背景黑字看不清楚生成的JS文件名采用 blazor.boot.json 下面的 entryAssembly 数值加上 .published.js 后缀不能跳过hash为空的文件要无条件处理所有的文件放一个多行文本框让用户输入几个JS文件名然后打包时将_framework目录下这些JS文件读取出来合并成一个Merge.js并参与打包。如果用户未指定则不生成Merge.jsboot.json里面列出的js是要强制打包的不是合并到merge.js中。文本框中是让用户输入自定义脚本.js文件名。另外最终生成的js文件第一行要显示当前日期和时间添加一个勾选框让用户选择是否删除merge.js中的注释和无意义的空格放一个单行文本框用于输入自定义的最终JS文件名如果为空则采用默认的文件名简化调试输出文本默认不精简merge.js空格和注释。要确保merge.js精简结果是正确的JS中的字符串要考虑到 这种多行字符串还有JS代码中会出现正则表达式也不能破坏掉通过 AI 创建了初步版本后笔者手动进行了后续的修改和优化最终形成了现在的版本。代码执行过程初始化阶段页面加载准备初始化 DOM 元素引用进度条、日志区、按钮等交互组件重置进度条状态为准备就绪0%清空日志输出区域禁用下载按钮防止重复点击用户参数收集读取输出文件名输入框内容为空时将使用默认命名规则解析自定义 JS 文件列表每行一个路径相对 _framework 目录检查精简自定义脚本复选框状态决定是否移除注释和冗余空格核心处理流程浏览器兼容性验证检测当前浏览器是否支持 CompressionStream API用于 GZIP 压缩。不支持时终止流程并提示请使用最新版 Chrome、Edge 或 Firefox 浏览器。解析应用配置文件下载配置文件发送请求获取 _framework/blazor.boot.jsonBlazor 应用的核心配置记录配置文件原始大小并计入总统计下载失败如 404 错误时终止流程日志显示具体错误信息解析配置内容解析 JSON 格式的配置数据提取 resources 字段中所有资源路径包括 runtime、assembly、jsModule 等类型提取 entryAssembly 值用于生成默认输出文件名进度条更新至 10%日志显示配置文件解析完成处理核心资源文件任务准备收集需处理的资源文件列表包含 blazor.webassembly.js 等核心文件根据文件数量计算单个文件的进度占比总进度 75% 平分逐个处理资源循环处理每个资源文件构造完整 URL_framework/[文件名]下载文件并转换为 Uint8Array 格式记录原始文件大小累加至总原始大小使用 gzipCompress() 函数进行最大级别level:9压缩将压缩后的数据转换为 Base64 编码按 129 字节分块处理生成包含文件名和 Base64 内容的条目实时更新进度条如处理 3/20dotnet.wasm单个文件处理失败时记录日志并跳过不终止整体流程处理自定义 JS 文件可选输入解析过滤空行和无效路径获取有效自定义 JS 文件列表列表为空时日志显示未指定自定义 JS 文件不生成 Merge.js并跳过合并与处理逐个下载指定的自定义 JS 文件记录每个文件原始大小启用精简时使用 minifyJs() 处理保留模板字符串和正则表达式合并内容添加来源注释除非启用精简对合并内容进行 GZIP 压缩并转换为 Base64 编码生成 Merge.js 条目并添加到资源列表生成输出文件内容构建首行添加生成时间注释格式// Generated on: YYYY-MM-DD HH:MM:SS创建包含所有资源的 JavaScript 对象键为文件名值为 Base64 内容生成自执行函数包含资源解压逻辑使用 DecompressionStream 处理 GZIP 数据Blazor 启动配置覆盖 loadBootResource 方法注入本地资源临时 URL 清理逻辑释放内存占用文件名处理优先使用用户指定文件名需包含 .js 扩展名未指定时使用规则[entryAssembly].published.js无 entryAssembly 时默认使用 blazor-resources.published.js生成下载链接统计信息计算原始总大小所有资源配置文件自定义脚本的原始大小总和生成文件大小最终 JS 文件的 UTF-8 编码字节数压缩比率(生成文件大小 / 原始总大小) × 100%创建下载将 JS 内容转换为 Blob 对象MIME 类型application/javascript生成临时下载 URLURL.createObjectURL自动触发下载并显示总结报告含大小统计和压缩比率提供手动下载链接应对自动下载失败场景异常处理与优化错误处理机制单个资源下载失败记录日志并跳过继续处理其他文件关键文件如 blazor.boot.json失败终止流程并显示错误页面卸载时清理临时资源链接URL.revokeObjectURL性能优化细节大文件采用流式压缩降低内存占用Base64 编码分块处理避免单行过长针对 .NET 8/9 版本的 runtime 做适配处理自定义 JS 精简保留关键语法结构模板字符串、正则表达式