React Native开发React Native开发经验集React.js

React学习(一)-create-react-app

2019-06-23  本文已影响2人  itclanCoder

前言

如今,对于现今前端热门的三大框架Vue,Angular,React,对于web开发者来说,早已不是什么陌生的词

尽管三者实现业务最终的目的都能达成一致,但是各有特色,其中任何一框架,个人觉得,都博大精深,可圈可点,要学习的内容有很多,我也仅仅是浅尝辄止而已.

有时候,因为工作项目的需要,自己在切换各个技术栈的时候,只要一段时间没有用,就有些陌生,说到底不得不承认自己功力不够

本文并不是什么教程,只是作为自己学习过程中的一些总结和思考,一起学习,共同成长~
React学习-create-react-app内有视频

React是什么?

用于构建用户界面的javascript库,MVC架构中的V层

面向数据编程,只要把数据构建好了就可以了的,react会自动的帮你去构建网站,把数据可以理解为图纸,图纸做好了之后,react会自动的结合这张图纸帮助你去构建这个大厦,去构建整个页面的DOM,数据是什么,页面就显示什么,这种声明式的开发帮助我们节约掉大量的DOM操作代码,这是react编程带来的一个优势)

/**
*
* 需求:编写一个函数,处理传入包含大写字符串的数组,返回包含相同小写字符串的数组
* 声明式编程实现toLowerCase
* 输入数组的元素传递给map函数,然后返回包含小写值的新数组
*/

let toLowerCase = arr => arr.map(function(item) {
return item.toLowerCase();
})

let aToCasesA = ['SUIBICHUANJI','ITCLANCODER', 'ZHONGGUO', 'BEIJING', 'AGE'];
let aToCasesB = toLowerCase(aToCasesA);
console.log(aToCasesA); // ["SUIBICHUANJI", "ITCLANCODER", "ZHONGGUO", "BEIJING", "AGE"]
console.log(aToCasesB); // ["suibichuanji", "itclancoder", "zhongguo", "beijing", "age"]
/*
* 命令式编程:按照顺序一步一步的实现
* 首先,创建一个空数组用于保存结果,然后遍历输入数组的所有元素,
将每项元素的小写值存入空数组中,然后返回结果数组
*/


var aToCasesA = ['SUIBICHUANJI', 'ITCLANCODER', 'ZHONGGUO', 'BEIJING', 'AGE'];
function toLowerCase(arr) {
var res = [];
for(var i = 0; i < arr.length; i++) {
res.push(arr[i].toLowerCase());
} 
return res;
}
var aToCasesB = toLowerCase(aToCasesA);
console.log(aToCasesA); // ["SUIBICHUANJI", "ITCLANCODER", "ZHONGGUO", "BEIJING", "AGE"]
console.log(aToCasesB); // ["suibichuanji", "itclancoder", "zhongguo", "beijing", "age"]

在小型项目中,可以借助react中的父子组件传值就可以,但是在大型项目里,单单来使用react是不够的,比如说:flux,redux,mobox这样的数据层框架),react并不是一个完整的框架,所以它学习的成本相对高些的.

React能做什么?

只有你想不到的应用,没有实现不了的技术...

初始化一个React项目

前置条件

cmd或者git命令行下,检测Node与npm是否安装成功,如果npm下载包很慢,也可以使用国内淘宝的cnpm

D:\公开课\2019>node -v
v10.13.0
D:\公开课\2019>npm -v
6.4.1

当然,你也可以安装cnpm,使用国内的地止,下载依赖包会快一些的

$ npm install -g cnpm --registry=https://registry.npm.taobao.org

安装完cnpm后与npm使用并没有什么区别

create-react-app脚手架工具

create-react-app(创建react应用),它是一个通过npm发布的安装包,也是一个命令,在安装好nodejs后,在命令终端下执行npm或者cnpm命令,全局安装create-react-app这个脚手架工具

D:\公开课\2019 npm install --global create-react-app
或者
D:\公开课\2019 cnpm install -g create-react-app
其中-g是--global的缩写

在安装好create-react-app脚手架工具后执行create-react-app命令,这个命令会在当前目录下创建指定的参数名的应用目录,创建react项目应用有三种方式
方式一:create-react-app 应用名称(推荐使用这种方式)

D:\公开课\2019  create-react-app myfirstreactapp
D:\公开课\2019  cd myfirstreactapp
D:\公开课\2019  npm start

方式二:npm init react-app my-first-react-app

D:\公开课\2019 npm init react-app myfirstreactapp
D:\公开课\2019 cd myfirstreactapp
D:\公开课\2019 npm start

方式三:使用yarn,yarn create react-app my-react-app

D:\公开课\2019 yarn create react-app myfirstreactapp
D:\公开课\2019 cd myfirstreactapp
D:\公开课\2019 npm start

方式四:npx create-react-app 应用名称,与方式一是等价的,当你运行npx create-react-app my-app时,它会自动安装最新版本的Create React App,如果你之前全局安装过create-react-app,请全局卸载

npx create-react-app myfirstreactapp

注意事项

D:\公开课\2019  create-react-app myFirstReactApp  X
D:\公开课\2019  a project called "myFirstReactApp" because of npm naming restrictions
* name can no longer contain capital letters
 D:\公开课\2019  npm config get registry 
 // 默认是:https://registry.npmjs.org/

修改成淘宝的镜像源

 D:\公开课\2019 npm config set registry https://registry.npm.taobao.org

create-react-app创建项目

D:\公开课\2019  npx create-react-app 应用名称

以上的命令可以创建react项目应用,在这个目录下回自动的创建一个应用框架的代码结构

你可以在src中创建子目录。为了加快重建速度

注意:Webpack只处理src中的文件。你需要将任何JS和CSS文件放在src中,否则Webpack将不会看到它们的

借助这个create-react-app工具创建的应用程序可以避免那些麻烦的手工配置工作,react技术依赖webpack工具,这也是个技术

当一切就绪好后,执行npm start命令会启动一个本地开发模式的服务,同时会自动的打开一个网页,指向本地地止http://localhost:3000 如下图所示:

接下来用你喜欢的代码编辑器打开项目:这将是本节最重要的内容

myfirstreactapp
├── package-lock.json // 锁定安装时的包的版本号,并且需要上传到git,以保证其他人在npm install时大家的依赖能保证一致,对整个文件的描述,为的是让开发者知道只要你保存了源文件,到一个新的机器上、或者新的下载源,只要按照这个package-lock.json所标示的具体版本下载依赖库包,就能确保所有库包与你上次安装的完全一样,它是npm install自动生成的一文件
├── package.json // 对整个应用程序的描述,应用名称,版本号,一些依赖包,以及项目的启动,打包,测试配置,锁定大版本
├── public
│   ├── favicon.ico  // icon图标
│   ├── index.html   // 主页面,首页模板
│   └── manifest.json // 定义成app应用的方式来使用,快捷方式的图标,可以配置icons,定义快捷方式的图标,定义快捷方式跳转的网址到哪里,主题颜色,用于指定应用的显示名称、图标、应用入口文件地址及需要使用的设备权限等信息,类似于android里面的manifest.xlm配置文件
├── README.md // 说明文档
└── src       // 源码目录
    ├── App.css // App应用组件的样式
    ├── App.js  // App应用组件的逻辑代码,构成一个react组件的基本组成部分
    ├── App.test.js // App自动化测试文件
    ├── index.css   // 首页入口index的样式
    ├── index.js    // 整个程序运行的入口文件
    ├── logo.svg    // 图标,资源
    └── serviceWorker.js // 引入这个是为了帮助我们借助网页去写手机app应用这样的一个功能,如果上传到https协议的服务器上,在断网的情况下,依然可以看到之前的页面

React中的组件

在react中一个重要的思想就是通过组件(Component)来开发应用,所谓组件,就是指能够完成某个特定功能的独立的,可重用的代码(页面中的某一部分)

基于组件的应用开发是广泛使用的软件开发模式,用分而治之的方法,把一个大的应用分解成若干个小的组件,每个组件只关注于某个小范围的特定的功能,但是把组件组合起来,就能够构成一个功能庞大的应用

应用只是一个会渲染其他组件的组件而已

也可以说,react应用是由组件构成的,你可以将组件理解为一种教浏览器认识新的HTML标签的方式,实现组件的好处就是它拓展了原生HTML标签的功能,例如:组件之间的数据流等。

如果你有用过AngularJS的话,可以把组件理解为类似指令的概念,在现今的开发模式里,基于组件化开发是非常流行的

react非常适合构建用户交互组件

一个react应用其实就是一颗由组件构成的树

在这颗树的根结点,最顶层的组件就是该应用的本身,它会在浏览器启动,也叫引导应用的时候被渲染

由于组件都是以树结构组织起来的,当每个组件被渲染时,它都会递归地渲染下级组件

React特点

通过DOM diff算法,只会更新有差异化的部分,不用渲染整个页面提高效率

把页面分成若干个组件,组件中包含逻辑结构和样式
组件只包含自身逻辑,更新组件的时候可以预测,利于维护整个页面拆分多个组件,可以做到重用

写一个react应用的基本流程

其实不光是react还是vue,甚至是Angular,遵循的流程都是一样的

基于产品经理给的原型图或者UI设计师提供的设计稿,首先要做的不是开始写代码,而是基于页面,按照不同大小细粒度,把页面拆分成若干个组件

对页面的内容进行分组,并抽象成一个个的组件,从上至下,组合我们的应用,从而构成一个完整的软件系统应用

从creact-react-app脚手架中学到的

总结

本文主要讲到了react是什么,以及通过creact-react-app脚手架工具搭建一个react初始化的项目,其中初始化一个react应用,有多种方式

其中最重要的是,初始化项目目录文件的含义,以及构建一个react组件的方式,以及react中的组件,react的特点,写一个react应用的基本流程,从一个初始化项目里,学到了react编程方式

itclancoder二维码.jpg
上一篇下一篇

猜你喜欢

热点阅读