之前一直用 vue 做一些小项目,最近接触了一个项目是用 react 做前端,虽然本身是做后端开发的,但是前端还是要了解一点的。

现在的项目基本上都是前后端分离的,后端就先不提了。前端的框架也是层出不穷,使用最多的就是 angular、vue、react 。angular 是前几年用的比较多,最近好像用的人没那么多了。vue 是华人开发的项目,也是这三个框架里上手最简单的。react 是 fecebook 开源的框架,市场占有率也是最高的,国外的公司和国内的一些大公司用的比较多。

我也不是专业前端,学习 react 也是一时兴起,讲不了什么高深的东西,就来说说入门 react 的一个过程,仅仅是入门而已。

前期准备

不光学习 react 需要储备一些前端的知识,学习 vue 等前端框架同样需要。

稍微了解一下 nodejs ,前端框架的原理是这样的,并不是像我们之前那样直接写操作 DOM 的 js 脚本或者使用 jquery,而是用 ES5、ES6 、TypeScript 等标准去组织项目代码,这其中需要用到 nodejs 的很多包,最后编译的时候,把用这些标准组织的代码编译成我们通常意义上的 js 代码,然后在浏览器执行。

会使用 npm ,这是一个包管理工具,对比 Java 来说,它就类似于 maven,可以方便的管理项目中使用的包。

webpack 了解一点,webpack 是一个现代 JavaScript 应用程序的静态模块打包器,我们项目开发和编译使用的命令 dev、start、build 最后都是由 webpack 帮我们完成的。

学习过程

我这里只是说一下我学习的过程。打开 Google,先去找 react 官网,有英文的和中文的,因为英文的看着费劲,所以就看了中文官网 https://react.docschina.org/。 花大概两个小时,把每个小结都看完,也就是做个大概了解,了解 react 到底是怎么一个机制,具体到写代码的时候肯定还是要返回来查的。学任何东西其实都是一样的,不能上来就拿一个 demo 开始改,肯定要先宏观的了解一下这项技术优缺点、运转机制,然后再钻到细节里。

看完官方文档后,开始创建一个小项目写写简单的代码。 react 为了方便入门,提供了一个脚手架工具,create-react-app,只需要运行简单的命令就能创建一个 react 项目出来。

先用 npm 全局安装 create-react-app 包。

npm install -g create-react-app

然后运行命令创建项目,运行之前先 cd 到你想创建项目的目录

create-react-app my-app

create-react-app 已经出到了 2.x 的版本,它帮助我们省去了一些配置上的东西,它其实是把 webpack 做了比较好的封装,大大节省了我们配置 webpack 的时间,可以另我们专注的写程序代码。如果不适用它的话,你从头到尾的配置项目结构和webpack,中间会有很多坑在等着你,恐怕还没开始写代码就已经中途放弃了。

然后运行 npm start 就可以把最简单的项目跑起来。

跑起来之后,可以根据官方文档来写两个简单的页面,建立一下自信。

如果你之前用过 vue,会发现 react 和 vue 差别是非常大的。vue 是非常直接 MVVM 模式,通俗点来说就是数据双向绑定,改变视图也就改变了 model ,改变 model 也就改变了视图。

而 react 是在每个视图中维护一个 state ,每次只能操作当前视图的 state ,每次页面加载需要初始化 state ,state 绑定到视图上,但是视图的修改,需要通知 state 。这是最基本的运行模式。如果是做一个比较小的系统,交互不是很复杂的那种,可以用这些足够了。

继续说看文档这件事,只看官方文档基本上可以写一些简单的页面了,但是还不够,我们通过搜索引擎继续搜索,各种各样的技术博客、文档进去看,会陆陆续续的发现更多的信息,比如 router 、redux、mobx 等等,继续根据新的关键词还能挖掘出更多的东西。以 react 为例,除了 react 核心的功能,还有一些扩展的框架,如果我们想把这些都了解,从早到晚看一天的文档恐怕也是不够的。

router 路由器,如果页面很多,项目很大的情况下,就需要路由器来管理页面路径了,访问哪个路径要加载哪个页面,这些还是统一管理起来比较好。

redux 和 mobx 是数据管理的扩展包 ,我们如果只用 state 来管理和维护数据,当有不同的页面需要有数据交互或共享的时候,就很吃力了,redux 或 mobx 就提供了数据统一管理的功能,把数据独立出来,这样就可以在不同的页面、不同的组件之间来回流转了。

比起 mobx 来,redux 相对来说就麻烦的多,mobx 提供了装饰器的语法功能,就像 Java 中的注解、Python中的装饰器一样。

写的非常乱,但这就像开始学习 react 一样,有些东西就是在你各种翻文档的过程中才发现的,比如 redux 和 mobx ,大多数时候,开始你并不知道有这些东西。

学习的过程中,我用 react + router + mobx 搭了一个脚手架项目,有想要用的可以关注公众号,回复 「react」 。

学了两天 react,乱讲一下学习思路,顺便弄了一个脚手架的更多相关文章

  1. React Native小白入门学习路径——五

    React Native小白入门学习路径--五 序 "哦天呐!" 这句话成了我在实验室的口头禅, 老师可能觉得我们都是大神吧,都还在看着基础就给布置了那么多任务:写一个RN的TDD ...

  2. 【前端,干货】react and redux教程学习实践(二)。

    前言 这篇博文接 [前端]react and redux教程学习实践,浅显易懂的实践学习方法. ,上一篇简略的做了一个redux的初级demo,今天深入的学习了一些新的.有用的,可以在生产项目中使用的 ...

  3. React Native小白入门学习路径——一

    前言 过去这段时间一直忙着实验室考核任务,拼尽全力完成了自己的任务之后.正准备开始高强度的实验室的学习的时候,实验室组织了新老生交流会,这也应该是头一次这么近距离的面对大四前辈交流想法.感觉自己受益颇 ...

  4. React Native for Android 学习

    前言 Facebook 在2015.9.15发布了 React Native for Android,把 JavaScript 开发技术扩展到了移动Android平台.基于React的React Na ...

  5. 【React】360- 完全理解 redux(从零实现一个 redux)

    点击上方"前端自习课"关注,学习起来~ 前言 记得开始接触 react 技术栈的时候,最难理解的地方就是 redux.全是新名词:reducer.store.dispatch.mi ...

  6. Android(java)学习笔记219:开发一个多界面的应用程序之两种意图

    1.两种意图: (1)显式意图: 在代码里面用intent设置要开启Activity的字节码.class文件: (2)隐式意图: Android(java)学习笔记218:开发一个多界面的应用程序之人 ...

  7. (zhuan) 大牛讲堂 | 算法工程师入门第二期-穆黎森讲增强学习

    大牛讲堂 | 算法工程师入门第二期-穆黎森讲增强学习 2017-07-13 HorizonRobotics

  8. python中有两个下划线__的是内置方法,一个下划线_或者没有下划线的可能是属性,也可能是方法,也可能是类名

    python中有两个下划线__的是内置方法,一个下划线_或者没有下划线的可能是属性,也可能是方法,也可能是类名,如果在类中定义的就是类的私有成员. >>> dir(__builtin ...

  9. css 两列自适应布局的4种思路

    前面的话 前面已经介绍过css 两列布局中单列定宽单列自适应布局的6种思路的两列布局,而两列自适应布局是指一列由内容撑开,另一列撑满剩余宽度的布局方式.本文将从float.table.flex和gri ...

随机推荐

  1. js多个元素随机且不重叠分布在页面中

    最近,公司要做一个类似挖矿的项目,大概其是当用户登录进入首页后,如果用户有已经生成的原力值,则在其点击原力值后可以类似蚂蚁森林那样收集原力值,当用户将所有的原力值收集完毕后开始提醒用户新的原力值正在生 ...

  2. selenium IDE中log的保存与查看方法

    下载selenium IDE的log保存插件为File Logging(selenium IDE),下载安装方式如下: (1)打开firefox浏览器----点击右上角----附加组件---插件--- ...

  3. TensorFlow从1到2(九)迁移学习

    迁移学习基本概念 迁移学习是这两年比较火的一个话题,主要原因是在当前的机器学习中,样本数据的获取是成本最高的一块.而迁移学习可以有效的把原有的学习经验(对于模型就是模型本身及其训练好的权重值)带入到新 ...

  4. 3.python词云图的生成

    安装库 pip install jieba wordcloud matplotlib 准备 txt文本 字体(simhei.ttf) 词云背景图片 代码 import matplotlib.pyplo ...

  5. 漫谈“采样”(sampling)

      越学越懵了,计算机中是怎么进行采样的,用了这么久的 rand() 函数,到现在才知道是怎么做的. 从均匀分布中采样   计算机中通过线性同余发生器(linear congruential gene ...

  6. python——绘制二元高斯分布的三维图像,

    在对数据进行可视化的过程中,可能经常需要对数据进行三维绘图,在python中进行三维绘图其实是比较简单的,下面我们将给出一个二元高斯分布的三维图像案例,并且给出相关函数的参数. 通常,我们绘制三维图像 ...

  7. Lumen框架—升级改造之路-仓储层

    仓储层与逻辑层搭建  Lumen官方文档:https://lumen.laravel.com/docs/5.5 我的项目地址:https://github.com/BusinessL/big-lume ...

  8. php一致性hash算法的应用

    阅读这篇博客前首先你需要知道什么是分布式存储以及分布式存储中的数据分片存储的方式有哪些? 分布式存储系统设计(2)—— 数据分片 阅读玩这篇文章后你会知道分布式存储的最优方案是使用 一致性hash算法 ...

  9. Css3 笔记 动画 和定位属性

    transform 变形属性属性:translate 平移,rotate 旋转, scale 缩放,skew 倾斜 ◆ translate :指定对象的2D平移第一个参数对应X轴,第二参数对应Y轴:如 ...

  10. 全网首发! Odoo 订单分解执行及供应链管理免费开源解决方案

    引言 前一篇介绍了佛山王朝家具的案例背景.佛山王朝家具公司在全国有30多家门店,三个生产工厂.王朝家具有六大痛点问题: 订单迫切需要实现电子化管理及在线签名 总部分单工作量大,供应链效率低 配送和售后 ...