React手机端如何在umi框架如何自定义 HTML 模板

文章讲述了在使用Umi框架构建手机端项目时遇到的Rem单位失效问题,以及如何通过创建plugin.ts文件并利用Umi的API进行JS注入来解决这个问题。代码示例展示了如何设置font-size以确保Rem的正确计算。
摘要由CSDN通过智能技术生成
umi官方链接说明https://github.com/umijs/umi-next/issues/868#issuecomment-1151088426

碰到这个问题是由于我在起一个手机端项目的时候无法从js标签注入模板,导致了前端手机端的rem失效问题

根据官方给的链接和例子,我在最外层创建了一个plugin.ts的文件进行注入(这边js官方也说是可以的但不知道为什么我那时候用js不行)

一开始我用的js不知道什么原因失效,改成ts文件就可以了,这边我注入的标准为50px=1rem

废话不多说上代码

将以下代码进行注入即可进行手机端前端的rem设计
(function (n, e) {
    var t = n.documentElement,
      i = 'orientationchange' in window ? 'orientationchange' : 'resize',
      d = function () {
        var n = t.clientWidth;
        n && (t.style.fontSize = n / 7.5 + 'px');
      };
    n.addEventListener &&
      (e.addEventListener(i, d, !1), n.addEventListener('DOMContentLoaded', d, !1));
  })(document, window);
另外附带上官方例子
import { IApi } from 'umi';

export default (api: IApi) => {
  api.modifyHTML(($) => {
    return $;
  });
  api.addHTMLMetas(() => [{ name: 'foo', content: 'bar' }]);
  api.addHTMLLinks(() => [{ rel: 'foo', content: 'bar' }]);
  api.addHTMLStyles(() => [`body { color: red; }`]);
  api.addHTMLHeadScripts(() => [`console.log('hello world from head')`]);
  api.addHTMLScripts(() => [`console.log('hello world')`]);
  api.addEntryCodeAhead(() => [`console.log('entry code ahead')`]);
  api.addEntryCode(() => [`console.log('entry code')`]);
  api.onDevCompileDone((opts) => {
    opts;
    // console.log('> onDevCompileDone', opts.isFirstCompile);
  });
  api.onBuildComplete((opts) => {
    opts;
    // console.log('> onBuildComplete', opts.isFirstCompile);
  });
  api.chainWebpack((memo) => {
    memo;
  });
  api.onStart(() => {});
  api.onCheckCode((args) => {
    args;
    // console.log('> onCheckCode', args);
  });
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值