react

浅谈一下,来自vue优点

徘徊边缘 提交于 2020-08-09 16:18:32
vue有以下优点 轻量级框架 : 只关注视图层, 是一个构建数据的视图集合, 大小只有十几kb 简单易学 , 国人开发, 中文文档, 不存在语言障碍, 易于理解和学习; 组件化 : 保留了react 的优点, 实现了html的封装和重用, 在构建单页面应用方面有着独特的优势; 视图, 数据, 结构分离: 使数据更改更为简单, 不需要进行逻辑代码的修改, 只需要操作数据的能完成相关操作: 虚拟DOM : dom操作是非常耗费性能的, 不再使用原生的dom操作节点, 极大解放dom操作, 单具体操作的还是dom, 只不过是换了另一种方式; 来源: oschina 链接: https://my.oschina.net/u/4314113/blog/4480132

React Hooks 系列之4 useReducer

穿精又带淫゛_ 提交于 2020-08-09 15:44:29
本系列将讲述 React Hooks 的使用方法,从 useState 开始,将包含如下内容: useState useEffect useContext useReducer useCallBack useMemo useRef custom hooks 掌握 React Hooks api 将更好的帮助你在工作中使用,对 React 的掌握更上一层楼。本系列将使用大量实例代码和效果展示,非常易于初学者和复习使用。 截止目前我们已经学习了3个hook api, useState , useEffect , useContext 。接下来我们学习下一个 hook api, useReducer 。首先我们将讲讲什么是 reducer,以及为什么使用 reducer。研究一下 JavaScript 中的 reducer 是什么,这将有助于理解 react hook 中的 useReducer 。好,现在开始吧。 什么是 useReducer useReducer 是一个用于状态管理的 hook api。是 useState 的替代方案。 那么 useReducer 和 useState 的区别是什么呢?答案是 useState 是使用 useReducer 构建的。 那么什么时候使用 useReducer 还是 useState 呢?我们完成本章的学习就能找到答案。 reducer

React Native FlatList 原理解析与性能优化

一曲冷凌霜 提交于 2020-08-09 13:48:57
本文是【 React Native 性能优化指南 】的一部分内容,因为内容比较具有代表性,所以单独拿出进行讲解;若想获得完整优化建议,可点击 原文 查看。 在 React Native 开发中,最容易遇到的对性能有一定要求场景就是长列表了。在日常业务实践中,优化做好后,千条数据渲染还是没啥问题的。 虚拟列表前端一直是个经典的话题,核心思想也很简单:只渲染当前展示和即将展示的 View,距离远的 View 用空白 View 展示,从而减少长列表的内存占用。 在 React Native 官网上, 🔗 列表配置优化 其实说的很好了,我们基本上只要了解清楚几个配置项,然后灵活配置就好。但是问题就出在「 了解清楚 」这四个字上,本节我会结合图文,给大家讲述清楚这几个配置。 1⃣️ 各种列表间的关系 React Native 有好几个列表组件,先简单介绍一下: ScrollView :会把视图里的所有 View 渲染,直接对接 Native 的滚动列表 VirtualizedList :虚拟列表核心文件,使用 ScrollView,长列表优化配置项主要是控制它 FlatList :使用 VirtualizedList,实现了一行多列的功能,大部分功能都是 VirtualizedList 提供的 SectionList :使用 VirtualizedList,底层使用

react hook useReducer

狂风中的少年 提交于 2020-08-09 10:39:03
使用useReducer 封装计数器的维护逻辑 import React, { useState, useEffect, useReducer } from "react"; const initialState = 0; const reducer = (state, action) => { switch (action) { case "inc": return state + 1; case "dec": return state - 1; case "reset": return initialState; default: return state; } }; export default () => { const [count, dispatch] = useReducer(reducer, initialState); const [count2, dispatch2] = useReducer(reducer, initialState); return ( <div> <div>Count: {count}</div> <button onClick={() => dispatch("inc")}>inc</button> <button onClick={() => dispatch("dec")}>dec</button> <button onClick=

阿里云开放平台微前端方案的沙箱实现

雨燕双飞 提交于 2020-08-09 08:46:15
导读 微前端已经成为前端领域如今比较火爆的话题,关于微前端价值的讨论,可以参考克军的 《拥抱云时代的前端开发框架——微前端》 。微前端在技术方面,有一个始终绕不过去话题就是前端沙箱。本篇具体探讨一下,在微前端领域如何实现前端沙箱。 背景 应用沙箱可能是微前端技术体系里面最有意思的部分。一般来说沙箱是微前端技术体系中不是必须要做的事情,因为如果规范做的足够好,是能够避免掉一些变量冲突读写,CSS 样式冲突的情况。但是如果你在一个足够大的体系中,总不能仅仅通过规范来保证应用的可靠性,还是需要技术手段去治理运行时的一些冲突问题,这个也是沙箱方案成为微前端技术体系的一部分原因。 首先纵观各类技术方案,有一个大前提决定了这个沙箱如何做:最终微应用是 单实例 or 多实例 存在宿主应用中。这个直接决定了这个沙箱的复杂度和技术方案。 • 单实例:同一个时刻只有一个微应用实例存在,此刻浏览器所有浏览器资源都是这个应用独占的,方案要解决的很大程度是应用切换的时候的清理和现场恢复。比较轻量,实现起来也简单。 • 多实例:资源不是应用独占,就要解决资源共享的情况,比如路由,样式,全局变量读写,DOM. 可能需要考虑的情况比较多,实现较为复杂。 最开始我们的想法是: 从业务场景:我们可能存在的情况是当用户操作一个产品 A 的同时和另一个产品 B 发生了关联操作,需要唤醒应用 B 做操作

你真的需要 Webpack DllPlugin 吗?

风流意气都作罢 提交于 2020-08-09 07:53:49
前段时间写了一篇 详解 webpack4 中易混淆知识点 的文章,没想到收获了近 600 个赞,在这里对各位老铁抱拳感谢。上篇文章我费了很多时间去构思 demo 和原创作图,就是想把一些概念彻底讲清楚,看评论区的反响我感觉还是做到了自己设定的目标。 如果大家看过一些 webpack4 优化的文章,一定会出现 dll 动态链接库。它以配置之复杂让众多初学者记忆犹新。今天我会以一个学习者的角度去一步一步探讨 webpack dll 的配置,最后得出一个完美的解决方案。 本文的内容和大部分讲解 webpack4 优化文章的观点不一样 ,如果有不同的见解,欢迎在评论区和我讨论。 友情提示:本文章不是入门教程,不会费大量笔墨去描写 webpack 的基础配置,请读者配合教程[源代码](https://github.com/skychx/webpack_learn/tree/master/optimization)食用。 1. 基础概念:dll 其实就是缓存 说实话我刚看见这个 dll 动态链接库 的时候,我真被镇住了:这是什么玩意?怎么根本没听说过? 好学的我赶紧 Google 一下,在 维基百科 里找到了标准定义: 所谓动态链接,就是把一些经常会共享的代码制作成 DLL 档,当可执行文件调用到 DLL 档内的函数时,Windows 操作系统才会把 DLL 档加载存储器内,DLL

Medux+React+Antd4+Hooks+Typescript开箱即用通用后台(下)

夙愿已清 提交于 2020-08-09 07:41:42
项目地址: medux-react-admin 点击在线预览 在 上篇 中主要说明了本项目的一些主要思路,现在来看看具体代码:本项目使用 @medux/react-web-router + antd4 开发,全程使用 React Hooks,并配备了比较完善的脚手架。 安装及运行 // 注意一下,因为本项目风格检查要求以 LF 为换行符 // 所以请先关闭 Git 配置中 autocrlf git config --global core.autocrlf false git clone https://github.com/wooline/medux-react-admin.git cd medux-react-admin yarn install 复制代码 以开发模式运行 运行 yarn start ,会自动启动一个开发服务器。 开发模式时 React 热更新使用最新的 React Fast Refresh 方案,需要安装最新的 React Developer Tools。 以产品模式运行 首先运行 yarn build-local ,会将代码编译到 /dist/local 目录 然后进入 /dist/local 目录下,运行 node start.js ,会启动一个产品服务器 Demo 配置不同的运行环境 /conf 目录下可以为不同的运行环境设置不同的配置 /public

给徒弟说一下前端开发工程师的19个救生工具

人盡茶涼 提交于 2020-08-09 06:23:42
今天看见徒弟写个css属性这么慢,是在是看不下去了,就问了他有没有用过一些辅助工具,他说没有,额。。。我也是很无语,没办法,谁叫我是他师傅呢。还是要尽到一个师傅的责任。所以就利用休息时间给他讲了19个辅助工具,满满的干货呀。我这也是第一次给别人说这么多,这么详细,想想还不错,教给别人东西的感觉是不一样的,别说是徒弟呢。 CSS代码生成器 我:"你曾经是不是想记住如何声明渐变,文本阴影,Flexbox或Grid的CSS属性。 徒弟:"是的" 我:“那你还真是不容易呀,你如果不是一直在用某些css功能和属性,不然很难记住这些玩意儿呀,除非你是记忆大师,但是你也不是呀。就算是精通css的人有时也要进行属性的复习。师傅我就是这样,不断去复习,不是说看一遍就ok了。这里师傅就给你推荐一个辅助工具,css生成器” 徒弟:“谢谢师傅” 我:“都是打工的,别说客气话,做技术的要懂得分享嘛。如果都掖着藏着,也很难提升自己。来,看这,仔细听好了” CSS3 Generator “CSS3 Generator 是一款免费的在线应用,它可以让你快速编写一些现代CSS功能的代码,如Flexbox、渐变、过渡和变换等。 输入所需的CSS值,实时预览结果,复制并粘贴生成的代码。此外,此应用程序还会显示支持CSS代码的浏览器及其版本的列表。 ” 终极CSS Generator “CSS Generator

拍卖源码架构在拍品详情页上的探索

空扰寡人 提交于 2020-08-09 05:39:08
前言 原文地址: github/Nealyang 没有想到之前写的一篇 一张页面引起的前端架构思考 还收到不少同学关注。的确,正如之前在群里所说,一个系统能有一个非常好的架构设计。但是仅仅对于前端项目页面,其实很难把 架构 一词搬出来聊个天花乱坠。 但是!好的代码结构的组织的确能够避免一些不必要的采坑。当然,这其中也不乏对前端工程师的工程师素养约束。 一言以蔽之,对于前端项目的架构(代码组织)而言, 好 ,好不到哪里去。但是 坏 ,却可以令人头皮发麻。 当然。。。我还是在尽可能的希望好~这也是这篇文章的目的所在。 此处权且抛个砖,如果你有更好的见解和想法,欢迎随时交流~ 拍卖详情页 详情页 图上的点我会在下文中挨个介绍 架构设计图 特点 稳定性要求极高 (这一点区分手淘和天猫,毕竟 拍卖 ...你品) 需要详细的日志打点 模块之间的通信非常多(拍品状态、倒计时、出价等) 对于手淘和天猫的商品,一般都是多个人对多个物品。即使出了问题,也不影响购买,大不了问题修复再购买(最坏的情况)。 但是对于拍卖的拍品。对多对一、价高者得的属性。并且具有一定的法律效应。所以稳定性的要求极其之高。同时拍卖又具有非常高时效性要求,所以 apush、轮询啥的都要求实时更新拍品的状态。 综合以上因素的考虑。最终我们没有选择大黄蜂搭建页面的形式构建起详情页。就先走了源码链路的开发。 至于后续是否会推进落地

全面理解 Flutter

孤人 提交于 2020-08-09 02:46:05
当 Flutter 遇见 Web,会有怎样的秘密? 在线教育团队(简称:OED)已经将 Flutter 这样技术在业务中落地了,做为 IMWeb 前端团队的我们也要进行一些尝试。本文从前端角度进行 Flutter 开发的概况描述。主要是为了让您了解和感受一下:Flutter to Web 的实例、Flutter 为什么会出现、Flutter 设计实现原理、Flutter 技术特点和优势。 前言 OED 的客户端团队在 2019 年上半年 ,就已经把 Flutter 落地到 企鹅辅导 的业务中了。今年我们又一起去上海参加了 2019 年谷歌开发者大会,遇见了更多的 Flutter 开发者,这次体验比第一次去的时候感觉熟悉了很多。希望未来有机会把他们邀请来深圳,进行一些 Flutter 的技术分享。 此次开发者大会又恰逢 Flutter to Web 也已经正式合入 Master ,那么,前端同学是否可以趁着这股东风一起参与到 Flutter 的协同开发中呢,我想这问题会困扰着很多人?如果您有好的想法,可以在留言区参与评论。 本文不是一篇 Flutter 详细的学习教程,更像是一个概览,用尽可能平实的语言和对比的思路去描述它。本着依旧从前端同学的角度出发,去理解一项新的技术,但又不限于前端技术本身。希望您能通过这篇文章相对全面的理解 Flutter 这项技术本身。