zoukankan      html  css  js  c++  java
  • 声明式和命令式

      1 . 声明和命令式 (Declarative vs Imperative

      声明和命令式是两种编程范式。react是声明式的,jquery那样直接操作dom是命令式

    Alright here’s a metaphor.

    Declarative Programming is like asking your friend to draw a landscape. You don’t care how they draw it, that’s up to them.

    Imperative Programming is like your friend listening to Bob Ross tell them how to paint a landscape. While good ole Bob Ross isn’t exactly commanding, he is giving them step by step directions to get the desired result.

          声明式就像你告诉你朋友画一幅画,你不用去管他怎么画的细节

      命令式就像按照你的命令,你朋友一步步把画画出来

         换言之

    • 命令式编程:命令“机器”如何去做事情(how),这样不管你想要的是什么(what),它都会按照你的命令实现。
    • 声明式编程:告诉“机器”你想要的是什么(what),让机器想出如何去做(how)。

     2 . 来点代码

         点击一个按钮,改变颜色

      命令式:

    const container = document.getElementById(‘container’);
    const btn = document.createElement(‘button’);
    btn.className = ‘btn red’;
    btn.onclick = function(event) {
     if (this.classList.contains(‘red’)) {
       this.classList.remove(‘red’);
       this.classList.add(‘blue’);
     } else {
       this.classList.remove(‘blue’);
       this.classList.add(‘red’);
     }
    };
    container.appendChild(btn);

       声明式(react):

    class Button extends React.Component{
      this.state = { color: 'red' }
      handleChange = () => {
        const color = this.state.color === 'red' ? 'blue' : 'red';
        this.setState({ color });
      }
      render() {
        return (<div>
          <button 
             className=`btn ${this.state.color}`
             onClick={this.handleChange}>
          </button>
        </div>);
      }
    }

       注意到什么不一样了么?

       react没有去修改dom,只是声明了页面应该是什么样子(根据不同的state).

       放到整个应用层面也是一样的道理,我们更加需要关心的是整个应用和页面的框架结构。

      参考链接:https://codeburst.io/declarative-vs-imperative-programming-a8a7c93d9ad2

  • 相关阅读:
    上传下载---上传
    分页中的难点
    分页的实现
    c3p0-config连接池
    判断
    客户关系管理增删改
    转发和重定向
    dbUtils结果集处理器
    加载配置文件.properties,及面向接口编程的DaoFactory
    jdbc链接数据库mysql
  • 原文地址:https://www.cnblogs.com/johnzhu/p/9016277.html
Copyright © 2011-2022 走看看