从零开始搭建react项目

1. 快速搭建:

  • npx
npx create-react-app my-app
cd my-app
npm start

npx 附带npm 5.2及更高版本,请参阅旧版本npm版本的说明。

  • npm
npm init react-app my-app
// npm init <initializer>在npm 6+中可用
cd my-app
npm start
  • Yarn
yarn create react-app my-app
// yarn create在Yarn 0.25+的版本可使用
cd my-app
yarn start

此时项目已运行起来,当您需要部署线上时,运行npm run buildyarn build

运行 npm run ejectyarn eject命令,将所有的配置文件暴露出来

2. 安装antd

antd官网有详细介绍

npm install antd --save
或
yarn add antd

安装之后,一般项目都是使用按需引入加载,并在config的文件对其进行配置才可以使用

npm install babel-plugin-import --save-dev
或
yarn add babel-plugin-import --dev

// babel-plugin-import 会帮助你加载 JS 和 CSS
import { DatePicker } from 'antd';

修改/config/webpack.config.js文件中module:{ }找到加载babel-loader,往他的 plugins 加入如下代码
最后配置文件如下:

module: {
      strictExportPresence: true,
      rules: [
          {
          oneOf: [
              {
              test: /\.(js|mjs|jsx|ts|tsx)$/,
              include: paths.appSrc,
              loader: require.resolve('babel-loader'),
              options: {
                customize: require.resolve(
                  'babel-preset-react-app/webpack-overrides'
                ),
                
                plugins: [
                  [
                    require.resolve('babel-plugin-named-asset-import'),
                    {
                      loaderMap: {
                        svg: {
                          ReactComponent: '@svgr/webpack?-svgo,+ref![path]',
                        },
                      },
                    },
                  ],
                  ["import", {
                    "libraryName": "antd",
                    "libraryDirectory": "es",
                    "style": "css" // `style: true` 会加载 less 文件
                  }]
                ],
              },
            },
            ]
          }
      ],
}

按需加载,无需单独引入样式,babel-plugin-import 会帮助你加载 JS 和 CSS

  • 还可以在package.json文件中进行配置antd:
 "babel": {
    "presets": [
      "react-app"
    ],
    "plugins": [
      ["import", { "libraryName": "antd-mobile", "style": "css" }], 
      "transform-decorators-legacy"    // redux 装饰器
    ]
  }

安装mongodb

首先安装homebrew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

brew update
brew install mongodb   // brew安装
sudo mkdir -p /data/db
mongod  // 运行
mongod和mongo   // mongod和mongo需要运行在不同的两个窗口

mongodmongo两个命令需运行在两个窗口运行,否则会报错如下:

MongoDB shell version v4.0.3
connecting to: mongodb://127.0.0.1:27017
2019-03-26T16:35:29.439+0800 E QUERY    [js] Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed: SocketException: Error connecting to 127.0.0.1:27017 :: caused by :: Connection refused :
connect@src/mongo/shell/mongo.js:257:13
@(connect):1:6
exception: connect failed

安装nodemon

监听路由和相应内容,使用nodemon自动重启 npm install -g nodemon

安装react-router

  • npm install react-router-dom --save
  • router4使用react-router-dom作为浏览器端的路由
  • BrowserRouter,包裹整个应用
  • url参数,route组件参数可用冒号标识参数
    <Route path='/:location' conponent={Test}></Route>
  • redirect组件跳转
  • <Switch>是唯一的因为它仅仅只会渲染第一个匹配的路径

基于cookie用户验证

  • express依赖cookie-parser,需要npm install cookie-parser --save安装


    登录

在项目中使用相对路径 "@"

项目中经常需要引入文件,但是采用绝对路径就很麻烦,而且代码也不简洁,最好就是采用相对路径,在webpack.confijg.js中配置如下:

resolve: { 
  alias: {
        '@': paths.appSrc  // 加入这句话即可
  }
}

修改项目端口

在start.js文件中 DEFAULT_PORT 为端口变量

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,440评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,814评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,427评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,710评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,625评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,014评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,511评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,162评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,311评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,262评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,278评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,989评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,583评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,664评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,904评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,274评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,856评论 2 339

推荐阅读更多精彩内容