声明式开发 & 命令式开发
何为声明式开发,何又为命令式开发~~~
这里我不做太多概念的剖析,我们只要明确一个:
声明式开发只是告诉计算机需要什么,而不是把每一步都计划好;典型代表为React;
命令式开发则是每一步明确的去操作DOM;典型代表 Jquery;
Jquery开发相信大家已经很 6 了,那我们着重剖析一下以 React 为代表的声明式开发的好处,如下:
①.数据推动,响应式开发的最大的特点,这个就不赘述了;
②.可以和其他框架并存;每个库都只管自己操作的DOM;我把例子贴出来:我们看到如下的代码中,index.html中有两个容器,然后在index.js中我们只用到了容器 id="root",在这个容器中我们选择React框架,还有一个容器 id="example",这个容器中的框架我们也可以用其他的觉得好使的,这就是我们说的可以与其他框架并存,当然一个项目中我们还是希望能只有一个框架;
③.首字母大写的组件化开发;
④.单向数据流;(子组件不能直接修改state里面的值,便于后续维护);
⑤.视图层框架;之所以说是视图层框架,因为React只负责简单的数据和页面渲染;当涉及到复杂的数据交互的时候,需要用到 redux,flux 等工具;
⑥.面向测试开发,这个主要涉及到前端自动化测试,函数式编程,且减少了大量对 DOM 的操作有利于前端自动化测试;这个大家知道有这么一回事就好了;
声明式开发 & 命令式开发的更多相关文章
- JavaScript Functional Programming:声明式与命令式
函数式编程属于声明式编程(declarative programming)的范畴,经常跟声明式编程一块儿讨论的是命令式编程(imperative programming),因为它们是两种不太一样的风格 ...
- React 核心思想之声明式渲染
React 发展很快,概念也多,本文目的在于帮助初学者理清 React 核心概念. React 及 React 生态 React 的核心概念只有 2 点: 声明式渲染(Declarative) 基于组 ...
- 深刻理解Spring声明式事务
问题引入 Spring中事务传播有哪几种,分别是怎样的? 理解注解事务的自动配置? SpringBoot启动类为什么不需要加@EnableTransactionManagement注解? 声明式事务的 ...
- Mac最新Flutter环境搭建运行和对比理解声明式UI
前言 这段时间一直都在学习和写关于SwiftUI的东西,前面也总结了四篇文章来大体上说了下Demo中功能实现的一些细节,后面准备开始了解学习一下Flutter,争取在年前能再用Flutter写一份项目 ...
- 乘风破浪,遇见Android Jetpack之Compose声明式UI开发工具包,逐渐大一统的原生UI绘制体系
什么是Android Jetpack https://developer.android.com/jetpack Android Jetpack是一个由多个库组成的套件,可帮助开发者遵循最佳做法.减少 ...
- VS2012 开发SharePoint 2013 声明式workflow action(activity)之 HelloWorld
本文讲述VS2012 开发SharePoint 2013 声明式workflow action 之 HelloWorld. 使用VS2012开发客户化的workflow action是SharePoi ...
- 使用VS2012 开发SharePoint 2013 声明式的action(activity) 综合实例
本文讲述使用VS2012 开发SharePoint 2013 声明式的action 综合实例. 需求同: http://blog.csdn.net/abrahamcheng/article/detai ...
- AngularJS应用开发思维之1:声明式界面
这篇博客之前承接上一篇:http://www.cnblogs.com/xuema/p/4335180.html 重写示例:模板.指令和视图 AngularJS最显著的特点是用静态的HTML文档,就可以 ...
- SpringCloud开发学习总结(七)—— 声明式服务调用Feign(一)
在实践的过程中,我们会发现在微服务架构中实现客户端负载均衡的服务调用技术Spring Cloud Ribbon<SpringCloud开发学习总结(四)—— 客户端负载均衡Ribbon> ...
随机推荐
- (转)Vue种key的作用
https://blog.csdn.net/qq_41861679/article/details/80659278 https://cn.vuejs.org/v2/api/#key 其实不只是vue ...
- socket.io中 connect与connection的区别
参考网址:https://blog.csdn.net/sinat_18474835/article/details/80115961
- day18正则及re模块
在线测试工具 http://tool.chinaz.com/regex/ 正则表达式本身和python语言没什么联系,只是匹配字符串内容的一种规则:详见:http://www.cnblogs.com/ ...
- JavaScript我学之八善变的this---函数执行上下文
本文是金旭亮老师网易云课堂的课程笔记,记录下来,以供备忘. 函数执行上下文 当函数运行时,通过this,函数可以获取它运行所需的外界环境的相关信息(比如某变量的值,另一个对象的引用等). this引用 ...
- AGC-018 C
题意: 有$X + Y + Z$个人,第$i$个人有$Ai$个金币,$Bi$个银币,$Ci$个铜币. 选出$X$个人获得其金币,选出$Y$ 个人获得其银币,选出$Z$个人获得 其铜币,在不重复选某个人 ...
- c&c++中的宏
1 c&c++中的宏 do {...} while (0); offsetof & container_of 2 引用 [1] do {...} while (0) 在宏定义中的作用 ...
- Java_打印从一个数到另一个数之间的整数,并每5个为一行
import java.util.Scanner; public class Dayin_100 { public static void main(String[] args) { System.o ...
- Imcash解读:哪些行业的“饭碗”最容易受区块链的影响?
或许,你已经听到很多人说,区块链是本世纪一项伟大的革命性技术,在未来“前途无量”. 但是,很少有人能真正接地气地举例说清楚:区块链到底怎么革命,革谁的命,怎么产生价值,将会颠覆哪些行业. 今天,我们就 ...
- JavaScript异步加载的三种方式——async和defer、动态创建script
一.script标签的位置 传统的做法是:所有script元素都放在head元素中,必须等到全部js代码都被下载.解析.执行完毕后,才能开始呈现网页的内容(浏览器在遇到<body>标签时才 ...
- 新浪云SAE 关于部分函数不能使用的做法
例如:file_put_contents("test.txt","Hello World. Testing!"); 可以这样写: file_put_conten ...