美文网首页
用不同框架实现一个前端最基础的功能

用不同框架实现一个前端最基础的功能

作者: waynedeng | 来源:发表于2016-11-24 12:46 被阅读59次

功能说明

一个span,两个按钮,点击按钮会让span加1或者减1。它简单到你不需要分心关注,但是又足够说明典型的html场景——就是既有数据呈现也有按钮操作。


vanilla.js

vanilla.js号称是全世界最轻量的Javascript框架,基本上写法就是和原生的写法一样。

<div id="app">
<p><span id="count">0</span>
    <button id="inc">+</button>
    <button id="dec">-</button>
  </p>
</div>
<script>
    var myBtn = document.getElementById('inc');
    myBtn.addEventListener('click', function(event) {
        var span = document.getElementById('count');
        span.textContent = parseInt(span.textContent) + 1
    });
    myBtn = document.getElementById('dec');
    myBtn.addEventListener('click', function(event) {
        var span = document.getElementById('count');
        span.textContent = parseInt(span.textContent) - 1
      });
<script>

代码行数倒是不算多,但是看起来的感受是:

  • 数据格式转换(整数到字符串,以及反过来)很讨厌
  • 使用了多个DOM API,所有这些API你都得弄懂
  • 代码太长
    这样特点,就构成了一种代码的臭味,让我喜欢不起来。而且,你得懂得DOM的节点选择、事件监听、回调函数等。

jquery

JQuery大家都很熟悉了。

<div id="app">
<p><span id="count">0</span>
    <button id="inc">+</button>
    <button id="dec">-</button>
  </p>
</div>
<script>
$('#inc').click(function(){
  $("#count").html(parseInt($("#count").html())+1)
})
$('#dec').click(function(){
  $("#count").html( (parseInt($("#count").html())).toString()-1)
})
<script>

分析一下:

  • 代码还是少了不少,因为jquery的选择器确实比较方便
  • 使用精简的API替代Vanilla的。比如.html()比起.getElementById()来说,是要看着舒服点的

然而,内核基本不变:依然是添加EventListener,命令式的取值和修改值,并在期间做数据转换。依然你得懂得DOM的节点选择、事件监听、回调函数等。

Vue.js

<script src="https://unpkg.com/vue/dist/vue.js"></script>
<div id="app">
  <p>{{count}}
    <button @click="inc">+</button>
    <button @click="dec">-</button>
  </p>
</div>
<script>
new Vue({
  el:'#app',
  data () {
    return {
      count: 0
    }
  },
  methods: {
    inc () {
      this.count++
    },
    dec () {
      this.count--
    }
  }
})
</script>

第一感觉就是:

  • 规整。数据(data),方法(methods)放置的工工整整,一目了然。它充分的利用js的字面量对象的语法
  • 整个应用接口设计,基本上采用的都是简单。一眼看过去,一个复合词也没有(比如getElementById就是4个复合词)
  • 数据转换这么繁冗的事儿,内部帮你做了

现在,你不需要挂接EventListener,使用@click语法自动绑定事件,使用{{}}自动绑定数据;也不需要数据转换这么繁冗的事儿,内部帮你做了;你也不需要DOM的一系列的知识就可以构造此程序;对初学者来说,这个门槛真是降低太多。

React

class Counter extends React.Component {
  @autobind
  inc() {
    this.setState({
      count: this.state.count + 1
    });
  }

  @autobind
  dec() {
    this.setState({
      count: this.state.count - 1
    });
  }

  render() {
    return (
      <p>
        {this.state.count}}
        <button onClick={this.inc}>+</button>
        <button onClick={this.dec}>-</button>
      </p>
    );
  }
}

ReactDOM.render(<Counter />, document.getElementById('app'));

React代码和Vue.js有点类似,但感觉和HTML没啥关系了,结构很漂亮。

你更喜欢哪个框架?

整理自:https://segmentfault.com/a/1190000007548442

相关文章

  • 用不同框架实现一个前端最基础的功能

    功能说明 一个span,两个按钮,点击按钮会让span加1或者减1。它简单到你不需要分心关注,但是又足够说明典型的...

  • 微信小程序学习回顾-1.2.1-【零基础】

    前端开发工具准备(微信开发者工具)基础知识:代码框架前端实现思路梳理各功能页面开发实操 基础知识 * 项目新建 下...

  • 微信小程序学习回顾-1.1-【零基础】

    前端开发工具准备(微信开发者工具)基础知识:代码框架基础知识:API前端实现思路梳理各功能页面开发实操 工具准备 ...

  • 开发Canvas 绘画应用(二):实现绘画

    开发Canvas 绘画应用(一):搭好框架 中我们已经把基本框架及基础功能实现了,现在要实现本应用的重点:绘画功能...

  • Vertx

    背景 对于vertx框架,最基础的组件就是vertx,几乎所有功能都是通过vertx实现。 vertx聚合了网络通...

  • angularjs中controller之间的通信

    不同框架实现的功能都是相似的,只不过方法不同,这就为我们了解不同框架,从一个框架向另一个框架学习提供了方便。比如说...

  • vue Day1

    vue js是最火的一个前端框架,React是最流行的一个前端框架(React除了开发前端框架,还可以开发APP)...

  • 1.3  嵌入式

    今天做了用矩阵键盘按键实现不同的功能,先搭建框架,确定引脚的输入输出,来确定寄存器相应配置,再配置要实现的功能,主...

  • vue 实现全选全不选

    全选功能可以说是前端开发中非常常见的一个功能,以前的项目开发用jQuery开发比较多。最近在使用vue前端框架重构...

  • React 系列 - 写出优雅的路由

    前言 自前端框架风靡以来,路由一词在前端的热度与日俱增,他是几乎所有前端框架的核心功能点。不同于后端,前端的路由往...

网友评论

      本文标题:用不同框架实现一个前端最基础的功能

      本文链接:https://www.haomeiwen.com/subject/scebpttx.html