JS 的应用开发初探(mootools)


Posted in Javascript onDecember 19, 2009

做了三个小demo,本来想做一个类似Gmail的界面出来后来突然发现机器上没有Office,就干脆做了一个类PPT演示的小玩意。

基于js的应用开发总结起来主要有如下几点:

封装粒度
常用功能封装为可重复使用的组件,需要合理选择组件封装粒度,粒度过大不便于复用,粒度过小则得不偿失。

代码结构规划
吸收传统软件开发的思想将代码按功能划分为不同的区块:初始化,事件绑定,事件逻辑处理,外部Callback调用

Js的面向对象
简单起见可以使用构造函数(其实就是普通的Function)+ prototype定义,虽然看起来不是很优雅不过却是比较直接的解决办法。演示代码中使用了Mootools类库,相比jQuery来说,这个类库的面向对象特性使用起来个人感觉更好一些,当然也可以使用它自带的Class申明方式来编写你自己的Class:

Meta.Controls.Pager = new Class({ 
Implements: [Events, Options], 
options: { 
pageIndex :1, // 当前页码, 从1开始 
size : 10, // 每页显示记录数 
maxButtons : 5,// 显示的分页按钮数量 
showPageSize:true, // 显示分页大小选项. 
sizeArray:[10, 25] 
}, 
initialize: function (A) { 
this.setOptions(A); 
this.pageIndex = this.options.pageIndex; 
this.size = this.options.size; 
this.maxButtons = this.options.maxButtons; 
this.itemCount = 0; 
this.pageCount =0 ; 
}, 
...... 
}

这样的方式也是不错的选择,代码逻辑结构清晰一目了然。

单元测试
通常认为浏览器上的js 应用要做单元测试不好做,原因主要是跟DOM关系太紧密,但也不是完全没有办法,比如Google的Closure就做得不错,使用Mock的对象来模拟Dom元素并解耦代码逻辑与Dom对象操作。
下面是本次实例的代码,感兴趣的童鞋自行下载。

Javascript 相关文章推荐
JavaScript RegExp方法获取地址栏参数(面向对象)
Mar 10 Javascript
javascript dom代码应用 简单的相册[firefox only]
Jun 12 Javascript
判断浏览器的javascript版本的代码
Sep 03 Javascript
jquery实现文字由下到上循环滚动的实例代码
Aug 09 Javascript
快速解决jquery之get缓存问题的最简单方法介绍
Dec 19 Javascript
js中的setInterval和setTimeout使用实例
May 09 Javascript
上传图片预览JS脚本 Input file图片预览的实现示例
Oct 23 Javascript
jQuery实现统计输入文字个数的方法
Mar 11 Javascript
js控住DOM实现发布微博效果
Aug 30 Javascript
JS无缝滚动效果实现方法分析
Dec 21 Javascript
JS检测window.open打开的窗口是否关闭
Jun 25 Javascript
js中apply和Math.max()函数的问题及区别介绍
Mar 27 Javascript
用js实现层随着内容大小动态渐变改变 推荐
Dec 19 #Javascript
javascript demo 基本技巧
Dec 18 #Javascript
IE和Firefox下event事件杂谈
Dec 18 #Javascript
替代window.event.srcElement效果的可兼容性的函数
Dec 18 #Javascript
JavaScript 序列化对象实现代码
Dec 18 #Javascript
让div层随鼠标移动的实现代码 ie ff
Dec 18 #Javascript
Javascript在IE或Firefox下获取鼠标位置的代码
Dec 18 #Javascript
You might like
smarty 原来也不过如此~~呵呵
2006/11/25 PHP
6个超实用的PHP代码片段
2015/08/10 PHP
javascript 写类方式之八
2009/07/05 Javascript
JS继承 笔记
2011/07/13 Javascript
jquery选择器使用详解
2014/04/08 Javascript
javascript制作的网页侧边弹出框思路及实现代码
2014/05/21 Javascript
jQuery中click事件用法实例
2014/12/26 Javascript
JavaScript设计模式之抽象工厂模式介绍
2014/12/28 Javascript
完美兼容多浏览器的js判断图片路径代码汇总
2015/04/17 Javascript
jQuery实现的背景动态变化导航菜单效果
2015/08/24 Javascript
JS实现仿Windows7风格的网页右键菜单效果代码
2015/09/11 Javascript
jQuery实现的兼容性浮动层示例
2016/08/02 Javascript
JavaScript队列的应用实例详解【经典数据结构】
2017/04/12 Javascript
详解vue2.0脚手架的webpack 配置文件分析
2017/05/27 Javascript
详解微信小程序Radio选中样式切换
2017/07/06 Javascript
mpvue全局引入sass文件的方法步骤
2019/03/06 Javascript
js动态获取时间的方法分析
2019/08/02 Javascript
用js编写留言板
2020/03/17 Javascript
解决antd 表单设置默认值initialValue后验证失效的问题
2020/11/02 Javascript
Python3实现并发检验代理池地址的方法
2016/09/18 Python
python中subprocess批量执行linux命令
2018/04/27 Python
用python脚本24小时刷浏览器的访问量方法
2018/12/07 Python
python pandas.DataFrame.loc函数使用详解
2020/03/26 Python
ITK 实现多张图像转成单个nii.gz或mha文件案例
2020/07/01 Python
wordpress添加Html5的表单验证required方法小结
2020/08/18 HTML / CSS
香港永安旅游网:Wing On Travel
2017/04/10 全球购物
Foot Locker意大利官网:全球领先的运动鞋和服装零售商
2017/05/30 全球购物
青年文明号服务承诺
2014/03/31 职场文书
应届大专毕业生自我鉴定
2014/04/08 职场文书
工业设计毕业生自荐信
2014/04/13 职场文书
小学数学课后反思
2014/04/23 职场文书
企业员工集体活动方案
2014/08/17 职场文书
学校党委副书记个人对照检查材料思想汇报
2014/09/28 职场文书
三方合作意向书范本
2015/05/09 职场文书
SSM项目使用拦截器实现登录验证功能
2022/01/22 Java/Android
大型强子对撞机再次重启探索“第五种自然力”
2022/04/29 数码科技