React作为时下最热的前端框架,各位有啥经验分享下吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了React作为时下最热的前端框架,各位有啥经验分享下吗相关的知识,希望对你有一定的参考价值。

1. 不要陷入纠结工具的怪圈
我们团队一开始用 React 的时候,工具栈应该是 grunt +
grunt-react;写了一段时间感觉有局限,然后老大带头把工具换成了 gulp + browserify + watchify +
reactify,然后又愉快的写了大概半年吧,发现流行的库都上 webpack 了;于是我们的工具栈又变成了 gulp + webpack +
babel-loader。最后大家一致认为 gulp 是多余的,所以我们的工具栈又围绕 webpack
重新搭建了一遍。到最近我负责的一个内部项目,什么 hot-module-replacement、extract-text-plugin(让你在
js 里 require(\'style.scss\'); 这么写的玩意儿)一股脑的造。当然再后来因为业务需要我们又基于 webpack
搭建了自己的构建工具,这是后话……

这将近一年半的折腾历史告诉大家,1) 前端就是个大坑,1个月不学新知识你就会被社区遗忘 2) 现在上 React 真幸福,工具栈基本都稳定了(什么?你还不懂?用 webpack!),不用花太多时间纠结。

PS. HMR 也就那样,虽然 dan 吹得神乎其神,但实际在项目里我发现大家还是习惯手动 Cmd + R
,因为项目大了以后 rebuild 也需要 1、2 秒。

2. DOM 操作是不可避免的

凡是上点儿规模的前端项目,没有 DOM 操作基本是不可能的。且不说最常见的后端「埋点」,你总得用 DOM API
去取值吧;就说一个最简单的,比如右手边这个「回到顶部」的按钮,你纯用 React 写一个试试。当然你会说什么
requestAnimationFrame,什么 ReactCSSTransitionGroup blah blah
blah,真正到项目里你会发现还是 DOM API 简单。

3. 拥抱 ES 6,拥抱 React v0.14
这俩为什么放在一起说呢?因为 React v0.14 里提出了一个全新的组件概念叫做:无状态的函数式组件(Stateless functional components)。它大概长这样:
var Aquarium = (species) => (
<Tank>
getFish(species)
</Tank>
);

有没有发现被传统的 createClass 方法精简了很多?当然这样写组件也有很多局限,比如不能声明各种生命周期方法等等,但是在常见的前端业务场景中,纯 render 的组件不在少数。在这样的语法推出后,我们就能把这些组件更方便的抽出来复用了。
此外,拥抱 ES 6 还有很多的好处,比如在加载依赖的时候不用先 var xxx = require(\'xxx\'); 再 var yyy = xxx.yyy; 而是可以直接 import yyy from \'xxx\'; 简洁明了。

4. 生态环境仍然在成长中,坑不少

中首先要口诛笔伐一下的就是 react-router,我们从 v0.10 开始用,到现在
v1.0。你知道为了升级这玩意儿我们改了多少次业务代码么?每次升级 API 都要变,无力吐槽。当年好不容易搞懂了
v0.11,在博客里写了篇技术文章分享,结果后面的日子就是各种被催更……一个月前抽空就 0.13 版又重写了一遍教程,这不 1.0
版又出了,API 基本全都不一样了!!不一样了!!一样了!!样了!

当然除了坑也有不少高质量的生态环境产品,比如蚂蚁的 ant design。

5. Server 端渲染很美,至今没看见哪个规模级的产品用到
可能是我孤陋寡闻吧,欢迎评论中跟进。自己摸索着写过一个最简单的 server 端渲染,但是这套逻辑如果套到我们现在的业务逻辑中,几乎可以直接枪毙。为了实现 server 端渲染需要做出的 trade off 太多。

6. React 很简单,也很难
简单是因为 React 的 API 真的很少,官网的各种文档花一个下午也能看个七七八八(此时此刻再看看 Angular……)。但是当你以为你真的搞懂 React 的时候,看看React 源码剖析系列 - 解密 setState - pure render - 知乎专栏这篇文章开头提的问题,有多少人能不假思索的答对呢?(顺便安利一下,我们团队的知乎专栏,目前处于死磕 React 的状态)

当你真正在业务项目中使用 React 的时候,你会发现它的生命周期比你想象的复杂;它的 API 背后的逻辑比你以为的麻烦。当然,首先你要踩进这个坑。

7. 对于楼上某位仁兄表示《React:引领未来的用户界面开发框架》这本书太难的回答,作为译者之一表示对不起你。作为补偿,所有购买本书的同学均可凭拍照私信我咨询 React 相关的问题。
参考技术A 知乎用户,
詹彦峤、朱超强、赵鹏 等人赞同
如果是技术选型调研的话,除了好处也应该了解一些需要注意的问题吧,下面随便列列,仅供参考。

1. 不要陷入纠结工具的怪圈
我们团队一开始用 React 的时候,工具栈应该是 grunt + grunt-react;写了一段时间感觉有局限,然后老大带头把工具换成了 gulp + browserify + watchify + reactify,然后又愉快的写了大概半年吧,发现流行的库都上 webpack 了;于是我们的工具栈又变成了 gulp + webpack + babel-loader。最后大家一致认为 gulp 是多余的,所以我们的工具栈又围绕 webpack 重新搭建了一遍。到最近我负责的一个内部项目,什么 hot-module-replacement、extract-text-plugin(让你在 js 里 require('style.scss'); 这么写的玩意儿)一股脑的造。当然再后来因为业务需要我们又基于 webpack 搭建了自己的构建工具,这是后话……

这将近一年半的折腾历史告诉大家,1) 前端就是个大坑,1个月不学新知识你就会被社区遗忘 2) 现在上 React 真幸福,工具栈基本都稳定了(什么看你还不懂看用 webpack!),不用花太多时间纠结。

PS. HMR 也就那样,虽然 dan 吹得神乎其神,但实际在项目里我发现大家还是习惯手动 Cmd + R
,因为项目大了以后 rebuild 也需要 1、2 秒。

2. DOM 操作是不可避免的
但凡是上点儿规模的前端项目,没有 DOM 操作基本是不可能的。且不说最常见的后端「埋点」,你总得用 DOM API 去取值吧;就说一个最简单的,比如右手边这个「回到顶部」的按钮,你纯用 React 写一个试试。当然你会说什么 requestAnimationFrame,什么 ReactCSSTransitionGroup blah blah blah,真正到项目里你会发现还是 DOM API 简单。

3. 拥抱 ES 6,拥抱 React v0.14
这俩为什么放在一起说呢看因为 React v0.14 里提出了一个全新的组件概念叫做:无状态的函数式组件(Stateless functional components)。它大概长这样:

var Aquarium = (species) => (
<Tank>
getFish(species)
</Tank>
);

有没有发现被传统的 createClass 方法精简了很多看当然这样写组件也有很多局限,比如不能声明各种生命周期方法等等,但是在常见的前端业务场景中,纯 render 的组件不在少数。在这样的语法推出后,我们就能把这些组件更方便的抽出来复用了。
此外,拥抱 ES 6 还有很多的好处,比如在加载依赖的时候不用先 var xxx = require('xxx'); 再 var y = xxx.y; 而是可以直接 import y from 'xxx'; 简洁明了。

4. 生态环境仍然在成长中,坑不少
其中首先要口诛笔伐一下的就是 react-router,我们从 v0.10 开始用,到现在 v1.0。你知道为了升级这玩意儿我们改了多少次业务代码么看每次升级 API 都要变,无力吐槽。当年好不容易搞懂了 v0.11,在博客里写了篇技术文章分享,结果后面的日子就是各种被催更……一个月前抽空就 0.13 版又重写了一遍教程,这不 1.0 版又出了,API 基本全都不一样了!!不一样了!!一样了!!样了!

当然除了坑也有不少高质量的生态环境产品,比如蚂蚁的 ant design。

5. Server 端渲染很美,至今没看见哪个规模级的产品用到
可能是我孤陋寡闻吧,欢迎评论中跟进。自己摸索着写过一个最简单的 server 端渲染,但是这套逻辑如果套到我们现在的业务逻辑中,几乎可以直接枪毙。为了实现 server 端渲染需要做出的 trade off 太多。

6. React 很简单,也很难
简单是因为 React 的 API 真的很少,官网的各种文档花一个下午也能看个七七八八(此时此刻再看看 Angular……)。但是当你以为你真的搞懂 React 的时候,看看React 源码剖析系列 - 解密 setState - pure render - 知乎专栏这篇文章开头提的问题,有多少人能不假思索的答对呢看(顺便安利一下,我们团队的知乎专栏,目前处于死磕 React 的状态)

当你真正在业务项目中使用 React 的时候,你会发现它的生命周期比你想象的复杂;它的 API 背后的逻辑比你以为的麻烦。当然,首先你要踩进这个坑。

7. 对于楼上某位仁兄表示《React:引领未来的用户界面开发框架》这本书太难的回答,作为译者之一表示对不起你。作为补偿,所有购买本书的同学均可凭拍照私信我咨询 React 相关的问题。

最后再次安利一下我们团队的专栏: pure render - 知乎专栏

8. 梦中惊醒补充一点,截止目前为止,Babel 6 是个大坑,业务中使用的时候一定要注意其与 Babel 5 的巨大区别。(关于补充的这一点,再额外的阐述一下,应该理解成 Babel 5 为了让大家愉快的用上 ES 6 做了一些非标准的转换,这些转换在 Babel 6 中都去掉了。所以你在 Babel 5 下面编译正常的代码在 Babel 6 编译时可能就会出错。这个问题不能确切的算作 Babel 的坑,但是会影响你的开发进度)本回答被提问者采纳

最热的前端Web组态工具(可视化)

现在系统可视化需求越来越大,本文整理几个目前最热的前端Web组态工具。

1.mxgraph:

介绍:开源免费,但是需要解决的问题很多,国内学习参考资料少。但是,可视化组态的实现基本都是借助于这个框架来实现的。

演示demo:https://jgraph.github.io/mxgraph/javascript/examples/grapheditor/www/index.html

mxgraph官方文档API:http://jgraph.github.io/mxgraph/docs/js-api/files/model/mxCell-js.html

最大的交流社区:https://forum.jgraph.com/tags/swimlane/index.html

交流社区2:https://stackoverflow.com/questions/tagged/mxgraph

github:https://github.com/jgraph/mxgraph

效果:

2.Sovit2D

Sovit2D可视化开发工具,平台提供免费个人版可以试用,该产品可灵活、快捷地制作各类交互式常规屏和大屏可视化,内置百余种炫酷组件和组件动画效果,得到更形象、更直观的可视化呈现。动画效果的设计是它的一大特点。这是目前其它同类产品不具有的。另外该公司还研发了SovitChart产品,它是一套专注于制作可视化图表的软件系统。它是基于Echarts开源API研发了一套基于图表可视化界面开发系统,用户只要通过鼠标拖拉控件就能设计出精美的图表可视化web页面,同时可以方便的与后端数据进行绑定,实现数据驱动页面的变化,实现炫酷的图表展示。

官网演示demo: http://www.sovitjs.com/demo.html

Sovit2D官方文档API:http://www.sovitjs.com/document.html

**电场主接线图:

煤矿采煤实时监控:

3.le5le-topology:

介绍:A diagram (topology, UML) framework uses canvas and typescript. 一个用canvas+typescript写的绘图【核心库,不依赖框架】(微服务架构图、拓扑图、流程图、类图等ULM图,动画、视频支持)。本框架目前已经实现了拖拽、缩放、旋转、自定义属性等基础操作,开发者只用关心图表绘画实现即可。其次,流畅、高性能 - 使用 canvas 和多个场景离屏,操作过程流畅;完全不用担心 SVG 方式 dom 元素过多,性能高效。其三,自带部分动画效果,能满足基本的需求。使用TypeScript语言。chrome、firefox、ie11等浏览器是没有问题的。IE9以下版本没有测试,仅仅是绘图引擎,只需要支持canvas+html5标准即可

演示demo:http://topology.le5le.com/

github:https://github.com/le5le-com/topology

gitee:https://gitee.com/mirrors/topology

效果:

4.draw.io

介绍:和mxgraph相比,在其基础上加了一些东西,更加完善。但是都是出自同一家公司之手。

演示demo:https://www.draw.io/

github:https://github.com/jgraph/drawio

社区博客:https://about.draw.io/blog/

效果:

5.HT-2D/3D

演示demo:http://www.hightopo.com/demo/2deditor/HT-2D-Editor.html

全部demo:http://www.hightopo.com/demos/index.html

github:图扑软件

社区博客:https://www.hightopo.com/blog/

效果:https://www.hightopo.com/demos/index.html

 3D地铁站台:

         2D电力相关:

         editor参考:https://www.hightopo.com/demo/Simple3DEditor/index.html

标题

6.3D可视化楼宇、水站实时监测系统:

介绍:3D可视化楼宇管理系统,实时监测楼宇相关的各方面的数据。提到工业互联网往往会涉及:物联网、IoT、5G、数字孪生、边缘计算、PaaS平台、SaaS应用、产业互联网、互联网+、工业4.0、智慧城市、智慧园区、智慧楼宇、智能制造等概念,但本文将围绕可视化的话题,围绕更基础的 HTML5/WebGL/WebVR 等底层技术,我们觉得业界还没达到智能化、平台化的成熟阶段,走得太快即使是 GE Predix 也会从明星变流星,了解垂直行业需求,采集足够多有效数据,做好实时的、稳定的、美观的、Web 化的 2D 和 3D 数据可视化呈现,是工业互联网需要走好的第一步。

演示demo:http://www.hightopo.com/demo/ht-smart-building/

github:图扑软件

效果:

效果:

7、前端设计Mqtt(订阅、发布)

参考:https://github.com/UsrIot/usrCloudDemo_js/blob/master/web/mqttws31.js

8.OSHMI

效果:

介绍:适用于变电站,物联网和自动化应用的移动和云友好型SCADA HMI。

github:https://github.com/riclolsen/OSHMI

官网:https://oshmiopensubstationhmi.sourceforge.io/

博客:http://ricolsen1supervc.wordpress.com(被墙)

图形参考来源1:https://www.freepik.com/search?dates=any&format=search&page=1&query=%E5%B7%A5%E4%B8%9A&sort=popular

9.HslControls控件库

效果:

介绍:HslControls是一个工业物联网的控件库,基于C#开发,配套HslCommunication组件可以实现工业上位机软件的快速开发,支持常用的工业图形化控件,快速的集成界面开发。 主要包含了按钮,开关,进度条,信号灯,数码管,时钟,曲线显示控件,仪表盘控件,管道控件,瓶子控件,饼图控件,传送带控件,温度计控件,鼓风机控件,阀门控件,电池控件等等。

开发语言:c#

github:https://github.com/dathlin/HslControlsDemo

博客:https://www.cnblogs.com/dathlin/p/7703805.html

注意:前端主要是JavaScript语言开发,c#我也不懂,只是做参考,看看人家的思路啥的。

10.VUE组态-支持拖动

效果:

介绍:个人基于vue+quasar的web组态,核心代码基于vue,quasar仅仅是为了方便构建
github预览访问如下地址:https://phynos.github.io/WebTopo/dist/spa

demo:https://phynos.github.io/WebTopo/dist/spa/

github:https://github.com/phynos/WebTopo

博客:https://bloghttps://github.com/phynos/WebTopo.csdn.net/lpch1987/article/details/96288974

11.WTScada HTML5组态百软度件

效果:

介绍:基于HT框架的web组态软件,HTML5技术,道在线专组态运属行.

demo:http://www.wtscada.com/scada/

github:暂无

12、WebGL 

介绍:WebGL是目前最为流行的3D绘图协议

13、WVGL

介绍:V虚拟现实行业

以上是关于React作为时下最热的前端框架,各位有啥经验分享下吗的主要内容,如果未能解决你的问题,请参考以下文章

最热的前端Web组态工具(可视化)

五款最热的Node.js端到端测试框架评测

低代码开发——进最热的赛道,啃最硬的骨头

免费讲座 · 即将开始独角兽大牛教你如何玩转chrome

为什么使用React作为云平台的前端框架(PPT)

5 月份最热的 GitHub 项目