整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

关于ExtJS与JQuery对比

先分别介绍一下ExtJS和JQuery,然后进行对比分析

一、什么是ExtJS?

1、ExtJS可以用来开发RIA也即富客户端的AJAX应用,是一个用javascript写的,主要用于创建前端用户界面,是一个与后台技术无关的前端ajax框架。因此,可以把ExtJS用在.Net、Java、Php等各种开发语言开发的应用中。ExtJs最开始基于YUI技术,由开发人员JackSlocum开发,通过参考JavaSwing等机制来组织可视化组件,无论从UI界面上CSS样式的应用,到数据解析上的异常处理,都可算是一款不可多得的JavaScript客户端技术的精品。

2、Ext的UI组件模型和开发理念脱胎、成型于Yahoo组件库YUI和Java平台上Swing两者,并为开发者屏蔽了大量跨浏览器方面的处理。相对来说,EXT要比开发者直接针对DOM、W3C对象模型开发UI组件轻松。

二、什么是JQuery?

jQuery是一个兼容多浏览器的javascript框架,核心理念是write less,do more(写得更少,做得更多)。jQuery在2006年1月由美国人John Resig在纽约的barcamp发布,吸引了来自世界各地的众多JavaScript高手加入,由Dave Methvin率领团队进行开发。如今,jQuery已经成为最流行的javascript框架,在世界前10000个访问最多的网站中,有超过55%在使用jQuery。

jQuery是免费、开源的,使用MIT许可协议。jQuery的语法设计可以使开发者更加便捷,例如操作文档对象、选择DOM元素、制作动画效果、事件处理、使用Ajax以及其他功能。除此以外,jQuery提供API让开发者编写插件。其模块化的使用方式使开发者可以很轻松的开发出功能强大的静态或动态网页。

三、二者对比

1.JQuery-EasyUI是仿照Ext做的。

2.Ext框架是一个整体,面向对象的编程思想,每个控件之间可以相互通讯。

3.JQuery的控件全都是分散的,没有整体性可言。你可以单独拿出来一个控件就能用。

4.若要开发系统应用,首选Ext,控件库丰富,扩展和维护都方便。若是简单的页面动画和效果,首选JQuery

5.jquery只是一个工具库,比较简单,相对容易。 Ext是一套真正的ria开发框架,甚至可以实现桌面应用一样的强大功能。本身代码质量极高,而且是高度的面向对象设计。jQuery 入门相对容易一些,实际用的过程中要用到各种插件,基本上用一个“学”一个。 ExtJS 入门稍难。

6.大小比较:首先ExtJS是一个完整的Framework,是重量级别的,easy ui 是基于jquery库的一套UI组件库,是轻量级的,ExtJS是应用application级的,而jquery是page页面级的。当然application也是由page组成的,那就需要你自己去完成了,考虑你的需求,和使用框架的初衷,选择使用哪一种。同时ExtJs由于是重量级框架,完全面向对象风格,提供API非常完备也非常庞大,所以学习成本也想相对较大。

7.兼容性比较:ExtJS兼容IE全系列浏览器和其他非IE现代浏览器,jquery UI向来不太考虑ie低版本浏览器的兼容,从态度上的鄙视。easy UI是基于jquery的,jquery2.X以上的版本不再支持IE6、7、8,,已郑重声明,请看官方网站,easyUI最新版本1.3.3使jQuery2.0,由于又很多HTML5特性,不再支持IE6,低版本由一些小部分的兼容不够好,请自己做技术选型的时候去测试,你要使用那个版本。在兼容问题上,他们都有瑕疵,看你的接收程度。

8.使用许可license. EXTJS 2.1以上版本,商用需要购买商业授权,jquery UI 使用MIT协议,开源。 jquery easyUI如果商用需遵循license commercial商业许可,也就是要购买使用权.

的, 我就是鼎鼎大名的Javascript, 典型的高富帅,前端编程之王,数以百万计的程序员使用我来编程。 如果你没有用过我就太out了。

不过当我是一个屌丝时, 真的没有想到能发展到如今的地位......

第一章:出世

我出生在上古时代的浏览器Netscape中, 那个时候的网页真是乏善可陈, 你可能都想象不到, 主要是些丑陋的静态文本和简单的图片, 和现在美轮美奂的页面相比,差的实在太远了, 不信你请看著名的Yahoo 网站:

那个时候人们还在用Modem(调制解调器)通过电话线拨号上网, 每次拨号都有种吱吱啦啦声音, 就像一个铁片努力的刮一个锅底,让无数人抓狂不已。

这还不算什么, 网速只有28.8kbit /s , 下载一个网页都得耐心的等待半天。

我的主人Brendan Eich 有一回用公司的Netscape上网购物的时候, 需要注册用户, 填了一个表单, 点击了提交按钮, 等待了38秒, 然后服务器告诉他:“对不起, 您忘了选择性别了”

他几乎要崩溃:“靠,怎么能够这样! 这么简单的问题浏览器怎么不告诉我, 还得让我把数据提交到几千公里外的服务器网站, 然后在那里检查才能发现问题吗!”

对浏览器进行改革势在必行!

Brendan Eich 于是去找老板: “我实在是受不了了, 我需要一种脚本语言运行在浏览器中, 帮助我完成这些本来就应该在浏览器中完成的任务“

老板: “我们Netscape公司也早有此意, 要不你来设计一个吧”

Brendan Eich: “好啊, 你听说过LISP(确切的说是Scheme)吗, 当今最牛的编程语言,我们公司何不把Scheme 运行在浏览器中呢? “

老板: "LISP有谁会用啊? ”

Brendan Eich: "......"

老板: "我们正在和Sun 公司合作, 你听说过他们刚发明的Java 吗, 那个运行在浏览器中的Applet简直是酷毙了,Java 肯定是未来的网络语言。 所以你要搞个新语言出来,要和java 足够相似, 但是要比java 简单的多的多, 这样那些网页开发人员就可以用了。 ”

我的主人Brendan Eich很郁闷, 但是也没有办法, 他对java 毫无兴趣, 为了应付公司的任务, 他只花了10天就把我设计了出来, 对了, 我本来叫LiveScript, 但是为了向“万恶”的Java示好, 我竟然被改成了 Javascript !

由于设计时间太短,我的一些细节考虑得不够严谨,导致后来很长一段时间,Javascript写出来的程序混乱不堪。如果主人预见到,未来这种语言会成为互联网第一大语言,全世界有成千上万的学习者,他会不会多花一点时间呢?

第二章:成长

Java 是当时的明星语言, 年轻,活力四射 , 他经常嘲笑我: 你小子到底是个计算机语言吗?

我说“是啊, 我的语法和你差不多呢”

Java: "你为什么只能在浏览器中运行啊? 你能写个程序单独运行吗, 哎对了你能读取一个文件吗 ?"

我当然读取不了文件,我生活在浏览器里, 用我写的程序只能嵌入在html网页中, 由浏览器中来执行。他们给这个执行模块起了一个很有动感的名字: javascript 引擎

我于是反击Java : “我有个引擎你知道吗?”

但是Java 轻松就把我打翻在地: “我还有个虚拟机呢”

年长的C也问我:你怎么不编译运行啊, 你看我编译以后,运行的多快。

我说: 省省吧, 要是每个页面打开后都先编译javascript ,那多慢啊。

不仅仅是Java 和C , 包括VB, Delphi等当时流行的语言都瞧不起我,背地里叫我屌丝。

也是, 我没法独立运行, 也不能像VB,Delphi他们画出漂亮的界面, 我能做的就是操作HTML 的DOM 和浏览器。

你可能不知道DOM是什么东西, 这么说吧, 浏览器从服务器取到HTML网页以后, 会展示成页面让你看, 但是他的内部其实会把HTML组织成一个树给我,

这个树可以称为DOM。 例如这个页面:

<html>

<head>

<title>Sample Page</title>

</head>

<body>

<p>hello world!</p>

</body>

</html>

DOM树会长成这样:

(码农翻身:该例子来自w3school)

有了这棵树, 我就能大展身手,我可以定位到DOM树中任意一个节点, 然后对这个节点进行操作, 例如隐藏节点、显示节点、改变颜色、获得文本的值, 改变文本的值 ,添加一个响应点击事件的函数 等等等等, 几乎可以为所欲为了。

更重要的是, 这些操作可以立刻展示出效果来, 你完全不用刷新网页。

注意这些操作完全是内部进行的, html源码并不会改变, 所以有时候你打开html源码,会发现这些源码和你在浏览器中看的效果并不一致, 那就是我在背后改变了这个DOM树了。

我的主人Brendan Eich最初遇到的问题简直就是小菜一碟了, 做个简单的表单验证,太简单了。

不只是操作DOM, 我还能控制浏览器, 比如打开窗口, 在一个窗口内前进,后退, 获得浏览器的名称, 版本 等等。

你可能要问了, 为啥还要获得浏览器的名称和版本呢?

说起来惭愧, 在Netscape 和IE 进行浏览器之战的期间, 他们都争相在自己的浏览器中支持Javascript, 并且为了锁定程序员, 还开发了很多自己浏览器的独特功能, 有些功能只能在IE用, 有些只能在Netscape 用, 所以必须的判断是什么浏览器, 这样才能特殊处理。

不管怎么说, 我的这些本事让浏览器中的网页变的更加动态了, 更加有趣好玩了。

但仅限于此, 我被困在浏览器和网页上, 别的什么也干不了。

用Java 的话来说: 这些都是雕虫小技,奇技淫巧, 只是一个打着我的羊头卖狗肉的屌丝而已。

第三章: 第一桶金

互联网的发展超出了所有人的预料, 我被应用在几乎每一个网站上, 但我一直很苦闷: 我作为一门语言,在浏览器中运行, 没法像java 那样访问网络, 也就没有办法调用服务器端的接口来获取数据。

用户只能通过GET或者POST向服务器发送请求,这时候服务器返回的数据是整个页面, 而不是页面中的一个片段, 也就是说整个页面都得刷新一遍, 哪怕是页面中只有一个文字的改变。

(码农翻身注: 《IE为什么把Chrome和火狐打伤了》这篇文章介绍了HTTP的GET和POST, 可以通过菜单查看)

1998年的时候 ,我和积极进取的IE5做了一次会谈, 双方就共同关心的话题深入的交换了意见, 最后一致同意, 在IE5中引入一个新的功能:XMLHttpRequest , 这个新功能将允许我直接向服务器发出接口调用!

每当发起调用时, IE5通常会这么说:

"小JS啊, 来, 你拿这个用户名和密码访问一下服务器端处理登陆的接口 , 这个过程很费时间,我就不等你了, 先干别的事儿去了, 你得到服务器端的返回数据以后, 一定要记着调用下我给你的这个函数啊。 "

我知道这其实叫做异步调用, 于是就乖乖的通过XMLHttpRequest 访问那个登录的url, 耐心的等待服务器干完活,把数据传输回来, 然后我就去调用那个函数, 基本是就是把DOM树的某个节点更新一下, 例如让那个包含用户名和密码登陆框消失, 再加一个提示消息:登录成功 , 这事儿我很擅长。

如果服务器处理和网络速度都足够快的话, 用户就会发现: 咦, 我没有刷新整个页面, 竟然已经登录了啊。

我和IE都没有料到,这个功能带来了一场革命: 这种方式可以使得网页局部刷新, 让用户浏览网页的体验极佳, 尤其是Google 地图, Gmail 等应用让互联网应用火了起来。

其他浏览器也迅速跟进,实现了类似功能, 各种各样交互性极佳的网站如雨后春笋般出现。

VB和Delphi 慢慢的不再嘲笑我了, 因为他们绝望的发现, 他们擅长的桌面应用慢慢的都被搬到了互联网上, 没人再喜欢他们了。

我, Javascript, 挖到了第一桶金,开始走向人生巅峰。

第四章: 发明JSON

后来有个好事之徒把上面的那种处理方式称为AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML), 其实异步挺好, 但是XML就很不爽了。

比如说服务器返回了下面这段xml :

<book>

<isbn>978-7-229-03093-3</isbn>

<name>三体</name>

<author>刘慈欣</author>

<introduction>中国最牛的科幻书</introduction>

<price>38.00</price>

</book>

真正的数据很少, 标签(像<name>这样的)反而占了大头, 把数据都给淹没了。

我对XML说: “你是不是太臃肿了, 传输起来多费劲啊。”

XML说:“切,你这就不懂了,这样很优雅啊,格式化良好, 人可以读, 程序也可以读啊。”

"优雅个啥啊, 无用的数据这么多, 再说我还得用XML解析器来解析你, 费了劲了!"

"你真是屌丝啊,连个解析都搞不定, 你看人家Java, 用我用的多Happy , Spring, Struts, Hibernate, 几乎所有配置文件都是我。"

Java 也在一旁帮腔: 是啊, 我解析的时候还用DTD 做校验呢, 看看XML数据合法不合法。

我无语。

记得CPU阿甘说过:既然改变不了别人, 那就改变一下自己吧。

我看了看我的语法, 里边有个叫对象的东西, 它有一个花括号, 在括号内部,对象的属性以名称和值对的形式 (name : value) 来定义, 属性由逗号分隔, 像这样:

var book = {

"isbn": "978-7-229-03093-3",

"name": "三体",

"author": "刘慈欣",

"introduction": "中国最牛的科幻书",

"price": "38.00"

}

这种结构完全可以表达上面的xml 内容啊!

我的语法还支持数组,这样表达多个对象也不在话下啊:

var books = [

{

"isbn": "978-7-229-03093-3",

"name": "三体",

"author": "刘慈欣",

"introduction": "中国最牛的科幻书",

"price": "38.00"

},

{

"isbn": "978-7-229-03094-1",

"name": "我是一个线程",

"author": "刘欣",

"introduction": "一个线程的自述",

"price": "0.0"

}

]

数组和对象都支持嵌套, 任何复杂的结构都可以保存!

更重要的是, 如果采用这种结构, 我根本不用什么XML解析器去解析了,它就是我语言的一部分。 直接拿来用即可。

books[0].name -->返回“三体”

books[1].introduction --> 返回“一个线程的自述”

生活不要太爽啊 :-)

我把这种简洁的格式叫做JSON, 并且和服务器约定, 我们以后都用JSON来传输数据。

至于XML, 还是让Java 这样的老学究去用吧。

第五章:人生巅峰

HTML负责结构, CSS负责展示, 而我(加上AJAX, JSON) 负责逻辑。

于是前端编程三剑客形成了。

ExtJS, prototype, JQuery 这些框架把前端编程推向另外一个高峰。

甚至出现了AngularJS 这样的奇葩,实现了SPA(单一页面应用程序), 实在是难于想象。

我给Java 说: Java 兄, 现在我完全可以在浏览器端实现MVC了, 你只需要在服务器端通过接口给我提供数据就行了。

但是Java 还是给我泼冷水: 别得意忘形了, 服务器端才是核心, 要不你到服务器端试试?

我很诧异:“服务器端? 我还真没有想过, 住在64G内存, 32核的CPU 这种拥有几乎无限资源的机器上是什么感觉? ”

"感觉没你想象的好 " Java 没声好气的说 “多线程编程, 很多东西都要加锁, 一不留神就掉到坑里。 我这里基本一个请求就是一线程来处理, 遇到数据库操作, 虽然慢的要死,线程也得等待。 ”

"那不能改成异步操作吗?像我的AJAX一样, 数据来了再通知我 " 我问Java。

"不行, 一开始就是这样, 现在改不了"

把Javascript 放到服务器端执行怎么样? 这个想法够疯狂的。

首先得把浏览器端的运行环境, 就是javascript引擎移到服务器端, 这个引擎执行javasript 得足够快,要不Java 还不得笑死我。

原来的引擎一直不合格, 知道Chrome V8的出现, 才解决问题。

其次得绕开java 服务器的问题: 线程遇到IO/数据库/网络 这样的耗时操作, 不能等待, 得搞成异步处理。

但的确有人这么做了, 在我的创始人Brendan Eich 发明了我10几年以后 , 又一位大牛Ryan Dahl于2009年真的把我放到了服务器端。这就是node.js

(码农翻身:《Node.js 我只需要一个店小二》这篇文章介绍了Node.js的原理, 可以通过公共号的菜单查看)

这下Java无话可说了, 虽然他还是对我在服务器端执行持怀疑态度, 但越来越多使用node.js的网站证明, javascript的确可以在服务器端立足, 并且有一个巨大的优势:前端和后端都用同样的开发语言:那就是我 javascript

原来的前端开发现在竟然也可以毫无障碍的写后端的程序了, 是名副其实的“全栈工程师” !

这就是我,一个屌丝的逆袭, 我的创始人绝对想不到10几年后我能成为这么一个高富帅, 我估计他夜里经常会想: "唉,当年太仓促了, 我要是把javascript 设计的更好一点就好了。"

来源:码农翻身

曾在微博上说过“React就是哪吒”,那么一个前端框架和哪吒有什么关系呢?其实我觉得二者有某些相似的地方。

哪吒家室显赫,拥有的神器多到需要三头六臂才能拿得过来,后来经历磨难,脱胎换骨,能够独当多面。

React源自Facebook,集多项特色于一身——组件化、声明式、虚拟DOM、局部更新、状态机等,React 16引入的Fiber架构更可谓脱胎换骨,得Flux、Redux、immutable.js、React Router助阵,如虎添翼。

随着React Native的出世和React Canvas的诞生,更是让React如同有了三头六臂一般,将传统前端突破到安卓端、iOS端,大有一统全端的趋势。

目前三大框架Angular、React、Vue.js逐鹿中原,无论谁主沉浮,我都相信能“革了React命”的一定不是React的仿制品。

如果你对上面提到的这些名词不是特别了解,建议你阅读本文后续的内容,本文将介绍前端的历史和React相关知识。

1 前端简史

在没有Web时,信息的传递不太容易,得发明一种工具,让信息的创造者和阅读者都能看到一样的东西,于是Web诞生了。

1.1 Web 1.0

Web的内容由网站制作者生成,家族介绍用户只能浏览内容,信息的流动方向只能从服务端到客户端,这一阶段被称为Web 1.0时代。有人说这个时代的Web是静态的,这一阶段主要涉及的技术是HTML、CSS、JavaScript。

如果一段文字没有标点,那就不太容易阅读,标点其实是一种数据结构,数据必须有结构承载才能更容易传递。在Web中,HTML就是数据的结构,比如标题、段落、强调、表格等,现在我们称其为语义化。

因为视觉是Web的主要传播途径,除了结构,视觉也是一种信息,CSS成为视觉信息的载体,有HTML和CSS已经可以制作出页面了。由于HTML中大量使用div标签,HTML+CSS也被称作DIV+CSS。

光有视觉页面还是不够的,页面还要能和用户交互,比如点击按钮要有弹窗,JavaScript正是用来做这部分工作的,被称为行为。至此,Web三要素,结构、表现和行为就全了,分别对应HTML、CSS和JavaScript。

HTML、CSS和JavaScript要分离,一直被视为前端的金科玉律,CSS选择器成为连接HTML和CSS的纽带,而DOM成为HTML和JavaScript的桥梁,CSSOM承担了JavaScript和CSS的媒介。

1.2 Web 2.0

Web的内容主要由用户生成,用户浏览其他用户创造的内容,这一阶段统称为Web 2.0时代。这一阶段涉及的技术繁多。

服务器语言和表单的发明,第一次让信息可以从客户端流向服务端,账号体系把用户从屏幕前搬到了Web上,这一阶段的技术栈没啥变化,JavaScript也只是作为玩具语言,用来验证表单,前端开发者都被称作美工。

2006年谷歌推出了Gmail,可以不用刷新完成各种操作,其媲美客户端的体验,也将Web 2.0推上了浪潮之巅。

一种被称为AJAX的名词被发明——页面需要更新,JavaScript向服务器发起请求,服务端不再返回页面,而是返回XML格式的数据,然后JavaScript将数据渲染到页面中——最开始采用的是拼接字符串的形式,后来发明了前端模版,比如template.js。

这一阶段涌现了大批技术,如prototype.js、Dojo、ExtJS、jQuery,其巅峰是YUI 3。这些工具各有各的优点,其中jQuery可以作为代表,其主要功能是抹平浏览器差异,简化DOM操作。

JavaScript代码规模越来越大,一个JavaScript文件已经不能适应现状了,需要拆分成多个JavaScript文件(分治思想),代码之间存在依赖关系,且依赖关系越来越复杂,为此社区进行了各种尝试来解决这个问题,比如采用AMD、CMD、CommonJS。2015年ECMAScript 6定稿,带来了原生的模块系统,这一问题才最终被解决。

随着项目工程越来越大,代码的组织结构是不是也需要复用?有人将后端的MVC模式带到前端,但MVC并不适合前端,因此前端做了适当改变,诞生了MVP、MVVM等框架,典型的有Backbone.js、Knockout、AngularJS等。

2013年发布的React,将一种全新的思路带到了我们面前,一个新的时代已经来了。

2 React是什么

传说Facebook的大神们,对现有的框架都不满意,于是有了React。React是前端一个用于构建用户界面的 JavaScript 库,和其他MVC库不一样的地方是,React仅仅涉及界面层,类似于MVC中的View。

React是一次完整的抽象,改变了我们思考、设计和写代码的方式;React是一次完整的统一,统一了以前很多种编写界面的方式。原生前端实现界面太过灵活,基本上团队里每个人都有自己的一套方法,而React是一套非常优雅的方法论,我们苦苦追寻了多年的最佳思想,竟然都在React里了。

React有三个特色,分别是声明式、基于组件和一次学习,多端受用。

2.1 声明式

React改变了也统一了界面的实现方式,在React中,将界面抽象为状态和视图,只需定义好每个状态对应的视图就行了,剩下的React会帮你搞定,比如状态改变时会自动刷新视图等。

下面代码中的flag如果发生变化,界面会自动刷新。

2.2 基于组件

React改变了写前端的习惯,在React的世界里一切都是组件,以前的入口在HTML,现在的入口在JavaScript;以前是HTML + CSS + JavaScript的组合,现在是JavaScript+ CSS的组合;以前要想复用功能得拷贝三处代码,现在仅需引用一个组件即可。来看一个组件的例子。

上面的代码中包含两种组件,一种是HTML标签组件,另一种是React组件,其区别是HTML标签以小写字母开头,React组件以大写字母开头。

2.3 一次学习,多端受用

React中抽象了一层虚拟DOM,所以我们可以频繁地修改状态,但是更改的都是虚拟DOM。当虚拟DOM发生变化后,会集中更新到真实DOM,因为虚拟DOM的存在,只要替换掉底层的渲染引擎,就可以突破浏览器了。React Native就是将React实现到了原生App,React的一切都在,但是底层却不是DOM了,而是原生的View。类似的还有服务端渲染,这也是本书主要讲的内容。理解了React的思想,就可以搞定Web和App,简直不能再棒了。

3 React家族

React只是视图层,React家族还有一些其他成员,本节来简单介绍一下。

3.1 React Router

传统Web都是多页面的,每个页面一个URL,页面之间通过超链接跳转,由浏览器负责管理页面的跳转、前进、后退等功能,通过指定URL可以直接跳转到指定页面。

比如有一个首页和一个文章页,此时首页是一个URL,文章页是一个URL,可以从首页跳转到文章页,然后再从文章页跳转到首页,这一切都由浏览器完成。

传统页面刷新跳转的方式,体验不是很友好,于是更友好的单页面应用来了,也被称为WebApp。在这种模式下整个应用只有一个传统的页面,传统模式下的多个页面被抽象成一个个视图,原来的页面跳转,此时由JavaScript负责切换视图;原来向后端请求整个页面,现在变成向后端请求数据接口,因为不需要刷新页面,体验非常好。

但这种方式有一个问题,就是除了首页,其他页面是无法直接到达的,也就是每次都要先进到首页;为了能够实现传统Web那种URL的优点,需要在前端模拟一套路由,有了路由就可以通过URL直接进入某个视图了。

React非常适合做单页应用,React Router就是专门为React定制的路由,对React非常友好。下面看一下使用React Router实现上面首页和文章页跳转的情况。

3.2 Redux

面向界面的编程可以分为三部分:界面、数据和数据操作。React对界面的抽象做到了极致,但对数据和数据操作几乎没有约束,我们可以把这部分写到React组件中,也可以抽出来,将界面和数据与对数据操作进行分离,这就是Redux的工作。

Redux是JavaScript的状态容器,提供可预测化的状态管理,Redux因React而生,但也可以与其他类库配合使用。

3.3 React Native

React Native是一套披着React外衣的原生控件,React Native将原生控件封装为跨平台的React组件,并赋予我们通过JavaScript调用原生控件的能力。

在React Native里没有CSS,但React Native让我们可以通过CSS的语法来设置原生控件的属性。下面是一个例子。

可以看到,React Native就是用React语法封装过的原生控件,用CSS语法设置控件属性。


本文选自《React状态管理与同构实战》一书,作者侯策、颜海镜,由电子工业出版社2018年8月出版。

React自开源以来,便以革命性的设计理念迅速颠覆了前端开发的传统意义,其倡导的组件化、状态管理、虚拟DOM等思想极大提高了前端开发效率。为了更加高效地维护React应用的数据状态,以Redux为代表的数据管理模式横空出世。

本书以React技术栈为核心,在介绍React用法的基础上,从源码层面分析了Redux思想,同时着重介绍了服务端渲染和同构应用的架构模式。书中包含许多项目实例,不仅为用户打开了React技术栈的大门,更能提升读者对前沿领域的整体认知。主要适合具有一定JavaScript基础的前端工程师,以及对前端开发感兴趣的相关从业人员阅读。