react

React.createElement 和 ReactDOM.render 的简易实现

£可爱£侵袭症+ 提交于 2020-04-20 12:16:57
前言 React.createElement 是React中一种创建React组件的方式,它古老而神秘。 虽然日常开发中已经很少能够见到他的身影。但是将JSX用babel编译之后,就是 createElement 函数 ReactDOM.render 是React实例渲染到dom的入口方法 React.createElement 参数 createElement 支持传入n个参数。 type:表示你要渲染的元素类型。这里可以传入一个元素Tag名称,也可以传入一个组件(如div span ul li 等,也可以是是函数组件和类组件) config:创建React元素所需要的props。包含 style,className 等 children:要渲染元素的子元素,这里可以向后传入n个参数。参数类型皆为 React.createElement 返回的React元素对象。 React.createElement(type, config, children1, children2, children3...); 复制代码 createElement 方法 我们新建一个JS文件,导出一个 createElement 函数。 方法内置一个 props 变量。将我们的 config 对象本身所有的属性完全copy到 props 上 function createElement ( type,

🔥从0实现React 📖PART1 React的架构设计

只谈情不闲聊 提交于 2020-04-20 09:49:09
为什么要写这个系列? 2020年初给自己定下目标,今年要读懂React源码,最好能成为React Contributor(没想到很快就实现了,虽然提交的commit很微小)。 为什么要读React源码呢,因为如果单纯开发日常业务的话,前端的边界其实很窄。回想一下,你今年做的业务,换作是去年的你,前年的你,换作是应届生甲乙丙,他们能替换你的位置么?我这么一想,就有迫切的愿望拓展自己的边界。 前端的边界很多——可视化、框架、工具链等,这些都能成为一个前端区别其他前端的地方,而我选择从日常工作最熟悉的伙伴——React下手。即使不考虑这些功利的因素,全世界最优秀的一批前端(Facebook)耗费多年开发的框架,去学习下他们的代码,不香么? 既然定下了宏大的目标(笑😊),如何下手呢?网上有些类似《从0实现迷你React》的文章,他们提炼了React的一些关键思路,用很少的代码实现了React的某项功能,阅读他们对了解React的思路很有帮助,尤其推荐 这篇 。但这不是我想要的,我想要的是真正的React,辣个 React 。 于是,开始debug React 🐶。如果React是一个毛线团🧶的话,那么他的线头一定是 RectDOM.render(<App/>, document.getElementById( 'app' )); 复制代码 通过这个线头,我梳理出React首屏渲染会做的工作

React性能优化之shouldComponentUpdate、PureComponent和React.memo

﹥>﹥吖頭↗ 提交于 2020-04-20 09:48:48
前言 最近一直在学习关于React方面的知识,并有幸正好得到一个机会将其用在了实际的项目中。所以我打算以博客的形式,将我在学习和开发(React)过程中遇到的问题记录下来。 这两天遇到了关于组件不必要的重复渲染问题,看了很多遍官方文档以及网上各位大大们的介绍,下面我会通过一些demo结合自己的理解进行汇总,并以此作为学习React的第一篇笔记(自己学习,什么都好,就是费头发...)。 本文主要介绍以下三种优化方式(三种方式有着相似的实现原理): shouldComponentUpdate React.PureComponent React.memo 其中 shouldComponentUpdate 和 React.PureComponent 是类组件中的优化方式,而 React.memo 是函数组件中的优化方式。 引出问题 新建Parent类组件。 import React, { Component } from 'react' import Child from './Child' class Parent extends Component { constructor(props) { super(props) this.state = { parentInfo: 'parent' , sonInfo: 'son' } this.changeParentInfo = this

react/antd -- 让antd的跑马灯支持自轮播的时间

邮差的信 提交于 2020-04-20 06:09:08
官网那边不能设置轮播的时间,也没有手动切换案例,下面我们给他添加一个补丁吧 补丁编写 代码如下 /** * * @param carousel carousel ref * @param carousel_autoplay_time 自定义时间 */ const init_carousel_autoplay = (carousel: any, carousel_autoplay_time: number) => { // 轮播定时器 var carousel_autoplay_timer: any = null // 自动播放 const carousel_autoplay = () => { carousel_autoplay_timer = setTimeout(() => { carousel.current.next() carousel_autoplay() }, carousel_autoplay_time); } // 清理定时器 const clear_timeout = (cb: () => void) => { if(carousel_autoplay_timer){ clearTimeout(carousel_autoplay_timer) return } cb && cb() } // 重置自动播放 const reset_aotoplay_timer =

Vue 3.0 Beta 版本发布,你还学的动么?

孤街醉人 提交于 2020-04-20 04:27:39
技术编辑:徐九丨发自 北京 SegmentFault 思否报道丨公众号:SegmentFault 不知道是不是巧合,尤大又在凌晨发布了 Vue 的最新动态。等了这么久,Vue 3.0 终于发布了 beta 版本,尤大之前曾强调过 Vue 3.0 包含了五个关键变化:1.速度 2.体积 3.可维护性 4.面向原生 5.易用性。这次看来已经优化的差不多了。 尤雨溪和 Vue 尤雨溪尤大目前是一个独立开发者,也是开源 JavaScript 框架 Vue.js 的创建者,现居美国。曾就职于 Google 和 Meteor,现在全职开发和维护 Vue.js。据说除了编程和帮助妻子照顾两个孩子外,还喜欢电子游戏、卡拉 OK、寿司和收藏手表。 前端开发目前有两个比较流行的 JavaScript 框架,一个是 Facebook 创建的 React,另一个就是尤雨溪尤大搞的 Vue.js 了。业界也经常对这两个框架进行比较。 此前,尤大曾正面回答过这一问题,他表示希望大家能停止无谓的争执,多想想使用这些技术的初衷。 他认为多年以后要论历史地位,React 肯定是高于 Vue 的。React 从一开始的定位就是提出 UI 开发的新思路。这是 React 伟大的地方,Vue 里面也有很多地方是直接受到了 React 的启发。React 敢做这样的尝试,是因为它是 Facebook,是一种大公司才有的

关于前端学习路线的一些建议(含面试自测题)

旧城冷巷雨未停 提交于 2020-04-20 04:10:34
前言 最近常有朋友加我微信,而他们问的最多的问题就是 —— 前端技术现在如此繁杂,我到底应该如何学习 。这个话题太大了,几句话回答不好;也由于这个问题确实困扰了很多前端开发人员,所以我也就着手系统的输出这篇文章。 虽然这篇文章花了很长时间,肯定也有其局限性;希望各位不吝指出。 入题 我们俨然能感受到前端岗位现在已经发展成了最重要的研发岗位之一,所以对我们提出的要求也就越来越高。所以我们需要学的也就不仅仅只是 CSS & HTML & JavaScript 了。但这三大件一直都是前端的根本,这一点从未改变。而这三大件中 JavaScript 又是重中之重。 接下来我会结合我的一点经验,给出前端学习路线的一些具体建议。 目录 三大件学习 库工具 前端框架( MVVM )的学习 浏览器 & 计算机基础 前端工程化 性能优化 Nodejs 数据结构和算法 依葫芦画瓢 三大件学习 现在每年依旧有很多初级入门的前端开发。所以对初入门的朋友也给出一点意见。 刚入门的朋友,我觉得不应该一开始就学习像 Vue 、 TypeScript 、 Webpack 等知识。应该把重点放在 CSS & HTML & JavaScript 基础知识的学习上。 CSS & HTML 对于刚入门的朋友我依旧建议先将 CSS ( 3 ) & HTML ( 5 ) 的知识点认真学习一遍

ALPHA任务拆解

可紊 提交于 2020-04-20 00:29:36
项目 内容 这个作业属于哪个课程 BUAA2020软件工程 这个作业的要求在哪里 作业要求 我们在这个课程的目标是 学会团队合作,共同开发一个完整的项目 这个作业在哪个具体方面帮助我们实现目标 团队任务分解和细化 总体规划 支持用户编辑需要生成的数据的相关属性 实现基于空白表单生成多份表单的生成 支持PDF、JSON文件的下载 Alpha目标 完成三个模块: UI界面 后端 Azure接口调用 实现最小功能集的一整套业务逻辑: UI上传pdf模板 标注字段范围,添加属性 后端解析及数据生成 调用Fott API 处理实际的表单 前端 姓名 任务 预计时长 重要程度(最高5) 截止时间 llj, tzj, zyc 配置环境保证代码可以本地编译运行 1h 5 4.10 自学基本的前端知识和主流架构,学习ts、react等编程工具的知识 5h 4 4.12 熟悉学习原项目代码整体架构,掌握关键类之间的各种关系以及现有的组件 3h 3 4.12 zyc tag页面:UI布局 1h 5 4.13 tag页面:探索如何选中页面中一个区域的坐标作为某字段的参数 2h 5 4.14 tag页面:实现设定字段名以及对应页面中的区域 1h 5 4.14 tag页面:实现对字段的要求设定,最基本包括:内容格式(字母、数字)、内容长度(字符数) 0.3h 4 4.15 tag页面

前端笔记之Vue(一)初识SPA和Vue&webpack配置和vue安装&指令

一曲冷凌霜 提交于 2020-04-19 07:33:43
一、 单页面应用( SPA ) 1.1 C/S 到 B/S 页面架构的转变 C/S :客户端 / 服务器( Client/Server )架构的软件。 C/S 软件的特点: ① 从 window 桌面双击打开 ② 更新的时候会替换原有的,原有的必须删除,不能刷新。 ③ 在其他的设备上使用的时候,也要安装软件。 B/S :浏览器和服务器( Browser/Server )架构 B/S 软件的特点: 不需要安装任何的客户端,是通过浏览器输入网址打开的。 更新的时候不需要重新安装软件,你只需要刷新页面,程序就能更新。 在其他设备端,不需要安装任何其他的软件,浏览器足可以解决所有的问题。 Dashboard 叫做仪表盘项目,通俗的讲就是 *** 管理平台。比如进销存管理平台、汽车销售管理平台、宠物店管理平台。 特点 1 :这种项目几乎都是单页面应用( Single Page Application )简称 SPA 将原来 PC 桌面的应用程序,放到浏览器中实现。现在的用人需求很大,不管是政府机构、教育机构、外包机构、销售机构都在开发自己的新项目,或者把老项目搬到网页上。比如阿里云的管理平台,特别像桌面的 app ,现在是在浏览器中实现的。 所有页面的 URL 网址,只有 # 后面的内容在变化,而 # 之前的内容没有变化,整个项目就是一个 html 页面。 网页没有发生跳转,而是 DOM

#react 之ant design Pro 学习研究#----启动项目

一笑奈何 提交于 2020-04-19 05:23:31
#首页 src/index.js import '@babel/polyfill'; import 'url-polyfill'; import dva from 'dva'; //import createHistory from 'history/createHashHistory'; // user BrowserHistory import createHistory from 'history/createBrowserHistory'; import createLoading from 'dva-loading'; import 'moment/locale/zh-cn'; import './rollbar'; import './index.less'; // 1. Initialize dva初始化 const app = dva({ history: createHistory(), }); // 2. Plugins 加载插件 app.use(createLoading()); // 3. Register global model 注册全集model app.model(require('./models/global').default); // 4. Router 加载路由 app.router(require('./router').default)

没有前端开发实习经历,毕业后如何找到好工作?

人盡茶涼 提交于 2020-04-18 17:49:29
对于大学毕业生而言,好不好找工作受影响的因素很多,不只是看你是否实习过!但相比较来说,同等资质的前端,有实习经验去找工作要有优势些!如果你是老板,让你花钱雇人,你愿意用有经验的?还是需要花时间培养的呢?显然大家都喜欢前人栽树后人乘凉啊! 前端的选择也越来越多 前端是互联网发展过程中精细化分工的产物,前后端分离技术的出现则把前端职位推向了高潮 现今软件开发领域的所有职位像前端工程师、后端工程师、需求分析师、测试工程师、产品设计师等,在以前几乎只用一个名词——“程序员”或者“工程师”,就可以完全代替,因为这些岗位的所有工作在以前都是由一个人来完成的,就是现在所谓的“全栈工程师”。 他们从可行性调研、需求分析、系统设计、软件开发、软件测试、上线部署、后期运维等环节,全面操作,可谓是样样拿得起放得下。 前端技术在不断更新升级 后来随着移动互联网的兴起,WEB2.0技术的更新,使得人们更加注重页面的呈现和页面的交互,这就促使了前端开发职位的独立。 伴随着出现的就是技术框架的更新和迭代,代码框架上开始出现了前后端分离技术,前端研发技术也开始工程化,一众前端技术jquery、extjs、easyui、bootstrap、angularjs、react、vue、H5等等技术和框架相继出现和诞生。当然还有支撑其发展的工程化工具,比如grunt&gulp、webpack等。 js框架也层出不穷