安装

在最初的阶段,可以使用在线编辑的网站来学习React基本的语法。

从 Hello World 开始,可以在Codepen,或者codesandbox上进行编写。

当然,也可以使用npm或者yarn来安装依赖,本地进行开发。

这里先讲解通过create-react-app来创建一个React项目,后面会详细讲解如何用webpack创建一个react项目。

create-react-app

详细文档可以去github查看https://github.com/facebook/create-react-app

Node和Npm

首先安装Node.js,这个直接在Node官网下载安装包即可。建议下载长期支持版,bug会较少。

安装完毕后,在终端或者cmd里输入

npm -v

如果要使用npx,确保npm的版本大于5.2。如果npm版本较低,使用

npm i -g npm

更新npm到最新版,就可以使用npx了。有关npx的详细信息,可以查看这篇文章

如果使用yarn,也可以自行去yarn官网下载安装。

create-react-app

官方介绍了3种创建一个react-app的方法。

1.npx

npx create-react-app my-app

2.npm init xxx your-app

npm init react-app my-app

npm init相当于一次npx的命令封装,具体解释可以看一下这篇npm文档-init|npm

需要注意的是,这个方法需要更高版本的npm,6+。

3.yarn

yarn create react-app my-app

我个人比较建议使用yarn来管理npm依赖,速度更快,上手也很简单。此处yarn的版本要求0.25+。

cd my-app

等到依赖安装完毕,进入到新创建的my-app目录里。

├── node_modules
├── README.md
├── package.json
├── public
│   ├── favicon.ico
│   ├── index.html
│   └── manifest.json
├── src
│   ├── App.css
│   ├── App.js
│   ├── App.test.js
│   ├── index.css
│   ├── index.js
│   ├── logo.svg
│   └── registerServiceWorker.js
└── yarn.lock

create-react-app只安装了最少能运行一个react-app的依赖,例子也很简单,现在我们运行一下。

yarn start

运行成功后,就可以在http://localhost:3000看到这个例子了。

webpack

现在前端开发常用的构建工具是webpack。接下来介绍用webpack构建一个简单的react-app。

新建目录

首先新建一个目录。

mkdir webpack-react-app
cd webpack-react-app
npm init -y

这时,目录里会有一个package.json。接下来,我们新建一个HTML文件,存放到dist目录,作为一个载体。

mkdir dist
cd dist
touch index.html

它的代码如下

<!DOCTYPE html>
<html>
<head>
<title>webpack react app</title>
</head>
<body>
<div id="app"></div>
<script src="/main.js"></script>
</body>
</html>

这里的id,默认为app,在具体编写时,可以修改。main.js也是webpack自己生成的,可以修改。

安装webpack

接下来安装webpack的一些依赖。

yarn add -D webpack webpack-dev-server webpack-cli

安装完毕以后,在package.json配置一下启动命令。

...
"scripts": {
"start": "webpack-dev-server --config ./webpack.config.js --mode development",
...
},
...

--mode 用来配置模式,可以区别是构建还是开发模式,如果是构建发布,就把一些开发时的提示等插件去掉。

--config 指向webpack的配置文件,默认为同目录下的 webpack.config.js

配置webpack

接下来我们来创建 webpack.config.js

touch webpack.config.js

它的基本代码如下:

module.exports = {
entry: './src/index.js', //webpack的入口文件
output: { //输出目录配置
path: __dirname + '/dist',
publicPath: '/',
filename: 'main.js'
},
devServer: { //开发时服务器的配置
contentBase: './dist'
}
};

根据习惯, src/index.js 是我们默认的入口。打包结束以后,生成一个 main.js 到dist目录下。配置了DevSever之后,我们可以在浏览器里访问到dist下的文件。

接下来需要编写 src/index.js

console.log('webpack test');

终端运行

yarn start

打开http://localhost:8080查看控制台输出。

正常输出了webpack test。

接下来要引入react。

安装babel

react用到了jsx语法,需要使用babel来转义一遍,才能被浏览器正常读取。

安装babel和依赖

yarn add -D babel-core babel-loader babel-preset-env babel-preset-react

新建babel配置文件

touch .babelrc

配置如下:

{
"presets": [
"react",
["env", {
"targets": {
"browsers": ["last 2 versions", "safari >= 7"]
}
}]
]
}

具体的 babel-preset-env 配置可以查看babel文档-babel-preset-env配置

安装完毕以后,新的 webpack.config.js 配置为

module.exports = {
...
module: {
rules: [
{
test: /\.(js|jsx)$/,
exclude: /node_modules/,
use: ['babel-loader']
}
]
},
resolve: {
extensions: ['*', '.js', '.jsx']
},
...
};

接着就可以安装react依赖了。

yarn add -D react react-dom

index.js 重写一下。

import React from 'react';
import ReactDOM from 'react-dom'; const title = 'Hello World!'; ReactDOM.render(
<div>{title}</div>,
document.getElementById('app')
);

运行一下

yarn start

ok,一个简单的react-app就创建成功了。

下一篇,将会讲解react的基本概念和语法。

谢谢阅读。

react系列(零)安装的更多相关文章

  1. react系列教程

    这个系列将从基础语法讲起,把react全家桶都讲到,然后到具体的使用,最后完成后,会写一个完整的demo. 前置要求: 基本的CSS,JS要熟练. 部分ES6语法需要了解.可以参考下面提到的阮一峰老师 ...

  2. 从 0 到 1 实现 React 系列 —— 1.JSX 和 Virtual DOM

    看源码一个痛处是会陷进理不顺主干的困局中,本系列文章在实现一个 (x)react 的同时理顺 React 框架的主干内容(JSX/虚拟DOM/组件/生命周期/diff算法/setState/ref/. ...

  3. react系列笔记1 用npx npm命令创建react app

    react系列笔记1 用npx npm命令创建react app create-react-app my-app是开始构建新的 React 单页应用程序的最佳方式.它已经为你设置好了开发环境,以便您可 ...

  4. 谈谈React Native环境安装中我遇到的坑

    谈谈React Native环境安装 这个坑把我困了好久,真的是接近崩溃的边缘...整理出来分享给大家,希望遇到跟我一样问题的小伙伴能尽快找到答案. 首先,这是在初始化App之后,react-nati ...

  5. react系列从零开始-react介绍

    react算是目前最火的js MVC框架了,写一个react系列的博客,顺便回忆一下react的基础知识,新入门前端的小白,可以持续关注,我会从零开始教大家用react开发一个完整的项目,也会涉及到w ...

  6. Robotframework-Appium系列:安装配置

    1.   Robotframework-android系列:安装配置 1.1. 安装环境 64位win10家庭中文版 1.1. 安装说明 网上robotframework-appium安装资料也不少, ...

  7. React 系列教程 1:实现 Animate.css 官网效果

    前言 这是 React 系列教程的第一篇,我们将用 React 实现 Animate.css 官网的效果.对于 Animate.css 官网效果是一个非常简单的例子,原代码使用 jQuery 编写,就 ...

  8. [转]gitlab cicd (二)系列之安装git-runner rpm安装方式

    本文转自:https://blog.csdn.net/qq_21816375/article/details/84308748 本编是继gitlab cicd (一)系列之安装gitlb之后,基于安装 ...

  9. 从 0 到 1 实现 React 系列 —— 5.PureComponent 实现 && HOC 探幽

    本系列文章在实现一个 cpreact 的同时帮助大家理顺 React 框架的核心内容(JSX/虚拟DOM/组件/生命周期/diff算法/setState/PureComponent/HOC/...) ...

  10. 从 0 到 1 实现 React 系列 —— 4.setState优化和ref的实现

    看源码一个痛处是会陷进理不顺主干的困局中,本系列文章在实现一个 (x)react 的同时理顺 React 框架的主干内容(JSX/虚拟DOM/组件/生命周期/diff算法/setState/ref/. ...

随机推荐

  1. JAVA SwingWorkder的使用例

    最近在学习Swing,我们都知道在UI表现线程里面长时间执行操作时,画面会假死,为了能够让费时操作不影响画面表现,就需要用多线程了.首先考虑的就是Swing内部的 SwingWorkder对象,但是网 ...

  2. 使用模块化工具打包自己开发的JS库(webpack/rollup)对比总结

    打包JS库demo项目地址:https://github.com/BothEyes1993/bes-jstools 背景 最近有个需求,需要为小程序写一个SDK,监控小程序的后台接口调用和页面报错(类 ...

  3. CSS的伪类 :before 和 :after

    CSS 有两个说不上常用的伪类 :before 和 :after,偶尔会被人用来添加些自定义格式什么的,但是它们的功用不仅于此.前几天发现了 Creative Link Effects 这个非常有意思 ...

  4. 高德地图 API JavaScript API

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm12.aspx ...

  5. MySQL基础数据类型

    一 介绍 存储引擎决定了表的类型,而表内存放的数据也要有不同的类型,每种数据类型都有自己的宽度,但宽度是可选的 详细参考: http://www.runoob.com/mysql/mysql-data ...

  6. php基础部分(1)

    PHP 输出文本的基础指令:echo 和 print.echo和print的区别echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用)echo 输出一 ...

  7. 解决方案看起来是受源代码管理,但无法找到它的绑定信息。保存解决方案的源代码管理设置的MSSCCPRJ.SCC文件或其他项可能己被删除。

    Visual Studio 2015 + SVN 开发环境,今天打开项目,就报了下面这个错误,先前是好好的! 解决方案看起来是受源代码管理,但无法找到它的绑定信息.保存解决方案的源代码管理设置的MSS ...

  8. Jmeter运营活动并发测试—巧用集合点

    在运营活动测试过程中,经常需要对秒杀活动或定时抽奖活动进行并发测试.那么怎样快速便捷的模拟多用户同时参与活动,抽取奖品,进行并发测试呢?尤其是,当奖品总数N<用户总数M时,代码是否会存在奖品多发 ...

  9. 第三次Scrum

    1.小组成员 周 斌舒 溢许嘉荣唐 浩黄欣欣廖帅元刘洋江薛思汝 2.小组第三次冲刺完成情况 github仓库小组的第三次任务是完成体系结构环境图和系统原型图.在体系结构设计中,分为上级系统----把目 ...

  10. recvfrom WSAEFAULT 10014 的错误记录

    在使用 recvfrom 时一直没报错, 像这样 recvfrom(sock, Data, , (sockaddr*)&server_addr, &send_size) 当我看见百度百 ...