写在前面

  大雪至,风纷飞,夜里呜声伴秋叶,转眼2017也快要过去了,时间在不停的走,事情在不停的做,今年的秋叶落尽了,明年的春芽也就不远了吧。

  纵观程序千万,ui、功能、语法、运算、框架,都可以用数据两个字来囊括,二进制数据、xml数据、数据库数据。 数据的基本定义是:

数据(data)是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加工的的原始素材。

数据可以是连续的值,比如声音、图像,称为模拟数据。也可以是离散的,如符号、文字,称为数字数据。
在计算机系统中,数据以二进制信息单元0,1的形式表示
在我们的开发中,你很可能使用的是xml,json,有时候要使用到base64,,对象,数组,它们都是数据的展现,在开发中大部分人可能忽略了一个出发点,那就是数据驱动开发,在数据驱动下的开发事半功倍。

数据驱动开发

  那么什么是数据驱动开发?  我的理解是,它是一种顺序思维,我们在开发时,往往关注于功能点、一个代码单元、单个系统,这里我以一个web界面解释(博主擅长web),

日常,我们界面开发流程可能是这样的:

  1.需求A,一个web界面,如下图

  

 2. ok 一张个人中心界面,这里面有什么呢,

   ①.一个用户,包含头像,姓名等信息

②.两个记录表

 3.然后就开始开发了,

  

一般的思维,首先布局,头部》中间》底部》动画 ,然后请求服务器数据,最后把数据渲染到页面中。这符合我们一贯的思路,不论用什么框架,什么技术,流程大多如此,但是作为对比,我们来看看数据驱动下的界面开发

    

界面制作动手之前,我们需要设计一个数据模型,例如个人中心界面,这个简单的界面可以分为两块。

  1、用户信息

  2、相关信息

现在我使用json表示这个界面

{"user":{},"about_msg":{}
}

在用户信息里有用户名,头像,在相关信息里,有用户详细信息,报修记录,宽带记录,其中报修记录,宽带记录是有图标,有链接的,那么最后的数据模型应该是这样的

{"user":{"name":"zhangtaifeng","img":"..."},"about_msg":{"user_detail":[{"title":"姓名","value":"zhangtaifeng"},{"title":"学号","value":"123456"},{"title":"邮箱","value":"..."}],"maintenance":{"icon":"../images/...","href":"",title:"保修"},"buy":{"icon":"../images/...","href":"","title":"购买"}}
}                             

当数据模型准备完毕,界面的开发就变得简单起来,无论你是用什么样的框架都可以在这样的数据基础上,或循环、或模板引擎、或后台渲染,核心要求是,

数据必须在前面,数据改变,界面改变,如果界面更改了,数据没有同步,那么这些设计就变得毫无意义。

可以预见的是,一旦使用了数据模型驱动界面开发,那么这块工作是由难到易的,后期维护简单。

这还只是一个简单的个人中心界面。开发复杂的、大型的图形界面,数据驱动无疑是最好的开发方式。

要点

  1、数据模型需要在用户界面的前面,也就是说,数据更改,界面更改。不可以直接更改界面,就算重新设计,也需要首先从数据修改入手。

  2、你可以设置数据监听,改变时重新渲染界面。也可以做一个驱动函数,专门负责界面渲染,每次更改数据调用,例如:

var data = {name:"zhangtaifeng"};
//渲染函数
var changeView = function(data){document.body.innerHTML='<h1>'+data.name+'</h1>';return  data
};changeView(data); //zhangtaifeng

setTimeout(function(){data.name="aaa";changeView(data); //aaa
},3000);

  前端,像vue angular react都提供了简便的watch方法。

3、尽量使页面数据化,如果你的项目不是依赖seo的话。

优势

  假如A和B开发了一个一样的界面,A和平时一样,写html...写js....请求数据。 B首先设计数据模型,然后设计驱动函数,然后写html,写js,请求数据。

  一开始看,A大多数情况下会比B快很多的,按通常流程走,符合逻辑。

现在老板需要增加一行元素,比如”我的订单“。

A需要修改html、增加js

  B只需要在数据模型上加一行”我的订单“就行了。

  类似的,如果要你保存页面状态,怎么办?   保存数据就行了。

  跳转登录,返回回填表单,保存数据就行了。

还有更多的好处。。。

结束

  传达一些想法,表示一些逻辑,实属不易,若笔头略有顿挫,诸君见谅,若观点也有偏差,望各位海涵,然君指出后,言出必思,思之必改,谢谢大家。

======================================================== 转载请注明出处。

【开发者的精进】 数据驱动下的程序设计相关推荐

  1. 【文末福利】CSDN深圳城市开发者社区第一波线下技术交流活动,蓄势启航,本周六0617为你揭开神秘面纱

    [文末福利]CSDN深圳城市开发者社区第一波线下技术交流活动,蓄势启航,本周六0617为你揭开神秘面纱 文章目录 1 写在前面 2 CSDN深圳城市开发者社区简介 3 聚焦本周六的线下技术交流活动 4 ...

  2. 【行情获取】通过WebSocket使用ws协议获取黄金、外汇实时行情(行情自动推送,方便实现数据驱动下的自动交易)

    文章目录 前言 一.WebSocket是什么? 二.使用准备 1. 引入websocket-client库 2. 获取websocket行情数据 三.获取黄金行情的完整代码 总结 前言 一.WebSo ...

  3. 京东数据驱动下的个性化推荐

    刘尚堃 京东数据驱动下的个性化推荐系统(PPT附下载) Optimus Prime 2015-11-12 7:09:10 人物观点 评论(0) 刘尚堃·京东推荐搜索部技术总监 刘尚堃,京东推荐搜索部技 ...

  4. 驱动利器:数据驱动下的产品决策(上)

    本文基于神策数据推出的<数据驱动下的产品决策>在线课程进行整理. 每当产品需要新版本迭代,都是产品经理熬夜加班之时,如何设计真正可以提高用户体验的产品新功能?怎样才能达到老板想要的监控指标 ...

  5. Linux下俄罗斯方块程序设计(c++)-转

    Linux下俄罗斯方块程序设计(c++)-转 空间 http://fangnux.blog.51cto.com/7902770/1347375 话不多说先上图: 很多在windows下做的,用的图形图 ...

  6. 计算机素养的论文,核心素养下计算机程序设计教学探索

    摘要:文章从文化基础.自主发展.社会参与三个方面阐述了计算机程序设计与学生核心素养之间的关系,并基于维果茨基的社会文化历史理论,提出了基于学生核心素养培育的高校计算机程序设计教学策略,旨在为新一轮计算 ...

  7. 数据驱动下的人性弱点

    今天,在回家地铁上看了公众号"caoz的梦呓"几篇文章:<数据驱动是怎么跑偏的>.<所谓数据驱动,这个锅技术不能背.>.<万恶的kpi>.< ...

  8. 可复现、开放科研、跨学科合作:数据驱动下的科研趋势及应用方案

    信息技术的快速发展,催化了数据科学场景下科研组织提高科学研究的可复现性.实现开放科研.开展跨学科领域的交叉研究等协同诉求.本文剖析了此三类诉求的实现难点,并提供了系统化的解决方案. 欢迎进入Model ...

  9. 大数据驱动下的微博社会化推荐

    不同于搜索,"推荐"通常不是独立的互联网产品,而是互联网产品的核心组件,为该产品的核心目标服务,比如电商网站的推荐是为了达成更多商品交易.微博推荐同样如此,其存在价值就是通过梳理和 ...

最新文章

  1. 用C#钩子写一个改键外挂
  2. PCL :K-d tree 2 结构理解
  3. mysql 的 前导零_将前导零添加到MySQL列?
  4. 浅谈Redis和Hbase
  5. 程序员们的时间管理法则
  6. centos 6.5 安装mysql 5.6.35–libc.so.6(GLIBC_2.14)(64bit),libstdc++.so.6(GLIBCXX_3.4.15)(64bit)
  7. 前端学习(3071):vue+element今日头条管理-删除文章失败
  8. c#计算长方形的周长和面积公式_Java面向对象练习题之计算圆的面积和周长
  9. 永恒python配合什么主武器好_学点python吧,别再这么累了,让你轻松实现财富自由...
  10. sql server 2014 判断一个列某个字段是否相同_Select * from user的千层套路——一个sql是如何执行的...
  11. sed的模式匹配用法探讨
  12. Android开发UI之补间动画-布局添加动画
  13. WordPress seo 插件
  14. Informatica通过人工智能重新定义数据管理助力数据驱动型数字化转型
  15. kali linux中文版安装
  16. 用户太多:互联网巨头之惑
  17. ZYNQ开发系列——hw_platform包和BSP包中的一些理解
  18. linux系统游戏性能对比,Steam Mac/Windows游戏性能、画质对比
  19. 笔记本通过无线网络访问台式机服务器
  20. Ripple(瑞波)之交易清算

热门文章

  1. smarty+php+ajax 简单无刷新分页
  2. 思科路由和交换限制用户出外网的几种策略
  3. 二叉搜索树的经典问题
  4. 【原】关于ActiveX插件小项目总结
  5. 豆瓣评论9.5的《Effective Python》,帮你解决80%难题!
  6. 自定义JWT认证过滤器
  7. MySQL高级 - SQL优化 - 索引提示
  8. Controller 相关注解
  9. 轻量级锁的加锁和解锁逻辑
  10. 走过的弯路,你的套路