react

用Next.js快速上手React服务器渲染

∥☆過路亽.° 提交于 2020-04-10 13:14:47
新前端时代的服务端渲染也提了很久了,各种技术演进层出不穷。 带你领略一下基于React和Nodejs架构的服务端渲染技术,让你快速上手,开发Next服务端渲染的项目。 本文参考官方文档,做精简总结,用一些小例子,让你快速理解Next.js项目的开发。 全文3800字左右,阅读全文约15分钟。 本文同步发表于知乎专栏:前端微志。欢迎关注。 什么是服务端渲染? 服务端渲染,是指页面的渲染和生成由服务器来完成,并将渲染好的页面返回客户端。而客户端渲染是页面的生成和数据的渲染过程是在客户端(浏览器或APP)完成。 随着前后端分离模式的兴起,从服务端渲染到服务端渲染的演进,前端Web App给前端开发带来了很大的便利,并减轻后端服务器压力。 前后端解耦,让前端专注做好用户UI层,专注于提升用户体验,让后端专注于业务逻辑处理,分离成微服务,专心做好一件事。 前后端分离前的服务端渲染技术有:PHP,ASP,JSP等方式,分离后的前端SPA(单页面应用)渲染拥有独立的路由和页面渲染(React,Vue和Angular等),而SPA的最大问题是对SEO不友好,当项目对SEO有需求时,SPA就不是一个好的选择。 近两年来,React和Vue也开始支持服务端渲染(Server Side Render ),行业内也有这方面的实践,其中掘金就使用Vue的SSR功能做了全站服务端渲染,且效果良好。

美团点评

﹥>﹥吖頭↗ 提交于 2020-04-10 13:10:57
一面 css实现动画,怎么让它执行完这个去执行另外一个keyFrame,你怎么知道这个动画什么时候结束 实现隔一段时间输出name function A ( name ) { this .name = name; } A.prototype.log = function ( ) { //每隔2s输出一下name } 复制代码 为啥下面这个代码会爆栈?用setTimeout来递归实现setTimeInterve()就不会爆栈 funtion fo(){ fo() } 复制代码 requestAnimationFrame实现一个移动的动画 react 性能优化你知道哪些? react key的作用?如果出现了相同的key怎么办? 实现组件一个react组件A,传入 src='hello world' 和 target = 'world' 让target高亮显示。 dangerousSetInnerHTMl知道不?和innerHTML的区别 正则 str = '1 apple cost 30$' 匹配出这个30,尽可能多的方法,你听过环视吗? 结构体转换,数组结构转换成树形结构。时间复杂度是多少?hashmap的实现知道不? [ { id: 'A' , children: [ 'B' , 'C' , 'E' ], // 根节点 }, { id: 'B' , children: [ 'D'

React Native 0.62 发布,添加暗黑模式支持

柔情痞子 提交于 2020-04-10 07:50:22
前言 一直以来,在不同平台开发和维护同一款产品,所付出的成本和代价都是一个令人头疼的问题,于是各类跨平台开发方案顺应而生。从Web容器方案到以React Native、Weex为代表的泛Web容器方案,最后再到以Flutter为代表的自绘引擎方案,这些优秀的跨平台开发框架们慢慢抹平了各个平台的差异,使得操作系统的边界变得越来越模糊。 最近一年来,随着Google对Flutter推广力度的加大,老牌的跨平台技术,如React Native、Weex开始走下坡路,不过还是有很多的公司仍然在使用它,加上FaceBook也并没有放弃对React Native的更新,最近FaceBook更新了React Native的0.62版本,带来了Flipper调试工具和新的暗黑模式支持。 React Native 是基于目前大热的开源JavaScript库React.js来开发iOS和Android原生App,已经有多个应用使用它来进行跨平台手机应用开发。React Native的原理是在JavaScript中用React抽象操作系统原生的UI组件,代替DOM元素来渲染,比如以 <View> 取代 <div> ,以 <Image> 替代 <img> 等。 在实现原理方面,React Native在主线程之外,在另一个背景线程里运行JavaScript引擎

谈谈React中Diff算法的策略及实现

老子叫甜甜 提交于 2020-04-09 18:08:27
1、什么是Diff算法 传统Diff: diff算法即差异查找算法;对于Html DOM结构即为tree的差异查找算法;而对于计算两颗树的差异时间复杂度为O(n^3),显然成本太高,React不可能采用这种传统算法; React Diff: 之前说过,React采用虚拟DOM技术实现对真实DOM的映射,即React Diff算法的差异查找实质是对两个JavaScript对象的差异查找; 基于三个策略: Web UI 中 DOM 节点跨层级的移动操作特别少,可以忽略不计。(tree diff) 拥有相同类的两个组件将会生成相似的树形结构,拥有不同类的两个组件将会生成不同的树形结(component diff) 对于同一层级的一组子节点,它们可以通过唯一 id 进行区分。(element diff) 2、React Diff算法解读 首先需要明确,只有在React更新阶段才会有Diff算法的运用; React更新机制: React Diff算法优化策略图: React更新阶段会对ReactElement类型判断而进行不同的操作;ReactElement类型包含三种即:文本、Dom、组件; 每个类型的元素更新处理方式: 自定义元素的更新,主要是更新render出的节点,做甩手掌柜交给render出的节点的对应component去管理更新。 text节点的更新很简单,直接更新文案。

几个添加外部js文件到react 的方法

吃可爱长大的小学妹 提交于 2020-04-09 17:49:33
react-script-tag 类似的也有react-html-metadata,react-helmet dom 方法 在组件挂载的生命周期添加 react hooks 使用useEffect,同时我们也可以基于自定义的hooks添加 参考资料 https://www.npmjs.com/package/react-script-tag https://www.npmjs.com/package/react-html-metadata https://github.com/nfl/react-helmet 来源: oschina 链接: https://my.oschina.net/u/4399604/blog/3226445

3月前端资源分享

天大地大妈咪最大 提交于 2020-04-09 17:24:21
3月前端资源分享 文章转自: https://github.com/jsfront/mo... 1. Javascript 记好这 24 个 ES6 方法,用来解决实际开发的 JS 问题 从零实现浏览器分屏-chrome插件 前端碎片化学习笔记 千叶风行 - 跨域总结:从CORS到Ngnix lio-mengxiang - 前端需要了解的计算机网络知识, 这一篇就够了 EnoYao - 大厂面试题分享:如何让(a===1&&a===2&&a===3)的值为true? 前端小智 - 记好这 24 个 ES6 方法,用来解决实际开发的 JS 问题 爱前端不爱恋爱 - 书到用时方恨少,一大波JS开发工具函数来了 如何处理浏览器的断网情况? 写给初中级前端的高级进阶指南(万字长文,更新TypeScript碎碎念) 2.CSS sunshine小小倩 - CSS 常见布局方式 3.React, Webpack React 写个高完成度的实时聊天应用进阶自己(React全家桶+PWA+Koa2+TS+Mysql+Socket.io) 基于 React、React-Native 的移动端UI组件库 React实战之React+Redux实现一个天气预报小项目 Webpack 童欧巴 - 「吐血整理」再来一打Webpack面试题🔥(持续更新) 刘小夕 - 带你深度解锁Webpack系列(基础篇)

React之diff算法

北城以北 提交于 2020-04-09 17:14:08
前言:在看《深入React技术栈》时,发现该书的语言不够通俗易懂,故整理之,希望在自己理解的基础上,进一步精炼语言,做到一遍基本能明白。 注:图是用 visio2013 画的。 diff算法的作用 计算出Virtual DOM中真正变化的部分,并只针对该部分进行原生DOM操作,而非重新渲染整个页面。 传统diff算法 通过循环递归对节点进行依次对比,算法复杂度达到 O(n^3) ,n是树的节点数,这个有多可怕呢?——如果要展示1000个节点,得执行上亿次比较。。即便是CPU快能执行30亿条命令,也 很难在一秒内 计算出差异。 React的diff算法 (1)什么是 调和 ? 将Virtual DOM树转换成actual DOM树的 最少操作的过程 称为 调和 。 (2)什么是React diff算法? diff算法是 调和的具体实现。 diff策略 React用 三大策略 将O(n^3)复杂度 转化为 O(n)复杂度 策略一( tree diff ): Web UI中DOM节点跨层级的移动操作特别少,可以忽略不计。 策略二( component diff ): 拥有相同类的两个组件 生成相似的树形结构, 拥有不同类的两个组件 生成不同的树形结构。 策略三( element diff ): 对于同一层级的一组子节点,通过唯一id区分。 tree diff (1

TypeScript基础入门之JSX(一)

与世无争的帅哥 提交于 2020-04-09 06:16:24
转发 TypeScript基础入门之JSX(一) 介绍 JSX是一种可嵌入的类似XML的语法。 它旨在转换为有效的JavaScript,尽管该转换的语义是特定于实现的。 JSX在React框架中越来越受欢迎,但此后也看到了其他实现。 TypeScript支持嵌入,类型检查和直接编译JSX到JavaScript。 基本用法 要使用JSX,您必须做两件事。 1. 使用.tsx扩展名命名您的文件 2. 启用jsx选项 TypeScript附带三种JSX模式:preserve, react 和 react-native。 这些模式仅影响编译阶段 - 类型检查不受影响。 preserve模式将保持JSX作为输出的一部分,以便由另一个变换步骤(例如Babel)进一步编译。 此外,输出将具有.jsx文件扩展名。 react模式将编译React.createElement,在使用之前不需要经过JSX转换,输出将具有.js文件扩展名。 react-native模式相当于保留,因为它保留了所有JSX,但输出将具有.js文件扩展名。 Mode Input Output Output File Extension preserve .jsx react React.createElement(“div”) .js react-native .js 您可以使用–jsx命令行标志或tsconfig

(005)RN开发 js jsx ts tsx的区别

China☆狼群 提交于 2020-04-09 01:16:58
背景:在入门RN开发的过程中,发现公司项目代码中,有的项目是全是.js的后缀文件。有的项目全是ts、tsx、js 文件。心中很是疑惑,所以就写个文章记录下自己的解惑的过程。 js:是弱类型语言,容易出现一些编译时不报错,运行时crash的问题。 ts: 是编译时语言,一些问题可以更早的别发现。 JSX 就是Javascript和XML结合的一种格式。React发明了JSX,利用HTML语法来创建虚拟DOM。当遇到<,JSX就当HTML解析,遇到{就当JavaScript解析。JSX 只是为 React.createElement(component, props, …children) 方法提供的语法糖。React 自创了JSX语法,是一个 JavaScript 的语法扩展,官方建议在 React 中配合使用 JSX 来替代原始的 JS。因为JSX 可以更好的描述 UI 应该呈现出它应有交互的本质形式。JSX 看起来有点类似模版语言,但它具有 JavaScript 的全部功能。 .js和.jsx的区别 我现在理解的区别就是 .js可以用来做为模块来使用 .jsx一般作为组件来使用,但是js也可以用来作为组件使用也是没问题的 .js就是前端开发语言,jsx是React框架下用的,要在React框架中的编译器编译成js语言才能使用的 TypeScript 你用 TypeScript