React学习笔记(持续更新)

2.2页面加载过程

1.资源加载过程:URL->DNS查询->资源请求->浏览器解析

①URL结构:http://www.hhh.com:80/getdata?pid=1#title[协议://域名:端口/路径?参数#哈希]

②DNS查询:浏览器<--(ip)(域名)-->DNS缓存+DNS服务器   (dns-prefetch缓存)

③资源请求:浏览器<--(status+response-header+body)(request-header+参数(url、body))-->后端服务器

④浏览器解析:DOM--JS执行-->DOM-->渲染树-->布局-->绘制

2.3ES6常用语法

1.let变量,const常量(不能重复定义,块级作用域,不变量提升)

2.箭头函数:参数=> 表达式/语句、继承外层作用域、不能用作构造函数、没有prototype属性

3.反引号标识``、支持多行字符串、支持变量和表达式

4.Promise:Promise对象、关键词:resolve、reject、then

 5.面向对象-类:关键词:class、语法糖:function、构造函数:constructor

  面向对象-类的继承:extends:类的继承,super:调用父类构造函数,

面向对象-对象:对象里属性简写,对象方法简写,属性可以为表达式,其它扩展

2.5本地存储

1.cookie:①用户端保存请求信息的机制。②分号分隔的多个key-value字段。③存储在本地的加密文件里。④域名和路径限制。

   字段:name:cookie名称,domain:cookie生效的域名,path:cookie生效的路径,expires:cookie过期时间,HttpOnly:用户端不可更改

2.session:①服务端保存请求信息的机制。②sessionId通常存放在cookie里。③会话由浏览器控制,会话结束,session结束。

3.localStorage:①H5新特性。②有域名限制,不存在作用域概念。③只有key-value。④没有过期时间。⑤浏览器关闭后不消失。

4.sessionStorage:①和localStorage相似。②浏览器关闭消失。

 

3-2前端框架要解决的问题

1.传统的原生开发方式的不足:代码层面、效率问题、多页应用问题

2.框架开发的不足:兼容性问题,SEO不友好、有场景要求,开发自由度降低、黑盒开发,框架本身有出错风险、有学习成本。

3.三大框架对比:angular:09年发布,Google;主要版本:1.x,2.x,4.x,5.x(beta);基于html的大而全的MVC框架;

   react:13开源,Facebook;最新版本:16.x;基于js的视图层框架;

   vue:14开源,尤雨溪,阿里weex团队;主要版本:0.1x,1.x,2.x;基于html的视图层框架;

框架对比:angular            react                     vue

组织方式:MVC                模块化                  模块化

数据绑定:双向                 单向                      双向

模板能力:强大                 自由                      简洁

自由度 :  较小                 大                           较大

路由:  静态路由              动态路由                动态路由

app方案:Ionic                 RN                         Weex

适用场景:后端开发构建CURD             前端开发构建复杂web                   前端开发快速构建web

 

4.2git项目建立及配置:https://www.cnblogs.com/GuliGugaLiz/p/9484525.html

 

4.4webpack配置

1.需要处理的文件类型

html-->html-webpack-plugin

脚本-->babel+babel-preset-react

样式-->css-loader+sass-loader

图片/字体-->url-loader+file-loader

2.webpack常用模块

html-webpack-plugin,html单独打包成文件

extract-text-webpack-plugin,样式打包成单独文件

CommonsChunkPlugin,提出通用模块

3.webpack-dev-server

为webpack项目提供web服务;使用不便2.9.7;更改代码自动刷新,路径转发;yarn add webpack-dev-server@2.9.7 --dev;解决多版本共存问题

 

5.2初识react

1.视图层框架(只关注显示,不关注数据层)、组件化(不是继承模式)、JSX表达式(在html中加入了逻辑处理)、虚拟DOM(减少低效操作提高性能)

视图层框架:①一个构建用户界面的框架②声明式的框架③数据驱动DOM,再用事件反馈给数据

组件化开发:①组件组合而不是继承②state&&props③生命周期

JSX:①一直js扩展的表达式②带有逻辑的html

虚拟DOM:①对DOM进行模拟②比较操作前后的数据差异③如果数据差异,统一操作dOM

2优点:简洁、灵活、高效

3.缺点:思维转换、依赖生态、变动频繁

 

5.5React的生命周期

1.加载过程:constructor-->componentWillMount-->componentDidMount

2.更新过程:shouldComponentUpdate-->componentWillUpdate-->componentDidUpdate;如果是props更新组件执行componentWillReceiveProps来接受父组件传过来的props

3.组件销毁:componentWillUnmount

 

5.6Router原理及React-Router

1.Router原理:历史-->跳转-->事件

2.常见Router:页面Router(window.location.href='http://www.baidu.com')-->Hash Router(1.(window.location.href='#test1';2.window.οnhashchange=function(){console.log(''current hash:),window.location.hash})-->H5 Router(1.history.pushState('test','Title','/index/test');2.history.replaceState('test','Title','/index/test) =>跳转到localhost:8080/index/test)

3.React-Router:<BrowserRouter>/<HashRouter>,路由方式;<Route>,路由规则;<Swithch>,路由选项;<Link/><NavLink>,跳转导航;<Redirect>,自动跳转

 

5.7React数据管理

1.依靠状态提升来和兄弟元素进行数据交互;通过发布订阅模式做数据交互;Redux等数据管理工具

 

转载于:https://www.cnblogs.com/GuliGugaLiz/p/9436413.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/395525.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2年工作经验进 初创公司_沟通是关键:通过两家初创公司获得的成长经验教训+找工作...

2年工作经验进 初创公司by Niki Agrawal通过尼基阿格劳瓦尔(Niki Agrawal) 沟通是关键&#xff1a;通过两家初创公司获得的成长经验教训找工作 (Communication is key: growth lessons learned through two startups a job hunt) It’s been a crazy two years. I founded tw…

Hibernate问题浅析

1、什么是SessionFactory&#xff1f;什么是Session&#xff1f;httpsession和hibernate的session的有什么区别&#xff1f;SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理&#xff0c;并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactor…

Oracle中SQL语句学习五(统计分组语句group by和having)

oracle&#xff08;41&#xff09; 在 应用系统开发中&#xff0c;进行需要统计数据库中的数据&#xff0c;当执行数据统计时&#xff0c;需要将表中的数据进行分组显示&#xff0c;在统计分组中是通过group by子句、分组函数、having子句共同实现的。其中group by子句用于指定…

linux系统去吧,要开始另一个linux操作系统的尝试了,说说我以前的ubuntu吧

我想&#xff0c;除了尝试一下ubuntu的神奇魅力的同时&#xff0c;我应该去体验一下RedHat的神奇吧&#xff01;马上就要告别ubuntu了&#xff0c;我想把我的部分使用经历和大家分享分享&#xff01;首先&#xff0c;无论是ubuntu8.04、10.04还是10.1的效果都是很好的&#xff…

课程编码查询_付出还是不付出:生活中最好的事情(例如编码课程)是否免费?...

课程编码查询by Rick West由里克韦斯特(Rick West) 付出还是不付出&#xff1a;生活中最好的事情(例如编码课程)是否免费&#xff1f; (To pay or not to pay: are the best things in life — like coding courses — free?) Recently, I’ve been working on a project tha…

做开发十年,我总结出了这些开发经验

本文由云社区发表,原文转载地址:https://www.cnblogs.com/qcloud1001/p/10218876.html 在一线做了十年的开发&#xff0c;经历了网易、百度、腾讯研究院、MIG 等几个地方&#xff0c;陆续做过 3D 游戏、2D 页游、浏览器、移动端翻译 app 等。 积累了一些感悟。必然有依然幼稚的…

2016年4月 TIOBE 编程语言排行榜

4月头条: Visual Basic 正在渐行渐远 COBOL, BASIC 和 FORTRAN 很长一段时间作为主力开发语言被使用。有很多软件使用这些语言来编写&#xff0c;并且发展的不亦乐乎。然而经过多年的发展&#xff0c;COBOL和FORTRAN逐渐被抛弃&#xff0c;而得益于微软的存在&#xff0c;BASIC…

linux系统不知道电脑密码怎么办,Linux如何修复系统的Root密码 -电脑资料

如果因为忘了root口令导致无法登录系统&#xff0c;请试用下面的方法来改忘记的root口令&#xff1a;方法一&#xff1a;1、重新启动系统&#xff0c;2、把光标定位在该选项上按下字母“e”键进入这个引导的编辑状态&#xff1b;3、该选项有三行语句&#xff0c;请用光标选中第…

控制语句(4)

第4章 控制语句if<条件1>&#xff1a; <语句1>elif<条件2>: <语句2>elif<条件3>&#xff1a; <语句3>......else: <语句n>说明&#xff1a;elif语句&#xff0c;只要有一个条件成立&#xff0c;就会将其后的一个部分语句执行…

02 socketserver客户端

import socket client socket.socket() client.connect((127.0.0.1,8001))while 1:msg input(客户端说>>>)client.send(msg.encode(utf-8))from_server_msg client.recv(1024)print(from_server_msg.decode(utf-8)) 转载于:https://www.cnblogs.com/work14/p/10235…

基于zbus的MySQL透明代理(100行)

项目地址 https://git.oschina.net/rushmore/zbus 我们上次讲到zbus网络通讯的核心API&#xff1a; Dispatcher -- 负责-NIO网络事件Selector引擎的管理&#xff0c;对Selector引擎负载均衡 IoAdaptor -- 网络事件的处理&#xff0c;服务器与客户端共用&#xff0c;负责读写&am…

linux添加jetdirect协议,Padavan 路由器固件 不能驱动 hp1005、hp1020之类打印机 foo2zjs ZjStream协议的linux打印机驱动程序...

单击链接&#xff0c;或剪切并粘贴下面的整个命令行以下载驱动程序。现在解压缩它&#xff1a;Unpack:$ tar zxf foo2zjs.tar.gz$ cd foo2zjs现在编译并安装它。 INSTALL文件包含更详细的说明; 请现在阅读。Compile:$ makeGet extra files from the web, such as .ICM profiles…

返回指定月份的周列表 包含 周序号、开始日期、结束日期(不包含周末)

/*** 返回当前年月的周列表 包含 周序号、开始日期、结束日期(不包含周末)* param year 年* param month 月* returns {Array} */function getYearMonthWeekList(year,month) {var weekList[];var time year "/" month "/01";//取当前月的第…

tez-site.xml_数字支付系统的未来-Google Tez和音频快速响应

tez-site.xmlby Vaidic Joshi通过Vaidic Joshi 数字支付系统的未来-Google Tez和音频快速响应 (The future of digital payment systems — Google Tez and Audio Quick Response) Google recently marked its entry into the Indian digital payments market by introducing …

Window上安装kafka

kafka在windows上的安装、运行 - 进阶者ryan-su - CSDN博客https://blog.csdn.net/u010283894/article/details/77106159 在Windows环境中安装并使用kafka - 心灵空谷幽兰 - 博客园https://www.cnblogs.com/xinlingyoulan/p/6054361.html?utm_sourceitdadao&utm_mediumref…

数集合有多少个TOJ(2469)

题目链接&#xff1a;http://acm.tju.edu.cn/toj/showp2469.html 感觉这个题目有点问题&#xff0c;算了不管他了&#xff0c;反正A了。 这里要注意的是求这个集合有多少种&#xff0c;那么就是要剔除重复数后&#xff0c;再数一下有多少个。 难一点的算法我也不会&#xff0c;…

linux path环境变量起什么作用,shell基础(5)PATH环境变量的作用和使用方法

释放双眼&#xff0c;带上耳机&#xff0c;听听看~&#xff01;关于PATH的作用PATH说简单点就是一个字符串变量&#xff0c;当输入命令的时候LINUX会去查找PATH里面记录的路径。比如在根目录/下可以输入命令ls,在/usr目录下也可以输入ls,但其实ls这个命令根本不在这个两个目录下…

天气城市编码对应地区编码_如何在您的城市中建立强大的编码社区-我是如何做到的...

天气城市编码对应地区编码by Billy Le比利勒(Billy Le) 如何在您的城市中建立强大的编码社区-我是如何做到的 (How you can build a strong coding community in your city — and how I did it) Communities are important. They are the bedrock that glues together shared…

python3 自动打包部署war包

2019独角兽企业重金招聘Python工程师标准>>> 1 调用maven 命令打包 mvn -B -f D:/workspace/ksdcourse clean package 2 调用tomcat 部署war包 &#xff1b; 需要添加 CATALINA_HOME的环境变量 代码如下&#xff1a; #!/usr/bin/python3# -*- coding: utf-8 -*-impo…

python 虚拟环境创建

创建虚拟环境&#xff1a;  sudo apt-get install virtualenv 新建虚拟环境文件夹 venv virtualenv venv 进入虚拟环境 source venv/bin/activate 安装套件列表模块: 用来记录项目中所使用到的各种模块&#xff0c;便于项目部署时统一安装所需模块 pip freeze > requir…