umi黑科技:把静态文件打包进静态网页中:P

news2024/11/24 6:46:20

为了能够跨平台通用,我现在很多工具都需要用JS进行开发。
比如我之前研究了半天的JS版本的报表工具。
但是这其中有个问题我没办法解决,就是有一些设置信息或者是模板文件需要一起打包进静态的页面中。
今天解决了这个问题,记录一下方法。

1. 成果展示

build打包后可以在static文件夹下看到我们的zip文件
在这里插入图片描述
通过本地路径打开index文件,点击下载链接
在这里插入图片描述
成功下载目标文件
在这里插入图片描述
Byebye,Nginx。

2.引用文件,设置下载链接

设置一下a标签

<a href={'./static/attach/setting.zip'} src={require('./public/setting.zip')} target='_blank' >模板文件下载</a>

src这里是告诉umi去打包pubilc文件夹下的settting.zip文件,必须要有这个信息,如果没有写这个文件不会进行打包
href写的是最终的打包出来的地址。

在这里插入图片描述
文件放在public路径中

3.修改打包配置

// .umirc.ts
const assetDir = "static";
export default defineConfig({
  nodeModulesTransform: {
    type: 'none',
  },
  routes: [{ path: '/', component: '@/pages/bbgj/index' }],
  // 单机版start
  history: { type: 'hash' },
  base: './',
  hash: true,
  // 单机版end

  // 网页版start
  // base: '/static/bbgj/',
  // fastRefresh: {},
  // exportStatic: { htmlSuffix: true },
  // 网页版end

  publicPath: './',
  title: '报表工具箱',
  chainWebpack(config, { env, webpack, createCSSRule }) {
    // 修改svg输出目录
    config.module
      .rule("zip")
      .test(/\.(zip)(\?.*)?$/)
      .use("file-loader")
      .loader(require.resolve("file-loader"))
      .tap((options) => ({
        ...options,
        name: assetDir + "/attach/[name].[ext]",
      }));
  },
  // 判断浏览器是否为ie的附加代码,有些问题,会EDGE也识别成IE,而实际EDGE是可以运行的
  scripts: [
    `
  function IEVersion() {
    var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
    var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1; //判断是否IE<11浏览器
    var isEdge = userAgent.indexOf("Edge") > -1 && !isIE; //判断是否IE的Edge浏览器
    var isIE11 = userAgent.indexOf('Trident') > -1 && userAgent.indexOf("rv:11.0") > -1;
    if(isIE) {
      var reIE = new RegExp("MSIE (\\d+\\.\\d+);");
      reIE.test(userAgent);
      var fIEVersion = parseFloat(RegExp["$1"]);
      if(fIEVersion == 7) {
        return 7;
      } else if(fIEVersion == 8) {
        return 8;
      } else if(fIEVersion == 9) {
        return 9;
      } else if(fIEVersion == 10) {
        return 10;
      } else {
        return 6;//IE版本<=7
      }
    } else if(isEdge) {
      return 'edge';//edge
    } else if(isIE11) {
      return 11; //IE11
    }else{
      return -1;//不是ie浏览器
    }
  }
  if(IEVersion() !== -1){
    alert('不支持当前浏览器,请用使用谷歌浏览器内核的浏览器打开本网页')
  }
  `,
  ],
});

重点为:

chainWebpack(config, { env, webpack, createCSSRule }) {
    // 修改svg输出目录
    config.module
      .rule("zip") 
      .test(/\.(zip)(\?.*)?$/)
      .use("file-loader")
      .loader(require.resolve("file-loader"))
      .tap((options) => ({
        ...options,
        name: assetDir + "/attach/[name].[ext]",
      }));
  },

这个配置信息还是好懂的,直接运行你可能会遇到下面这个错误:
Error: Cannot find module 'file-loader'
也好解决,装个file-loader就行了。
yarn add file-loader

4.参考链接:

1.umi打包配置(原文版本过老,具体修改位置请查看正文)
https://blog.csdn.net/qq_39953537/article/details/107507724
2.解决file-loader问题
https://blog.csdn.net/lzc2644481789/article/details/107774982

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

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

相关文章

Android 13 Launcher——屏蔽长按非icon区域出现弹窗

目录 一.背景 二.屏蔽此功能 一.背景 长按Launcher非icon区域也是会有弹窗的&#xff0c;会显示小组件等信息&#xff0c;定制开发要求长按非icon区域不要弹窗&#xff0c;我们来实现此功能&#xff0c;先看下未修改前的长按非icon区域的效果 如上图可以看出长按功能显示出壁…

计网实验第三章:UDP

问题集1 问题一 问题参考Wireshark的报文内容字段的显示信息 在这个数据包中&#xff0c;确定每个UDP报头字段的长度(以字节为单位) 答&#xff1a;96 bytes 问题二 长度字段中的值是什么的长度?你可以参考课文 这个答案)。用捕获的UDP数据包验证您的声明。 答&#xff1…

Cesium相机理解

关于cesium相机&#xff0c;包括里面内部原理网上有很多人讲的都很清楚了&#xff0c;我感觉这两个人写的都挺好得&#xff1a; 相机 Camera | Cesium 入门教程 (syzdev.cn) Cesium中的相机—setView&lookAtTransform_cesium setview_云上飞47636962的博客-CSDN博客上面这…

培训报名小程序报名确认开发

目录 1 创建页面2 创建URL参数3 信息展示4 消息订阅5 页面传参6 程序预览总结 我们上一篇介绍了报名功能的开发&#xff0c;在用户报名成功后需要展示报名的确认信息&#xff0c;如果信息无误提示用户支付&#xff0c;在支付之前需要让用户进行授权&#xff0c;允许小程序给用户…

打破传统直播,最新数字化升级3DVR全景直播

导语&#xff1a; 近年来&#xff0c;随着科技的不断创新和发展&#xff0c;传媒领域也正经历着一场前所未有的变革。在这个数字化时代&#xff0c;直播已经不再仅仅是在屏幕上看到一些人的视频&#xff0c;而是将观众带入一个真实世界的全新体验。其中&#xff0c;3DVR全景直…

Windows11右键菜单

刚开始使用Windows11时&#xff0c;新的右键菜单用起来很不习惯。 记录一下修改和恢复Windows11的右键菜单的方法。 1.Win11切换到旧版右键菜单&#xff1a; 方法&#xff1a;WinR打开CMD&#xff0c;运行下面的命令行 添加注册列表重启Windows资源管理器 reg add "HKC…

elevation mapping学习笔记3之使用D435i相机离线或在线订阅点云和tf关系生成高程图

文章目录 0 引言1 数据1.1 D435i相机配置1.2 协方差位姿1.3 tf 关系2 离线demo2.1 yaml配置文件2.2 launch启动文件2.3 数据录制2.4 离线加载点云生成高程图3 在线demo3.1 launch启动文件3.2 CMakeLists.txt3.3 在线加载点云生成高程图0 引言 elevation mapping学习笔记1已经成…

内网穿透:如何通过公网访问本地Web服务器?

文章目录 前言1. 首先安装PHPStudy2.下载一个开源的网页文件3. 选择“创建网站”并将网页内容指向下载好的开源网页文件4. 打开本地网页5. 打开本地cpolar客户端6. 保存隧道设置 生成数据隧道 前言 随着科技进步和时代发展&#xff0c;计算机及互联网已经深深融入我们的生活和…

Activiti7工作流

一、Activiti7概述 官网地址&#xff1a;https://www.activiti.org/ Activiti由Alfresco软件开发&#xff0c;目前最高版本Activiti 7。是BPMN的一个基于java的软件实现&#xff0c;不过 Activiti 不仅仅包括BPMN&#xff0c;还有DMN决策表和CMMN Case管理引擎&#xff0c;并且…

5个最流行的免费AI应用托管平台

完成机器学习项目后&#xff0c;是时候展示你的模型的性能了。 你可以创建前端应用程序或使用 REST API。 随着 Streamlit、Gradio 和 FAST API 的引入&#xff0c;创建前端应用程序变得无忧无虑。 这些 Web 框架需要几行代码来创建交互式用户界面。 与公众分享你的工作有助于你…

0-1搭建vue项目工程

一、下载node.js 简单介绍&#xff1a; Node.js是一个基于V8引擎的JavaScript运行时环境&#xff0c;它允许开发者在服务器端使用JavaScript进行开发。Node.js是一个非常强大的工具&#xff0c;可以帮助开发者构建高性能、可扩展的Web应用程序&#xff0c;并且可以与各种技术…

使用appuploader工具流程(Windows版本)

转载&#xff1a;使用appuploader工具流程&#xff08;Windows版本&#xff09; 目录 转载&#xff1a;使用appuploader工具流程&#xff08;Windows版本&#xff09; 一.登录apple官网&#xff0c;注册账号 二.下载Appuploader和登录 三.bundle ID 四.设备管理 五.证书管…

【python】 油管外挂字幕下载位srt歌词字幕文本文件

【python】 油管外挂字幕下载位srt文本文件 案例截图 案例代码 # python程序&#xff0c;可以下youtube视频的字幕文件。输入一个视频的url&#xff0c;就会下载它的字幕文件到一个文件夹里。 # Author WeChat:****请私信, # Date:2023-8-2, # Email:ack1024#hotmail.com # 本…

全国首创!法大大助力深圳率先在企业开办领域引入音视频双录签名模式

为了进一步规范市场主体登记行为&#xff0c;提高企业办事便利度&#xff0c;近日深圳引入录音录像双录签名新模式&#xff0c;实现用户无介质全流程快捷申报&#xff0c;进一步降低了开办企业成本&#xff0c;为企业开办注入加速度。 无需法人、监事等企业负责人再到业务办理大…

Python - series和dataframe的关系

目录 1 series和dataframe的关系 2 创建一个df 3 用index过滤不同行 4 用row 过滤 5 用series构建dataframe 1 series和dataframe的关系 类似集合与元素的关系DataFrame中的一行or一列的取值&#xff0c;返回的结果都是series通过几个series&#xff0c;可以创建一个da…

Redis的安装方法与基本操作

目录 前言 一、REDIS概述 二、REDIS安装 1、编译安装 2.yum安装 三、Redis的目录结构 四、基础命令解析 五、在一台服务器上启动多个redis 六、数据库的基本操作 &#xff08;一&#xff09;登录数据库 &#xff08;二&#xff09;基础命令 七、Redis持久化 &#xff08;一&…

【EI复现】梯级水光互补系统最大化可消纳电量期望短期优化调度模型(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Tomcat线程池原理

1. 一个 SpringBoot 项目能同时处理多少请求&#xff1f;tomcat容器&#xff0c; 200 次。 2. 怎么来的&#xff1f; 而点击这些线程&#xff0c;查看其堆栈消息&#xff0c;可以看到 Tomcat、threads、ThreadPoolExecutor 等关键字 基于“短时间内有 200 个请求被立马处理…

【Docker】Docker中network的概要、常用命令、网络模式以及底层ip和容器映射变化的详细讲解

&#x1f680;欢迎来到本文&#x1f680; &#x1f349;个人简介&#xff1a;陈童学哦&#xff0c;目前学习C/C、算法、Python、Java等方向&#xff0c;一个正在慢慢前行的普通人。 &#x1f3c0;系列专栏&#xff1a;陈童学的日记 &#x1f4a1;其他专栏&#xff1a;CSTL&…

Java课题笔记~ 关于错误与异常

非检查异常(unckecked exception)&#xff1a;Error 和 RuntimeException 以及他们的子类。javac在编译时&#xff0c;不会提示和发现这样的异常&#xff0c;不要求程序员必须处理这些异常。在运行阶段&#xff0c;倘若发生Error则虚拟机几乎崩溃&#xff0c;倘若发生RuntimeEx…