设为首页 加入收藏

TOP

前端迷思与React.js(五)
2017-10-10 13:55:46 】 浏览:2681
Tags:前端 React.js
么要分给两个人写?以表单提交为例,后端要对数据做校验,前端也要做。为什么要让两个人都写一次?前端说可以让后端也写 Node.js ,这样就可以服用代码了呀。后端写了三年的 Java 你现在告诉他要全部重来?后端肯定不愿意啊。
矛盾就出在,分『后端』和『前端』两个职位上。大公司细分后端和前端,也是可以理解的。

    说前后端分离的缺点:

1. 大部分站点,不应该分前后端。除非你的前端,非常非常非常复杂。但是大部分站点的前端,根本没有那么复杂!
2. 分了前后端很容易出现各自为政的情况。推诿、邀功、互相鄙视,不一一列举了。
3. 有人问一个人怎么又学后端又学前端?我的建议是把前端做薄,如果没有必要,不要搞什么 Angular 、 React 。用原生 JS 或者 jQuery 能满足大部分网站。同时后端向 Rails 学习。局部交互复杂的地方,采用动态加载来做交互。
4. 有人说你是前端的叛徒,你这么做前端还有什么前途。

其实真正主题是:前后端分离是前端不得志的必然结局。

难道前后端分离没有好处吗?
只有一个好处:好招聘。毕竟你要招一个优秀的全栈工程师是极其困难的。

思路

1. 保持前端简单,复杂了就用原生的方式封装,具体来说就是用自定义标签来封装复杂组件。这样一来,后端同事还是可以开发页面,因为只是多了一个自定义标签而已,本质还是 HTML
2. 尽量不要在开发状态加 watcher ,目的也是让后端可以直接上手,不需要了解那么多工具。转译放到 Web 框架的开发者模式里面做,看到 less 请求加转义成 CSS 不是什么难事也不复杂。
3. 前端只是辅助(这里说的是大多是网站,不包括重型 Web 应用),前端要做好服务化:健全的文档、友好的接口。
4. 前端也要学后端知识,别在那自嗨。
5. 小公司别搞前后端分离,徒增复杂度!

单元测试

前后端分离后,意味着更多的业务逻辑将融入到前端程序中, 对应的我们需要前端工程师需要完成对应业务逻辑的单元测试, 以确保前端质量不会逐渐沦陷.

  • 基于 java script 的单元测试被证明是一种高效的测试方法,其中 71% 的组织执行了 java script 单元测试,而 84% 的组织则相信它是有益的!
  • JasmineMocha 是最流行的 java script 单元测试框架,Jasmine 主要配合 AngularJS 进行单元测试,而 Mocha 则与 ReactJS 配合使用。

目前前端自动化单元测试社区情况:

Jasmine & Protractor (72.4%),

Jasmine & Karma (67.7%),

Jasmine & Jest (58.3%),

Karma & Protractor (58.6%).

服务端

组件化是我们基础设施之一, 服务端(.net, java)也想做更多通用组件.但往往项目或产品研发周期紧, 在一些组织没有足够时间研发通用组件.

权衡

我们更多的时候,更应该思考的是平衡和最优组合:

什么情况下应该后台渲染,什么情况下应该前台渲染。
什么情况下应该用html+css控制页面,什么情况下应该用js控制页面。

    React.js里所谓的“页面组件”,并不是指一个checkbox,或一个input这样细粒度的组件,可以理解为对一个“功能单一的一个页面区域”的封装,粒度更大。虽然checkbox等也需要封装住成组件,但那是粒度更细Controls,和React.js的组件概念不是一个级别。 单纯使用react而不搭配其他类库是作死 真的还不如用jquery。

    工程化的需求也比前些年提高的无数倍,去年我用grunt,后来用gulp,然后browserify来了,2016年用webpack,babel,工具的更换意味着开发体验也是越来越好。另外JSX不是HTML,JSX不是HTML,JSX不是HTML。

    React满足上面的一些方面,不满足另一些方面,和其他工具一样。你需要React,是因为两点

    第一, 你充分评估了你的项目,理解你要解决的问题是什么,是快速开发,性能,团队的ergonomics,多数情况下要解决的问题是多个要素的平衡

    第二, 你充分评估了React这个栈,理解它是解决你的具体问题的最佳工具,你真的理解了自己的场景中非用React不可的那些事情
  
只是一个营销类的推广页面,仅仅只有轮播、几个文本框的表单的极浅交互,我还是推荐大伙使用原生 / zepto / jQuery之流。假如您很在意体积,计较网络环境(2G/3G)等,可以使用服务器端渲染或者无阻塞UI(即添加占位符),使用带有GZIP的CDN,React各类库绝对能够在100K以内,假如超过,建议您使用按需加载。我相信您的服务器应该会添加有304/ETAG之类的缓存。

    对于中大型项目,React确实是优良之选,当然也可以尝试Vue去迭代中小型项目。flux/reflux/redux 不仅仅只能用在React,也能用在Vue/Angular等等框架,仅仅只是一个数据流思想,您选择性地使用。

    对于大型项目,推荐 Webpack 来构建业务代码, Rollup 来打包你的小轮子。使用Rx优化你的数据流。Typescript强健你的代码,提升你的开发效率(头一周可能会有些痛苦)。但在此之后的收益是非常高的。 对于中小型项目,推荐React/Redux/React-Router来构建你的代码

总结

   因为没有完美的框架,只有适合的应用场景,选择我们自己更适合的。
      框架都只是为了开发效率良好地组织项目代码,并不完全是为性能而生。 注意IT时代在变, 任何技术都会演进, 凡是存在的, 都是合理的。
       服务端研发工程师也少有全栈工程师。React.js适合长期, 用户体验高的交互多的项目或信息系统产品。

--------------------------------------------------------------------------------------------------------------------------------------------

今天先到这儿, 希望对您在团队管理, 项目管理, 产品管理, 系统架构 有参考作用 , 您可能感兴趣的文章:
前端工程师技能整理
精益IT组织与分享式领导
企业信息化与软件工程的迷思
企业项目化管理介绍
软件项目成功之要素
人际沟通风格介绍一
精益IT组织与分享式领导
学习型组织与企业
企业创新文化与等级观念
组织目标与个人目标
初创公司人才招聘与管理
人才公司环境与企业文化
企业文化、团队文化与知识共享
高效能的团队建设
项目管理沟通计划
构建高效的研发与自动化运维
某大型电商云平台实践
互联网数据库架构设计思路
IT基础架构规划方案一(网络系统规划)
餐饮行业解决方案之客户分析流程
餐饮行业解决方案之采购战略制定与实施流程
餐饮行业解决方案之业务设计流

首页 上一页 2 3 4 5 6 下一页 尾页 5/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇【设计模式从零学—写在设计模式.. 下一篇- cinfiguration.resolve.extensi..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目