在用react的时候老大不让用jquery,为什么
看到这个问题,我本身是拒绝的,因为这东西没啥可比性呀,两个东西的定位就是不一样;但是最近一个朋友用VUE写一个项目的时候掺杂了大量的JQ代码,我帮他review的时候,问他为什么要这样,他回答给我的是:『我对JQ比较熟悉呀,VUE不是就是个view吗?』
开会呢,随便聊一下,虽然vue不是react,但是两者的原理还是基本类似的,我同时对它俩都有一些开发经验;所以下面是我的看法:
react本身是一套前端框架,不像JQ是一套类库
react的原理和驱动是通过store流来进行virtual dom比对后进行渲染,完全不需要本人操作dom树
react官方文档说的很清楚,react已经干了很多jq会做的事情, 你只需要去了解什么是双向绑定,然后用数据驱动、绑定自定义事件就可以了。
在react中使用JQ,肯定要获取dom节点,也就是必须在组件挂载之后(componentDidMount)后,dom树才会append到页面中,虽然说并无大碍,但是会有一些特殊情况下的冲突,例如:用react和JQ同时操作一个节点的样式的时候,也许就会导致state不同步的问题,这是是最简单的问题请看下面第5条(纯手撸,没测试,!另外就是性能的问题,举一个最简单的例子,没有什么代表性,请想象下,用react和JQ去渲染的分页器,在页面node节点非常多的情况谁的效率会更高《各种浏览器的渲染内核对dom节点都有性能瓶颈,具体请查阅相关文档》?而且如果分页器用JQ实现,分页内容用react实现,JQ每次点击页码的时候先要用react渲染分页内容,然后在重新用JQ设置页码,不麻烦吗?)
-queryimport React, { Component } from ’react’;
class MyCompnent extends Component {
constructor(props) {
super(props);
this.state = {isHover: false};
this.onMouseEnter = this.onMouseEnter.bind(this);
}
componentDidMount() {
$(“#aaa“).on(’hover’, ()=》 {
$(this).addClass(’myHover’);
});
}
onMouseEnter() {
this.setState({isHover : true});
}
render() {
const { isHover } = this.state;
return(
《div id=“aaa“ onMouseEnter={this.onMouseEnter} className={isHover? ’hover’ : ’’}》《/div》
);
}
jquery中使用ajax的几种常用写法
第一种:
$.ajax({
type: “POST“, //提交方式 post 和 get
url: “连接地址“,//连接地址
data: ’{“’ + + ’“}’,//数据类型
contentType: “application/json;charset=utf-8“,//编码形式
dataType: “json“, //提交数据类型
success: function (data) {
var it = eval(data.d);
var Html = ““;
for (var i in it) {}
}, async: false
});
第二种:
$(document).ready(function(){
$(“#a“).click(function(){
htmlobj=$.ajax({url:“/test.txt“,async:false});
$(“#b“).html(htmlobj.responseText);
});
});
第三种:
$.ajax({ url: “abc.html“, context: document.body, success: function(){
$(this).addClass(“Dmoe“);
}});
//参考文献:锋利的Jquery 如有疏漏或者错误 还望大家指出
-act
常用的JQuery UI 框架,工作用常用的,请大神们指点
jquery
easyui,时下比较流行的,而且可以免费使用,datagrid功能强大
jquery-ui,也是免费,但是用起来总觉得差点什么,渲染速度有些慢,ui也没有easyui丰富
miniui,后出现的一个ui,我也只是看过demo感觉是不错,可惜收费使用,价格不低
自己开发玩玩还是用easyui吧。
-query