react

开发一个大型后台管理系统,应该用前后端分离的技术方案吗?

僤鯓⒐⒋嵵緔 提交于 2020-07-28 10:08:07
话说这天,我们团队开会讨论了一个问题,不,与其说“讨论”,不如说“争吵”更合适。 背景是这样的: 我们要开发一个 xxx 后台管理系统,这个系统业务复杂、功能又多,大家的争吵集中在“这个系统是否应该用前后端分离的方案”。 这次争吵的问题比较典型,于是我就写了这篇文章。为了大家好理解,把“xxx 后台管理系统”泛化一下,变成: 开发一个大型后台管理系统,应该用前后端分离的技术方案吗? 先说一下,本文中的观点肯定有人不认同,再加上我对前端技术掌握有限,所以大家批判的看吧。 1. 先审题,冷静的分析一下 前后端分离的优点多多,这不需要多说,大家人人都清楚。 来,讨论之前,我们先一起好好审审题。 结合“ 开发一个大型后台管理系统 ”这个约束条件,冷静的分析一下: • 什么是后台管理系统:首先后台管理系统这个称呼,意味着这是一个 B 端系统 。可以小到部门级应用(客户投诉登记系统、办公设备台账系统),大一点可以是大集团级核心系统(500 强保险公司客服、呼叫中心),可以是 ERP、CRM、OA(SAP、用友、泛微协同),可以是一个 B2C 电商的商城后台、支付网关管理控制台,可以是 Saas 的管理后台(Salesforce、Teambition、Jira),可以大到阿里云控制台…… • 什么是大型:我理解大型系统是指功能模块多、交互复杂,而不是访问量、TPS、数据量大。所以 CMS、OA

详解 react diff

左心房为你撑大大i 提交于 2020-07-28 10:04:49
前言 react diff 是从 fiber 树的 Root 节点开始,从上往下一层一层的对新老节点进行 比较。期间组件的 key 以及 type 决定是否需要复用老的节点。节点的 index 最终决定了 dom 是否需要被移动。没有被复用的节点会被删除,也就不需要对其子树进行 diff,从而不需要跨层级的 diff。 附图: 链接: pan.baidu.com/s/1sb1XqteO… 密码:s364 实际的栗子 item 1 this Header will be deleted item 2 this is Footer 复制代码 上面为测试的 HTML 结构,其中 this Header will be deleted 元素是在点击 document 的时候会被删除或者添加,代码如下,除了以这种形式的增删,还可以以 map 或者其他方式的增删节点,通过原生 dom 的增删,不会通过 react 处理自然也不会被 diff: class APP extends React.Component{ constructor(props){ super(props) this.state = { showHeader: false } } clickHandler (){ this.setState({ showHeader: !this.state.showHeader }) }

程序人生:程序员想要提升英文阅读能力怎么办?实用秘籍推荐!

你离开我真会死。 提交于 2020-07-28 08:53:38
我相信正在阅读这篇文章的你也努力挣扎于提升英文阅读能力,但是你的感受是英文阅读一直都提升不起来,改变极小或没有任何变化。随着全球化,程序员的我们也应该考虑学好英文,在获取信息上更有竞争力;有时会去查英文技术文档,想获取最原始的信息, 然英文阅读能力不够。 我也有同样的遭遇。 代码人生 6年后,我重拾英语,2018年底开始自学英语,期间经历过放弃、重新开始、写词汇学习工具等。到目前我的英文阅读能力提升不少,对英语学习已变成一个平和的态度,现在我更喜欢阅读英文内容。下面是我的这一年半来英语阅读提升的感受和实用经验,能够帮助你提升你的英文阅读能力,未来让阅读英文更轻松,在工作中能有不一样的优势。 心理准备 学习语言是一个过程,不能当作考试,心理上给自己2~3年的时间,也就是说在2-3年里,你时不时要阅读一些英文内容,一开始尽管很慢,但当你阅读你喜欢的技术文章、关注你喜欢的事物获取信息后,你就会得到有用的信息,获得信心,从而持续的阅读,然后将英文阅读变成习惯。2019年5-7月期间,我在medium上阅读大概5篇比较长的英文技术文档,读得很慢,但完成一篇阅读获取信息后感觉收获颇多,后还在组内做过深入分享,通过文章所学到的信息使得我对英文阅读增加了不少信心。 总之,不急于求成,日积月累,心理上有一个长时间的准备。 2/8原则 如果有2500 - 3000的词汇量,可以理解90%的日常英语会话

前端三大框架:数据绑定与数据流

回眸只為那壹抹淺笑 提交于 2020-07-28 06:58:51
目录 序言 单向数据绑定 vs 双向数据绑定 单向数据流 vs 双向数据流 数据流与数据绑定 参考 1. 序言 在前端三大主流的框架中,我们可能会经常听到 React 是单向数据流,采用单向数据绑定,而 Vue 2.x 也是单向数据流,但同时支持单向数据绑定和双向数据绑定,而 Angular 和 AngularJS 又有所不同,到底数据绑定与数据流之间有什么关联?单向数据绑定就等价于单向数据流吗?支持双向数据绑定就一定是双向数据流吗?这篇文章将理清在前端三大框架中数据绑定与数据流之间的关联与区别。 注:若以下文章中没有特别指明 Vue 的版本,默认代表 Vue 2.x 。Angular 一般意义上是指 Angular 2 及以上版本,而 AngularJS 专指 Angular 的所有 1.x 版本。 2. 单向数据绑定 vs 双向数据绑定 所谓数据绑定,就是指 View 层和 Model 层之间的映射关系。 单向数据绑定: Model 的更新会触发 View 的更新,而 View 的更新不会触发 Model 的更新,它们的作用是单向的。 双向数据绑定: Model 的更新会触发 View 的更新, View 的更新也会触发 Model 的更新,它们的作用是相互的。 React 采用单向数据绑定 当用户访问 View 时,通过触发 Events 进行交互,而在相应 Event

了解React.js中数组子项的唯一键

帅比萌擦擦* 提交于 2020-07-28 04:14:42
问题: I'm building a React component that accepts a JSON data source and creates a sortable table. 我正在构建一个接受JSON数据源并创建可排序表的React组件。 Each of the dynamic data rows has a unique key assigned to it but I'm still getting an error of: 每个动态数据行都有一个分配给它的唯一键,但是我仍然遇到以下错误: Each child in an array should have a unique "key" prop. 数组中的每个子代都应具有唯一的“键”道具。 Check the render method of TableComponent. 检查TableComponent的渲染方法。 My TableComponent render method returns: 我的 TableComponent 渲染方法返回: <table> <thead key="thead"> <TableHeader columns={columnNames}/> </thead> <tbody key="tbody"> { rows } </tbody> </table> The

React useEffect的陷阱

◇◆丶佛笑我妖孽 提交于 2020-07-28 03:58:26
转自: https://zhuanlan.zhihu.com/p/84697185 好久不写React的相关的东西,因为虽然这个技术作为工具还是在得到越来越多的应用,但是,React自 Hooks和Suspense 以来,也没有什么特别值得一说的新功能出来,所以,我也觉得真没有什么好写的:-) 回顾一下过去几个月,值得一提的,就是React Hooks正式推出之后暴露出来的一些小问题,这些小问题不是React的缺陷,而是开发者在面对Hooks这种新的思维方式时的水土不服。 今天就来讲一个useEffect这个Hook使用的一个小陷阱,看下面的代码,一个Counter,在窗口大小改变的时候,在console上输出当前count。 function App() { const [count, setCount] = useState(0) useEffect(() => { // 让resize事件触发handleResize window.addEventListener('resize', handleResize) return () => window.removeEventListener('resize', handleResize) }, []) const handleResize = () => { // 把count输出 console.log(`count is

如何迅速有效学习web前端开发?在学习中你更应该注重哪些东西

。_饼干妹妹 提交于 2020-07-28 03:39:13
什么是高效率学习? 一:追求学习的性价比 学习性价比 = 所学到的有用的知识 ÷ 花费的时间 **ps:**如果你用了一年时间,还不能仿站,显然效率是低的。 想要学习性价比高,就尽力向这两点努力: **1. **尽量学有用的知识,暂时用不到的可以放在后面学。 **2. **保证学习速度,能一下午学完的知识点就坚决不要拖两个下午。 我们来看看前端哪些知识是有用的。而且我们要精简。 1. 英语 2. HTML + CSS + JS 3. HTTP 4. 浏览器 API 这四个是必然要学的,没法再精简了。 为什么英语要放在这里? 因为编程全都用英文,“if” “else” “while” “for” “var” “new”之类。 HTML 中的 <a> 标签的全称是 “anchor” ,很多人并不记得,这个 a 好记,不记得全称不要紧。 但有些标签你不记得全称就不行,比如 <abbr> <aside> <blockquote> 。 不少人甚至由于不知道这些单词的意思而放弃使用这些标签!!! CSS 里英语就更重要了,比如 transition、transform、translate,你在不了解英语含义的情况下,很难把这些记下来。 1. 对于英语,我的建议是: 设备上可以装翻译工具,哪里不会点哪里。 抓住可以学英语的机会。比如多用英文软件,少用汉化版。比如用英文操作系统,不用中文版

服务端渲染总结

妖精的绣舞 提交于 2020-07-28 03:04:30
1. 服务端渲染2个优点 1.1 服务端渲染可以减少白屏时间 服务端渲染,客户端接收到html,可以直接显示 客户端渲染,客户端接收到html,解析完毕,还要向服务端去请求js文件,返回后,执行完js,才能显示完成 因此,服务端渲染,白屏时间短。 1.2 服务端渲染利于SEO 有清晰的html结构,而不是后来用js插入的结构,利于爬虫爬取有效信息。 2. 常见框架的服务端渲染 2.1. react服务端渲染 1. 只有componentWillMount和render会在服务端调用,其他周期均在客户端调用 2.2. vue服务端渲染 1. 只有 beforeCreate 和 created 会在服务端调用。其他周期均只能在客户端调用 来源: oschina 链接: https://my.oschina.net/u/4256405/blog/4291428

通俗易懂的vue虚拟(Virtual )DOM和diff算法

偶尔善良 提交于 2020-07-28 02:48:27
云栖号资讯:【 点击查看更多行业资讯 】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 最近在看一些底层方面的知识。所以想做个系列尝试去聊聊这些比较复杂又很重要的知识点。学习就好比是座大山,只有自己去登山,才能看到不一样的风景,体会更加深刻。今天我们就来聊聊Vue中比较重要的vue虚拟(Virtual )DOM和diff算法。 虚拟(Virtual )DOM Virtual DOM 其实就是一棵以 JavaScript 对象(VNode 节点)作为基础的树,用对象属性来描述节点,相当于在js和真实dom中间加来一个缓存,利用dom diff算法避免没有必要的dom操作,从而提高性能。当然算法有时并不是最优解,因为它需要兼容很多实际中可能发生的情况,比如后续会讲到两个节点的dom树移动。 上几篇文章中讲vue的数据状态管理结合Virtual DOM更容易理解,在vue中一般都是通过修改元素的state,订阅者根据state的变化进行编译渲染,底层的实现可以简单理解为三个步骤: 1、用JavaScript对象结构表述dom树的结构,然后用这个树构建一个真正的dom树,插到浏览器的页面中。 2、当状态改变了,也就是我们的state做出修改,vue便会重新构造一棵树的对象树,然后用这个新构建出来的树和旧树进行对比(只进行同层对比),记录两棵树之间的差异。 3

JavaScript 开发人员更喜欢 Deno 的五大原因

时光毁灭记忆、已成空白 提交于 2020-07-28 01:10:56
云栖号资讯:【 点击查看更多行业资讯 】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! NodeJS 的创造人 Ryan Dahl 刚发布了一个新的运行时 Deno,旨在解决 Node 存在的许多缺陷。像大家一样,我一开始也以为这只是又一个 JS 框架。但是深入了解过 Deno 的各项优点之后,我意识到了 Deno 正是 2020 年的今天,后端 Javascript 开发人员所需要的东西。在这篇文章中,我们就来看一下 JavaScript 开发人员为什么在使用 Deno 时能比 Node 获得更流畅、更现代化的体验。 现代化的 Javascript——ES 模块 如果你也像我一样是一位 React 开发人员,你会注意到使用 NodeJS 导入软件包的语法是不一样的。这是因为 Node 面世于 2009 年,这些年来 Javascript 得到了大量更新和改进。 在 React(和 Deno)中,我们使用 import package from 'package’语法,而在 Node 中我们使用 const package = require(“package”) 语法。 Deno 的 ES 模块 import 有两个优势: 1.通过 import,你可以有选择地从包中加载所需的部件,从而节约了内存空间。 2.加载与 require 是同步的,而 import