个人觉着react和vue是很相似的,之前还转载过一篇介绍两个异同点的文章,那个时候还完全不懂react,现在才慢慢开始接触,所以只能总结一些个人的心得,首先自然是react的优点了,个人觉着主要有以下几点吧。

  • React 可以开发单页面应用 spa(单页面应用)
  • react 组件化模块化 开发模式
  • React通过对DOM的模拟(虚拟dom),最大限度地减少与DOM的交互 (数据绑定)
  • react灵活 React可以与已知的库或框架很好地配合。
  • react 基于jsx的语法,JSX是React的核心组成部分,它使用XML标记的方式去直接声明界面, html js混写模式

接下来就是对自己的第一个react项目的记录了。

创建项目

和vue一样,react也离不开node和npm,这里就不再提,主要是创建react项目的两种方法:脚手架和npx,下面分别演示两种方法。

脚手架创建项目

1,在第一次使用脚手架的时候,需要全局安装脚手架,方便后期在不同的目录中使用脚手架创建项目,第一次安装成功后,以后就不必安装了。

全局安装脚手架的命令:npm install -g create-react-app

2,打开命令行,切换在自己放项目的目录里,执行创建项目的命令:create-react-app 项目名

这里创建的项目名称是reactdemo,所以执行的命令是:create-react-app reactdemo

3,运行项目,项目创建后,在命令行工具将目前切换到项目的根目录,执行npm start,项目就跑起来了。后期再次需要打开项目的时候,只需要执行这一步就可以了。

vue的默认端口是8080,而react的默认端口是3000;另外当vue的默认端口会占用时,会立即报错,然后你需要去更改端口,重启项目,但是在react的项目中,当默认端口被占用的时候,命令行会出现提示,按回车后,会默认给你切换到距离3000端口最近且空闲的端口上。

还有的地方提出使用yarn替代npm,这也就是为什么上面的截图中都会出现yarn的原因。在使用yarn的时候,首先需要全局安装:npm install -g yarn,安装成功后,执行上面的前两步,最后一步的时候,可以使用yarn来运行项目:yarn start

npx创建项目

使用npx创建项目的时候,不需要脚手架,所以只有两步:

1,创建项目:npx create-react-app reactdemo

2,运行项目:npm start 

然后就可以得到和上面一样的效果了。

这里简单提一下npx,它是npm v5.2.0引入的一条命令(npx),引入这个命令的目的是为了提升开发者使用包内提供的命令行工具的体验。在使用npx创建项目的时候,npx create-react-app reactdemo这条命令会临时安装 create-react-app 包,命令完成后create-react-app 会删掉,不会出现在 global 中。下次再执行,还是会重新临时安装。npx 会帮你执行依赖包里的二进制文件。

项目结构

项目的根目录结构如下图:

个人感觉还是和vue比较类似的,重点是public和src,首先开看一下public

其中favicon.ico是一个图标,就是浏览器地址栏处的图标:

其次是index.html,是一个入口文件。

最后是manifest.json,允许将站点添加至主屏幕,是 PWA 提供的一项重要功能,当前 manifest.json 的标准仍属于草案阶段,Chrome 和 Firefox 已经实现了这个功能,微软正努力在 Edge 浏览器上实现,Apple 目前仍在考虑中。

接下来看一下src文件夹:

这里只需要打开index.js这个react入口文件就可以了。

更改目录结构

目前,资源比较少,将所有的东西都放在src下其实也还好,但是一旦项目变大了,东西就会越来越多,这样就会显得结构很混乱,因此,和vue一样,要在src中新建文件components存放组件,在src中新建文件assets存放资源 ,在assets下新建文件css images将相关资源移入到对应的文件夹中,然后在引用这些资源的位置更改一下路径就可以了。

组件

在项目创建成功并运行后,默认会打开一个页面,这个页面里面的内容便是App.js这个文件里面的根组价里面写的内容:

这里不讨论jsx语法,只分析项目结构,因为react也是组件化的思想,所以并不建议将太多的东西都写在根组件里面,而是当组件单独提出来写,最后挂载到根组件就可以了。

下面,首先需要在components文件夹里面新建一个文件Home.js,然后在这个组件中写入一下简单的内容,并在最后将该组件暴露出来

然后在App.js中引入该组件并挂载:

保存后,我们就会发现浏览中已经发生了变化,因为这个也热加载的,不需要手动刷新。

完整代码下载:点这里

第一个react的更多相关文章

  1. DECO 一个REACT NAtive 开发IDE工具

    DECO 一个REACT NAtive 开发IDE工具. 目前只支持 OS,NO WINDOWS https://www.decosoftware.com/ 一个方便的快速 ERXPRESS 教程:h ...

  2. Griddle, griddle-react 一个REACT 表格组件

    Griddle, griddle-react 一个REACT 表格组件: http://griddlegriddle.github.io/Griddle/index.html

  3. 从零构建一个react+webpack+typescript的应用

    今天要完成在windows下从零开始构建一个react应用的任务 首先,新建一个文件夹,然后在该文件夹下使用命令npm init 初始化一个node项目. 然后安装所需依赖, npm i react ...

  4. (24/24) webpack小案例--自己动手用webpack构建一个React的开发环境

    通过前面的学习,对webpack有了更深的认识,故此节我们就利用前面相关知识自己动手用webpack构建一个React的开发环境,就算是一个小案例吧. 注:此处使用的开发工具是Webstorm. 1. ...

  5. 一个 react 小的 demo

    一.搭建开发环境: webpack构建工具. 新建一个文件夹(login),进入根目录, 1.输入命令:cnpm init,生成了一个package.json文件,这是一个标准的npm说明文件,里面蕴 ...

  6. 业余时间正在开发一个REACT小视频站点

    业余时间正在开发一个REACT小视频站点,数据接口来源于吐槽弹幕网(C站),供C站用户移动端的观看.因现存在移动网络屏蔽C站的关系,最好使用非移动网络进行观看.否则会比较卡,影响用户体验. 站点测试入 ...

  7. React环境配置(第一个React项目)

    使用Webpack构建React项目 1. 使用NPM配置React环境 NPM及React安装自行百度 首先创建一个文件夹,the_first_React 进入到创建好的目录,npm init,然后 ...

  8. 推荐一个React 入门的教程

    推荐一个React 入门的教程 react 入门实例教程 Github地址:https://github.com/ruanyf/react-demos

  9. 从头搭建一个React应用

    node,webpack这些就不一一介绍怎么安装了,默认大家都知道. 一.npm install -g create-react-app 首先全局安装react的脚手架工具 create-react- ...

随机推荐

  1. CH0101 a^b、 CH0102 64位整数乘法(快速幂、快速乘)【模板题】

    题目链接:传送门    //a^b   传送门    //64位整数乘法 题目: 描述 求 a 的 b 次方对 p 取模的值,其中 ≤a,b,p≤^ 输入格式 三个用空格隔开的整数a,b和p. 输出格 ...

  2. 网页筛选Automatic Input Enrichment - FLAIR

    http://www.cs.rochester.edu/~tetreaul/Presentations-and-Posters/0504.pdf 介绍了一个在线平台https://eflnotes.w ...

  3. {"errcode":48001,"errmsg":"api unauthorized}

    微信公众号基础知识说明 网页授权获取微信用户信息:两种 scope 域 https://open.weixin.qq.com/connect/oauth2/authorize?appid={0}&am ...

  4. Laravel学习--时间

    date("Y-m-d H:i:s"); list($usec, $sec) = explode(" ", microtime()); $time = (flo ...

  5. python------模块定义、导入、优化 ------->hashlib模块

    一.hashlib模块 用于加密相关的操作,3.x版本里代替了md5模块和sha模块,主要提供SHA1,SHA224,SHA256,SHA384,SHA512,MD5算法. (MD5消息摘要算法(英语 ...

  6. 【java多线程】队列系统之LinkedBlockingQueue源码

    转载:https://blog.csdn.net/tonywu1992/article/details/83419448 http://benjaminwhx.com/archives/ 1.简介 上 ...

  7. 我的vim(持续更新)

    保存并退出:wq 退出但不保存修改:q! 不退出vi使用shell(bash)命令:!bash (如果想回到vi,bash下输入exit回车) 设置行号 :set nu 取消行号:set nonu 设 ...

  8. <--------------------------Java多态如何使用------------------------------>

    11多态调用的三种格式 * A:多态的定义格式: * 就是父类的引用变量指向子类对象 父类类型 变量名 = new 子类类型(); 变量名.方法名(); * B: 普通类多态定义的格式 父类 变量名 ...

  9. zabbix--3.0--3

      使用JMX监控jvm   vim /usr/local/tomcat/bin/catalina.sh 添加如下内容 CATALINA_OPTS="$CATALINA_OPTS -Dcom ...

  10. 为什么js 的constructor中是无限循环嵌套:Foo.__proto__.constructor.prototype.constructor.prototype.constructor.prototype.xxx ?

    constructor始终指向创建当前对象实例的(构造)函数. 任何函数都是Function类的一个实例 那么根据上述可知:任何函数的constructor属性都指向Function类,而Functi ...