如何利用Facebook的create-react-app脚手架创建一个基于ant design mobile的项目

引言:

  create-react-app是Facebook发布的一款全局的命令行工具用来创建一个新的项目。

  通常我们开始做一个react web或者 app 项目的时候,都会自己利用 npm 或者 yarn 安装项目所需要的一些依赖,再写 webpack.config.js ,一系列复杂的配置,搭建好开发环境后写src源代码。

  现在,如果你想要搭建一个完整的 react 项目环境,已经不需要自己动手布置许许多多的东西,利用 create-react-app 工具,就能轻松帮你配置好一个 react 项目。

全局安装 create-react-app

1 npm i create-react-app -g

创建一个应用程序

1 create-react-app ProjectName

然后你可以看到创建完之后的目录结构

my-app/
--README.md
--node_modules/
--package.json
--.gitignore
--public/
-----favicon.ico
-----index.html
--src/
-----App.css
-----App.js
-----App.test.js
-----index.css
-----index.js
-----logo.svg

你会发现在整个项目文件夹中,并没有 webpack.config.js 文件,这时候你只需要在项目目录中执行 npm run eject 命令,你会看到他提示你 Are you sure you want to eject? This is permanent. 输入y 然后回车,打开项目文件夹你会发现多了两个目录( public 、 scripts),像这样:

试着运行一下项目,输入 npm run start 回车,浏览器会自动打开一个地址为 http://localhost:3000 的页面,端口号为3000.

到这里,一个react项目基本上已经搭建完成了,现在我们为项目引入 ant design mobile 框架。

使用yarn安装:
    yarn add antd-mobile
使用npm安装:
    npm install antd-mobile -D

安装其他的一些开发依赖

yarn add --dev babel-plugin-import [email protected]0.3.1 less less-loader postcss-pxtorem

接下来是项目的配置: 

  打开 config 文件夹中的 webpack.config.dev.js 文件,在 webpack.config.dev.js 中找到 exclude 追加两行代码,用于加载 less 和 svg 文件

module.exports = {
    module: {
        rules: [
            ...
            {
                exclude: [
                  /\.html$/,
                  /\.js$/,
                  /\.json$/,
                  /\.less$/,//追加
                  /\.svg$/,//追加
                ],
                ...
            }
        ]
    }
}

添加按需加载文件处理插件

module.exports = {
    module: {
        rules: [
            {
                test: /\.(js|jsx)$/,
                ...
                options: {
                  //追加
                  plugins: [
                    [‘import‘, { libraryName: ‘antd-mobile‘, style: true }],
                  ],
                  ...
                },
              },
        ]
    }
}

添加svg处理

module.exports = {
    module: {
        rules: [
            ...
            {
                test: /\.(svg)$/i,
                loader: ‘svg-sprite-loader‘,
                include: [
                  require.resolve(‘antd-mobile‘).replace(/warn\.js$/, ‘‘),  // antd-mobile使用的svg目录
                  path.resolve(__dirname, ‘../src/‘),  // 个人的svg文件目录,如果自己有svg需要在这里配置
                ]
              },
            ...
        ]
    }
}

添加less处理

module.exports = {
    module: {
        rules: [
            ...
             {
                test: /\.less$/,
                use: [
                  require.resolve(‘style-loader‘),
                  require.resolve(‘css-loader‘),
                  {
                    loader: require.resolve(‘postcss-loader‘),
                    options: {
                      ident: ‘postcss‘, // https://webpack.js.org/guides/migrating/#complex-options
                      plugins: () => [
                        autoprefixer({
                          browsers: [‘last 2 versions‘, ‘Firefox ESR‘, ‘> 1%‘, ‘ie >= 8‘, ‘iOS >= 8‘, ‘Android >= 4‘],
                        }),
                        pxtorem({ rootValue: 100, propWhiteList: [] })
                      ],
                    },
                  },
                  {
                    loader: require.resolve(‘less-loader‘),
                    options: {
                      modifyVars: { "@primary-color": "#1DA57A" },
                    },
                  },
                ],
              }
            ...
        ]
    }
}

在此之前必须要引入 postcss-pxtorem 模块,用于px转rem

const pxtorem = require(‘postcss-pxtorem‘);

重新启动项目,但是你会发现react的Logo没了。此时就轮到 antd-mobile 闪亮登场了。 

  在 src/App.js 中导入antd-mobileIcon,代码如下:

  

import React, { Component } from ‘react‘;
import {Icon} from ‘antd-mobile‘;
import logo from ‘./logo.svg‘;
import ‘./App.css‘;

class App extends Component {
  render() {
    return (
      <div className="App">
        <div className="App-header">
          <Icon type={logo} />
          <h2>Welcome to React</h2>
        </div>
        <p className="App-intro">
          To get started, edit <code>src/App.js</code> and save to reload.
        </p>
      </div>
    );
  }
}
export default App;

最后是使用antd-mobile提供的高清解决方案,你可以参考官方文档或者按照以下步骤:

  1.   下载未压缩的 viewport.js 或者在压缩版的 viewport.min.js
  2.   在 public 目录下的 index.html 中引入下载好的js,请内联写到所有 css 引用之前, 否则部分安卓机有问题,并且不要再设置meta标签的viewport
  3.   打开config/webpack.config.dev.js,新增一句代码
{
      test: /\.css$/,
      use: [
          require.resolve(‘style-loader‘), {
              loader: require.resolve(‘css-loader‘),
              options: {
                  importLoaders: 1,
              }
          }, {
              loader: require.resolve(‘postcss-loader‘),
              options: {
                  ident: ‘postcss‘,
                  plugins: () => [
                      require(‘postcss-flexbugs-fixes‘),
                      autoprefixer({
                          browsers: [
                              ‘>1%‘,
                              ‘last 4 versions‘,
                              ‘Firefox ESR‘,
                              ‘not ie < 9‘, // React doesn‘t support IE8 anyway
                          ],
                          flexbox: ‘no-2009‘,
                      }),
                      pxtorem({ rootValue: 100, propWhiteList: [] }) //新增
                  ],
              },
          },
      ],
  },

重启项目,你会发现css单位由px转为了rem。

  

时间: 2024-10-10 05:19:31

如何利用Facebook的create-react-app脚手架创建一个基于ant design mobile的项目的相关文章

React漫漫学习路之 利用Create React App命令创建一个React应用

所谓万事开头难,本文旨在为初探React的同学,建立第一个最基本的react应用. Create React App是Facebook官方的一个快速构建新的 React 单页面应用的脚手架工具,它可以帮你配置开发环境,以便你可以使用最新的 JavaScript 特性,还能提供很棒的开发体验,并为生产环境优化你的应用.(如果你使用过vue-cli构建vue应用,那么此处可类比) 话不多说,直接开始. 安装 全局安装create-react-app npm install -g create-rea

react用脚手架创建一个react项目

官网地址:https://react.docschina.org/ 确保本地安装了Node.js node的版本大于8.10    npm的版本大于5.6 1.在本地的某个位置创建一个文件夹,执行以下代码: npx create-react-app my-app(项目名称 可以自定义) 等待...... 创建好项目后,跳转到项目跟目录: cd my-app 然后运行项目: npm start 弹出这个页面代表项目已经创建好了! 原文地址:https://www.cnblogs.com/fqh12

使用 React 和 Flux 创建一个记事本应用

React,来自 Facebook,是一个用来创建用户界面的非常优秀的类库.唯一的问题是 React 不会关注于你的应用如何处理数据.大多数人把 React 当做 MV* 中的 V.所以,Facebook 引入了一种称作 Flux 的模式,提供了一个功能上的通道,可用于应用内的数据处理.这个教程简短的介绍了 Flux 模式并且展示了如何使用 React 和 Flux 架构搭建一个记事本应用. Flux 入门 Flux 依赖于一个单的数据流.在这个 Flux 模式中有两个关键的组件: Stores

如何用vue-cli3脚手架搭建一个基于ts的基础脚手架

目录 准备工作 搭建项目 vue 中 ts 语法 项目代理及 webpack 性能优化 其他 忙里偷闲,整理了一下关于如何借助 vue-cli3 搭建 ts + 装饰器 的脚手架,并如何自定义 webpack 配置,优化. 准备工作 @vue/[email protected] vue 2.6 node v12.13.0 安装 node 安装 node 全局安装 nrm,npm 的镜像源管理工具. npm i nrm -g // 安装 nrm ls // 查看可用源,及当前源,带*的是当前使用的

[React] {svg, css module, sass} support in Create React App 2.0

create-react-app version 2.0 added a lot of new features. One of the new features is added the svgr webpack loader to wrap SVGs in React components as a named export. This let’s you either grab the filename from the default export or grab a wrapped S

create react app遇到的问题

我现在想的是吧 static 资源和动态 api 来分开处理, static 资源开启 nginx 服务器,api 请求由 express 完成, 现在的问题是开发的时候 proxy 设定将所有的请求都代理到了 express 的端口,甚至于 <a></a> 元素的链接也被代理到 express 的端口了,在这个页面根本获取不到 nginx 提供的资源.

脚手架创建一个React项目

一.安装 1.安装node.js 官网地址 https://nodejs.org/en/ 进入后点击下载,官方网站会根据你的系统类型推荐最适合你安装的版本.(如果已经安装了node.js跳过此步)如下图 : 点击即可下载. 检测node.js是否安装成功,最直接有效的办法就是在命令提示符中输入 node -v 如下图 如果出现node的版本号则表示安装成功,可以看到我的node版本是10.15.3. 2.全局安装: 安装淘宝镜像 这样做的目的是使用国内的服务器下载速度快一点. npm insta

iOS9中如何在日历App中创建一个任意时间之前开始的提醒(二)

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 接上一篇,我们来看一下如何根据类型和名称找到一个特定的日历源,首先我们写一个帮助方法: -(EKSource*)sourceInEventStore:(EKEventStore*)store sourceType:(EKSourceType)type sourceTitle:(NSString*)title{ for (EKSource *source in

2.如何用vue-cli3.x脚手架创建一个项目

在合适的文件夹选择cmd窗口运行 vue init webpack my-first 出现下面的问题说明之前的vue init创建命令不能用了,现在3.xx了首先命令行输入vue -V 查看版本号vue init webpack hello-world 已经替换为 vue create hello-world按<上下键>移动,按<space>进行是否选定[空格键选择],按<a>切换所有,按<i>反转选择default是默认配置manually自定义配置一般选