ant-design-mobile框架踩坑(一)

一直在用ant.design桌面版,现在推出了移动版,必须研究一下,但是这不看不要紧,一看就遇到了好多坑,好多坑···

1.根据官方文档,使用dva脚手架生成项目目录,这样简单一些,如果你喜欢自己创建文件夹的感觉,你也可以自己创建自己的目录结构。由于是试验可用性,我就用了dva生成了个目录结构;

$ dva new mobileApp

创建完成后,已经是npm install过了,所以不需要重新下载依赖。

2.按需加载ant mobile组价的js和css。

首先安装依赖

$ npm install antd-mobile babel-plugin-import --save

修改roadhog(可以理解为简化版的webpack)的配置文件.roadhogrc文件:

{
  "entry": "src/index.js",
  "env": {
    "development": {
      "extraBabelPlugins": [
        "dva-hmr",
          "transform-runtime",
             ["import", { "libraryName": "antd-mobile", "style": "css" }]
      ]
    },
    "production": {
      "extraBabelPlugins": [
     "transform-runtime",
      ["import", { "libraryName": "antd-mobile", "style": "css" }]
      ]
    }
  }
}

3.配置支持Icon,这个真是很重要的,也是很有用的,在移动端,如果没有Icon,那是多么的痛苦;
这个配置在官网说的不是很清楚,首先解释下,roadhog这个没有处理Icon的功能,但是他有webpack的接口,也自动寻找项目根目录下的webpack.config.js文件,读取里面的配置;所以通过在项目根目录中添加webpack.config.js文件来配置Icon的svg的loader。(真是神坑啊)

const path = require('path');

module.exports = function(webpackConfig, env) {
  const svgDirs = [
    require.resolve('antd-mobile').replace(/warn\.js$/, ''),  // 1. 属于 antd-mobile 内置 svg 文件
    // path.resolve(__dirname, 'src/assets'),  // 2. 自己私人的 svg 存放目录
  ];

  // 因为一个 SVG 文件不能被处理两遍. 在 atool-build 默认为 svg配置的svg-url-loade 里 exclude 掉需要 svg-sprite-loader处理的目录
  // https://github.com/ant-tool/atool-build/blob/master/src/getWebpackCommonConfig.js#L162
  // https://github.com/kisenka/svg-sprite-loader/issues/4
  webpackConfig.module.loaders.forEach(loader => {
    if (loader.test && typeof loader.test.test === 'function' && loader.test.test('.svg')) {
      loader.exclude = svgDirs;
    }
  });
  // 4. 配置 webpack loader
  webpackConfig.module.loaders.unshift({
    test: /\.(svg)$/i,
    loader: 'svg-sprite',
    include: svgDirs, // 把 svgDirs 路径下的所有 svg 文件交给 svg-sprite-loader 插件处理
  });

  return webpackConfig;
}
这里配置完了,运行的话,还是不行,你会发现没有安装`svg-sprite-loader`,新想这个简单,直接npm install安装就好了,安装结束后,再运行,还是报错,经错查资料发现:如果你的ant-mobile的版本是`1.x`的话`svg-sprite-loader`的版本必须是`svg-sprite-loader@^0.3.1`。
······
可是目前ant mobile的最高版本才是1.6啊亲。

所以:
$ npm install svg-sprite-loader@0.3.1 --save-dev

4.配置玩这些,你就可以写个demo了,但是这里又出现了问题,为毛我打开浏览器手机模式后,页面中的字体,图标都大一倍。机智的我想到的肯定是viewport的问题。所以index.html中的修改:

将生成的publick/index.html文件中的viewport修改成:

<meta name="viewport" content="width=device-width,minimum-scale=0.5,maximum-scale=0.5,user-scalable=no">

好了,这个就可以了。

ant mobile还有个高清方案,这个也是全都是坑,请看下一篇博客。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用,在安装@ant-design/react-native时,不再需要手动链接(@ant-design/icons-react-native),而是可以使用自动链接功能。只需要使用命令`npm install @ant-design/icons-react-native --save-dev`来安装@ant-design/icons-react-native即可。此外,可以在`node_modules/@ant-design`文件夹下找到安装的文件。 根据引用,可以使用命令`react-native -v`来检查是否成功安装了react-native。 根据引用,示例代码展示了如何全局使用ant-design-mobile组件。官方文档中的示例是按需引入的,如果要全局使用,需要手动引入相应的组件文件。示例代码中引入了Button和InputItem组件,并在App组件中使用了这些组件。 所以,ant-design-mobile是一个基于React Native的UI组件库,可以通过自动链接或手动引入组件文件的方式来使用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [react native 0.70版本使用ant-design-mobile-rn及icons字体图标库](https://blog.csdn.net/weixin_43233914/article/details/126849915)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [react native 使用ant-design-mobile-rn的icon字体库](https://blog.csdn.net/weixin_43233914/article/details/119450451)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值