浅析angular,react,vue.js jQuery使用区别

前端愈来愈混乱了,固然也能够美其名曰:繁荣。
当新启动一个前端项目,第一件事就是纠结:使用什么框架,重造什么轮子?javascript

PS:大牛留言讨论
那么,但愿看完此篇,可以给你一个清晰的认识,或者让你更加地纠结和无所适从 = =!
本篇拿一注册功能做为样本,使用各类框架去实现功能,从而对比各类方式的优劣。html

JQuery

<div> <div><input type="text" id="nameIpt"/></div> <div><input type="text" id="statusIpt"/></div> <div><input type="button" value="save" id="saveBtn"/></div> </div> <script>  $(function () {  $("#saveBtn").click(function () {  saveToDB($.trim($("#nameIpt").val()), $.trim($("#statusIpt").val()));  })  function saveToDB() {  //save to db  }  }) </script>

简单粗暴,用户行为驱动的思考方式,不须要怎么动脑= =!前端

Vuejs

<div id="demo"> <div> <input v-model="name"></div>  <div> <input v-model="status"></div> <div> <input v-on="click:save()" type="button" value="save"></div> </div> <script> var demo = new Vue({ el: '#demo', data: { name: '', status:'' }, methods: { save: function () { saveToDB(this.name, this.status); } } }) function saveToDB(name, status) { //.. //.. } </script>

vuejs给人以小清新的感受,有没有同感?vue

Reactjs

var User = function (name, status) { this.name = name; this.status = status; } User.prototype={ save:function(name,status){ //save to db } } var user = new User(); var RegisterComponent = React.createClass({ displayName: "RegisterComponent", getInitialState: function () { return user; }, onFirstInputChange: function () { this.setState({name: React.findDOMNode(this.refs.fistInput).value}); }, onSecInputChange:function(){ this.setState({status: React.findDOMNode(this.refs.secInput).value}); }, save:function(){ //只有不更改input的时候这个返回true,setState以后就成false console.log(this.state===user) //因此使用this.state吧 user.save(this.state.name,this.state.status); }, render: function () { return ( <div> <div>name: <input type="text" onChange={this.onFirstInputChange} ref="fistInput" value={this.state.name} /> </div> <div>status: <input type="text" onChange={this.onSecInputChange} ref="secInput" value={this.state.status} /> </div> <button onClick={this.save}>save</button>      </div> ); } }); React.render(<RegisterComponent />, document.getElementById("RegisterComponentExample"));

忽然感受代码量为何剧增啊?每次调用setState,react都会从新调用render。java

Extjs

var user = new User(); var rc = new RegisterComponent({ label: "name", onFirstInputChange: function (value) { user.name = value; }, label: "status", onSecInputChange: function (value) { user.status = value; }, onSave: function () { user.save(); }, renderTo: "#rc-ctt" }); //你不是要双向绑定吗?我知足你啊= =! observer.watch(user, function (prop,value) { if (prop === "name") { rc.firstInputValue = value; } else if (prop === "status") { rc.secInputValue = value; } })

Angularjs


Angularjs就不写代码了,上面的代码都是看到这张图以后才写的。
ps:这张图的出处找不到了,找到的童鞋告知下,我加上文章连接。react

总结

1.jquery依然依靠丰富的dom操做去组合业务逻辑,当业务逻辑复杂的时候,每行代码都会有不知所云的感受。由于:jquery

  • 第一:业务逻辑和UI更改该混在一块儿,
  • 第二:UI里面还参杂这交互逻辑,让原本混乱的逻辑更加混乱。

固然第二点从另外一方面看也是优势,由于有的时候UI交互逻辑可以更加灵活地嵌入到业务逻辑,这在其余MV*框架中都是比较难处理的。
2.vuejs很是小清新,小清新不表明作不了复杂的东西,好比官方的这个demo就不错:http://vuejs.org/examples/svg.html
3.reactjs代码量最多,由于它既要管理UI逻辑,又要操心dom的渲染。
4.extjs无感 没用过。
5.angularjs渲染快,就是量大(相对于vue.js)。angularjs

相关文章
相关标签/搜索