回顾一下web
来源:互联网 发布:js插件的写法 编辑:程序博客网 时间:2024/06/05 07:59
回顾一下web
从一个做过GUI角度的人来看一下web
1.GUI布局
GUI的界面是win form,是一个有大小的form,控件是根据坐标放在这个form上的。
但web没有这个坐标概念。web是一个stream,而且由于浏览器大小可以改变,所有这些都变了,传统的GUI的控件布局是不变的,除非你代码做了控制,但对于web,元素的位置改变本身浏览器有若干处理,且目前的新的框架bootstraps等都对不同大小的浏览器做了一些自适应。这个都是不同。
2.客户端服务器
传统的GUI的 C/S模式,服务和客户端之间走的是数据,不影响客户端的界面,如果GUI是本地的,那么服务器就没有了。但是web,天生就是有web server和client browser。这里有一个计算量的概念,是server去计算还是client去计算。所有对于js,这里要区别是server side还是client side。一个html的内容展示,是client只是拿到数据展示,还是拿到数据之后根据规则条件,view也变化?
3.client的组成
对于web,客户端是html,js,css。css是为了让你好看,包括一些潜在的方便,比如一键所有图片都变成灰色。html是布局元素组成,包括新的协议中的一些特别的特型,比如h5包含视频播放元素,可以直接播放视频,否则你还必须调用第三方的activex。整个h5的页面,borwser解析为一个DOM。通过这个结构化也页面元素,你可以通过js来控制一切的一切。
jquery无非有一个库,你不用那么复杂的select一个元素,然后说这个元素的颜色,动作,action或者别的。
vue、react、angualr等是一个框架,你在这个框架内来做。这里
4.mvc
mvc框架是有点年代的框架。通过这个框架希望能够把业务逻辑,流程,view分开。页面上一个textbox的内容,你觉得如果这个是一个view,且textbox的输入数据是否需要和后端总是同步?我的理解是需要的,否则你需要后面一个进程维护这个offline的脏数据是否和后端的服务器数据同步。
这里还有另外一点,我们是否可以让一个web 提供界面,然后一个web 提供数据(比如soa)。其实这样是可以的,且目前我们的client side的js越来越强大,慢慢变成一个rich client,那么这个client除了界面端和用户交互外,还是可以接入第三方的数据,从而完成用户输入后端交互的功能呢。
目前SPA,single page appliction,类似于GUI单一页面,功能在一个页面完成,需要全局刷新,只是局部ajax的异步获取数据,然后把DOM修改刷新,这个是一个很好的思路和用户的体验。为了达成这个目的,采用虚拟DOM的方式,发现那里需要rander,那么哪个模块就去刷新一下。这里强调的是,这个UI和数据的修改是两个不同的方式。如果UI基本上是不动的,那么数据的修改双向绑定和修改,应该是程序内部固话的方式来做,开发者不需要考虑脏数据等数据同步的问题。
在传统的做页面动画,比如图片走马灯等,这些应该是属于UI方面的代码控制,不是control的控制。从代码的角度而言,这个应该区分。也就是并非是css归css,html归html。而是应该按照View的是View,control是control的方式来区分。view由于数据方面的变化产生不同的view,应该是view内部的组件的特型,不应该是外部control的问题。
5.业务模型
业务模型很重要,我们在开发的时候,学习新的开发语言,可能只是在看开发语言的框架是什么,但没有考虑我们的业务模型和框架,网上有很多2048的代码,但你知道这个东西的代码量么?这个东西的业务框架是什么?我们抽象出来的么给block,棋盘,得分等这个模型是怎么样的,如果不清楚这个那么你也会觉得额很累。
2048的模型。
从业务流程上是
new game -> 允许上下左右按键,然后方框内的数字合并,合并的规则是,如果是上,那么上的方向上数字累加,注意这里不需要考虑递归的方式,也就是不考虑2222一下子变成8,而是2222->44->8的过程,另外优先考虑最顶上数据累加。这个都是业务逻辑
score是,棋盘上所有数据累加的数据,这个游戏结束的判定是的当棋盘上的block出现2048时,游戏结束。
另外在每次按键之后,在棋盘上随时出现2个位置的block,他们的数字分别都是2
当棋盘上没有空余的block,且没有任意两个block的数字相同,那么就是game over。
动画,界面啥的都是css或者图片之类的。上面是业务流程,分装为不同的模块然后来做。包括定位
- 回顾一下web
- 回顾一下IPv9
- 回顾一下“快速排序”
- 回顾一下这个寒假
- 回顾一下多态
- 回顾一下模板
- 回顾一下排序
- (27)回顾一下
- 那,回顾一下
- web回顾
- 一起回顾一下linux常用命令
- 回顾一下选择和冒泡
- 回顾 记录一下webpart 开发
- Java初始化顺序(回顾一下)
- 回顾一下数据结构线性表
- 回顾一下shell脚本1
- 回顾一下基础的细节
- 回顾一下近来的坑
- c++:分析智能指针与发展历史
- c++ socket调用gethostbyname()失败
- mysql inndb MyISAM分析
- 反转单链表的方法
- iOS之UITextView实现placeHolder占位文字的最佳方法
- 回顾一下web
- 工欲善其事,必先利其器-java高级测试进阶之接口自动化测试工具类(一)处理http请求。
- Mysql cannot allocate memory for the buffer pool 解决方法
- 区块链和物联网结合的挑战和前景
- 《Spring实战 第4版》的阅读笔记 -----且行且珍惜
- android gradle + junit + jacoco 集成jenkins,sonar系统
- 轻松理解 Android Binder,只需要读这一篇
- 完美解决listView滚动条隐藏的问题!
- 第四章:数据检索