- 浏览: 112981 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
墨子宇:
so,为了使用JSLint我还得装一个aptana?
eclipse 添加 JSLint 插件 -
lvjun106:
楼主可以看下这篇文章,介绍的很详细。http://www.os ...
eclipse 添加 JSLint 插件 -
newsletterBroker:
呵呵,感觉不错!
Jquery 源码中的 正则表达式 分析 -
jayliud:
String.prototype.count = funct ...
百度web前端笔试
- 提高代码复用
- 模块间保持独立, 不会导致多个开发人员合作时产生的冲突
- 封装性好, 只提供 API 接口给外部调用
KISSY 中, 通过 add( name, fn ) 方法来添加新的模块. 在 KISSY 内部, 代码也是这么组织的.
下面通过个小例子来说明如何开发自定义组件.
- 首先, 想好组件的名字, 见名知意, 模块名字统一小写, 而暴露给外部的组件名称使用单词首字母大写, 如 StarRating ;
- 通过 KISSY.add('starrating', function(S){ }); 加入新模块到 KISSY 中, 这里也可以使用 KISSY.app('XXX'); 创建特定的应用, 然后用 XXX.add('starrating', function(S){}); 给特定应用 XXX 添加一个模块;
- 接下来是声明一些模块内的公共变量, 像 S.DOM, S.Event 都会用到, 另外一些如组件自己的 class 钩子;
- 默认的配置信息, defaultConfig , 提供了使用者如果没有设置时的默认值;
- 通过 S.augment(StarRating, { }); 添加属性及方法, 每个方法在注释中写明含义, 入口参数及其类型. 另外, 开发者需要想好哪些属性/方法需要对外提供及命名方式如何等. 在这个例子中, 只添加了 _init 私有方法, 用来构建所需 DOM, 绑定事件;
- 最后, 在使用时只需要创建一个对象即可, 如, new S.StarRating('#J_Rating', config) ;
在动手写 KISSY 组件之前, 还需要了解一下 KISSY 组件的开发流程相信会对你有用的.
KISSY 组件开发流程¶
在开发过程中, 开发者(就拿我来举例吧), 经常会出现:
- 需求过来: 稍加理清下思路, 急急忙忙就开始写代码了, 然后写到七八分了, 才发现貌似一开始就没完全明白需求是什么...然后只能重构-.-
- 重构第一次: 现在完全明白需求是什么了, 嗯嗯, 基本上是完全删除原来的代码, 按照新需求写, 其间要考虑 n 多种情况以尽可能满足所有场景下的需求, 导致一个 js 源文件打开后的滚动条缩得很短.
- 呃. 太长了, 未来及现在的自己都不愿意再去看这段代码, 所以, 即将面临着再一次重构.
- 重构第二次, 拆分大逻辑, 删减不必要的代码, 保持 JS 文件的精简, 代码组织的也比较好看, 易懂.
- 问题又来了, 精简之后, 只保留了基本功能, 一些其他的功能被完全删除了, 但这些功能又需要, 为了尽量不增加核心 JS 文件, 所以再次重构.
- 这次重构是针对扩展来得, 在避免修改核心代码的前提下, 编写适合特定需求的扩展代码.
我们需要避免这些问题(需求不明确, 盲目动手, 代码冗长, 写了后面的忘了前面的逻辑, 导致可扩展性差, 可复用性也差). HOW?
以前听人提过 Literate Programming(文学化编程) [1] 一词, 说的是:
Literate Programming
文学编程自由地表达逻辑, 而且它用人类日常使用的语言写出来, 就好像一篇文章一样, 让开发者用他们自己思维内在的逻辑和流程所要求的顺序开发程序.
现在越来越觉得, 其实, 写代码和写文章一样, 一个代码完成, 给别人阅读, 就得像看书一样, 从头至尾地, 能清晰的让阅读的人知道这代码实现的功能是什么, 适合/不适合哪些情况, 在使用时有哪些需要注意的地方;
在实际开发中, 除了给代码加注释外, 还有很多代码不能做的事情, 需要更多的文档来支持开发, 下面拿 ImageZoom slide [2] 为例说明一下:
总体流程, 如下所示:
应用场景分析¶
一个需求到来, 比如这个图片放大效果, 首先我们需要这个功能能用在哪些地方, 或哪些网站上已经使用了, 如果有的话, 就对比一下不同的情况下不同的要求, 如 #slide4 . 这样以后, 对比自己的需求, 想好要实现什么功能, 哪些功能保留, 哪些功能不需要, —- 明确需求;
同类组件调研¶
需求明确之后, 查找现有的同类组件, 看看他们针对这个问题, 是怎么实现的, 实现哪些功能, 哪些可以借鉴的地方, 哪些不足的地方要避免或者改进, 如 #slide6 , —- 明确要实现的功能有哪些;
功能点分析¶
分离出完成整个功能需要的几个核心功能点, 并针对各个功能点逐个描述, 如 #slide8 , 这也可以帮你理清思路, —- 进一步明确待实现功能;
技术方案¶
针对上述的几个功能点, 分别给出实现方案, 或者其他的技术难点, 又或者是算法上的分析等, 如 #slide9 , — 明确如何实现;
Public API¶
设计好的公共 API , 并在此说明, 也可以根据使用场景, 给出一些范例来说明 API 的使用, 如 #slide14 , 这里可以在开始时设计的尽量精简些, —- 明确 API 接口;
开发计划¶
简略或者详细的制定一个开发计划, 及发布的版本和时间等, —- 明确进度;
其他¶
可选的部分, 用于记录所有开发过程中碰到的杂类问题或者和其他同学的讨论.
我们建议每个 KISSY 组件下, 都存放一个 slide.html, 其内容包含上述几部分内容. 这个 slide 随着你的开发过程的推进, 也会不断添加更新, 最后发布时连同组件源代码一起, 形成非常好的知识体系, 这样, 给别人或是几十年后的自己阅读, 也会像看文章一样的有条理.
KISSY 组件目录及代码组织¶
关于代码组织, [4] 和 KISSY 工程 README 中都有些简单介绍, 下面简单说明下推荐的目录结构:
目录结构¶
- widget-name
assets: 存放 css, img 等相关文件
build.properties/build.xml: 打包配置文件
widget-name.js: 组件核心代码
slide.html: 上面所说的调研文档
test.html: 测试文件
- tests: 测试用例目录
- widget-name-spec.js: 测试用例脚本文件, 可以有多个, 但务必以-spec为后缀
代码组织¶
- 内部代码组织:采用 module, sub module 来分拆和组织代码
- 外部调用接口:component 形式,包括工具型组件 utils 和 UI 型组件 widgets
命名约定¶
原则:尽量避免潜在冲突,同时力求精简短小和见名知意。
全局变量: g_ks_comp_xxx 比如: g_ks_suggest_callback
class/id 命名: ks-comp[-xxx] 比如: ks-editor-toolbar-item
data 属性命名: data-ks-comp[-xxx] 比如: data-ks-suggest
hook 规范: KS_Comp 比如: KS_Switchable
- config 属性:
- 以小驼峰形式, 比如 minDate;
- 常用 config 属性, 如trigger, container, containerCls, triggerType, type, 固定名字, 所有组件保持一致;
- config 的属性值, 对于位置, 用数组形式, 比如 offset: [10, 20];
注意: 为了避免太冗长, 在保持清晰和无潜在冲突的情况下, 可以打破原则, 比如:
<div class="KS_Widget" data-widget-type="Tabs" data-widget-config="{...}">
罗罗嗦嗦这么一大堆后, 不知道你是否觉得简单? 非常推荐基于 KISSY 尝试去实现一个组件, 一切都很简单的^o^
注意: 上面的 StarScore 组件仅是示范,实际应用中,还更复杂些,这个组件将会在 KISSY 1.2 时正式发布.
发表评论
-
execCommand
2011-11-25 16:12 1125mozilla 文档地址:https://develop ... -
javascript DOM
2011-11-21 10:50 1047原文地址: http://blog.mo ... -
支持ctrl,shift键的拖拽排序
2011-08-26 11:23 1177终于搞定了,太不容易了。最近公司要弄一个拖拽排序的 ... -
javascript 封装 继承
2011-08-16 17:37 1138原文地址:http://www.ruanyifeng.com/ ... -
javascript 中的闭包
2011-08-16 16:37 924文章地址:http://www.ruanyifeng.com/ ... -
javascript 排序
2011-08-31 19:41 917//生成20-100之间的20个随 ... -
seajs 源码 学习 1
2011-08-10 17:32 0global.seajs = { _seajs: this ... -
seajs 源代码 学习
2011-08-11 14:08 3205这段时间学习了一下seajs,也用了seajs写了不少的d ... -
null 和 undefined
2011-07-31 15:05 882原文地址:http://blog.csdn.net/aimin ... -
辩:javascript 的数据类型
2011-07-29 11:18 1176关于“javascript 的数据 ... -
跨域请求
2011-07-12 11:34 0原文地址:http://itgeeker. ... -
uglifyJS
2011-04-26 12:21 0-b or --beautify — o ... -
JavaScript DO 框架 学习
2011-04-22 14:56 1835昨天在github找东西的时候,发现上了克军的DO框架,感觉不 ... -
prettfy demo
2011-02-23 08:29 1248<!DOCTYPE html PUBLIC " ... -
JavaScript 测试题
2011-02-16 12:07 1070console.log(" ... -
javascript 中的apply和call方法
2010-12-31 15:11 795一直以来不明白,今天算是搞明白了apply和call方法了。记 ... -
jquery 插件 开发 模板
2010-12-10 13:09 951原文来自网上。 (function($) { ... -
31个最实用的Javascript工具
2010-12-08 14:56 1084原文地址:http://developer.51cto.com ... -
27个必备的Javascript开发工具
2010-12-01 14:59 1083原文地址:http://blog.mcncc.com/4275 ... -
选择器 效率 图
2010-11-22 11:27 738以后用jquery的选择器这回有依据了
相关推荐
在JavaScript开发过程中,一些常用的工具包括: 1. **编辑器**:编辑器是开发的基础,一个好的编辑器可以提供代码提示、自动完成、语法高亮等功能。例如,VS Code(Visual Studio Code)是一款非常流行的免费编辑器...
14. **框架和库**:JavaScript社区有众多框架和库,如React、Vue、Angular用于前端开发,Express和Koa用于后端开发,以及jQuery简化DOM操作,Lodash提供实用工具函数等。 这份“JavaScript 中文开发文档”应该涵盖...
在前端开发中,JavaScript 工具库扮演着不可或缺的角色,它们简化了开发流程,提高了开发效率。JavaScript 工具库如jQuery、React、Vue等,它们的核心原理在于对JavaScript原生API的封装和优化,提供了诸如DOM操作、...
JQuery是一个快速、小巧、功能丰富的JavaScript库。通过以下几个步骤,可以使得Eclipse支持JQuery代码提示和验证功能: 1. 从JQuery官网下载JQuery的JavaScript文件。在下载页面中,需要注意选择正确版本的JQuery...
JavaScript作为Web开发中的重要语言,是前端开发的核心技术之一,尤其在构建动态、交互式的网页应用中发挥着关键作用。本教程《JavaScript前端开发程序设计教程(微课版)》旨在帮助初学者和有一定基础的开发者深入...
现代Web开发中,JavaScript库如jQuery和框架如React、Vue.js、AngularJS等极大地简化了开发工作。它们提供了一套工具和API,帮助开发者更高效地处理DOM操作、动画、路由管理等问题。 六、前端MV*架构模式 MV*...
这个名为"一个轻量级的 JavaScript 库,可用于快速创建流程图.zip"的压缩包,提供了一个专为创建流程图设计的JavaScript库。我们将深入探讨这个库的特性、使用方法以及它如何简化流程图的构建过程。 首先,流程图是...
这个“JavaScript前端开发程序设计教程(微课版)”的代码库提供了丰富的实例,适合初学者和有一定经验的开发者进行学习和参考。通过深入研究这些代码,你不仅可以巩固JavaScript知识,还能提高问题解决和代码调试的...
JavaScript是网页开发中不可或缺的一部分,它是一种轻量级的脚本语言,主要负责网页的动态交互功能。本实例教程旨在帮助任何级别的读者,无论是初学者还是有经验的开发者,都能深入理解和掌握JavaScript在网页开发中...
9. **前端框架与库**:如React、Vue、Angular等主流框架,它们提供了组件化开发模式,简化了前端开发流程,提高了开发效率。 10. **调试与性能优化**:理解如何使用开发者工具进行代码调试,以及如何优化JavaScript...
根据提供的信息,我们可以推断这份文档“javascript网页开发-张孝祥.pdf”主要涉及JavaScript在网页开发中的应用。虽然给出的部分内容并未包含实际的技术细节,但我们可以基于标题、描述以及标签来推测并展开相关的...
**JavaScript库**,也被称作JavaScript框架,是指一系列现成的JavaScript代码集合,它们通常包含各种工具、函数库和通用模块,旨在简化Web开发过程中的常见任务,提高开发效率。这些库大多是由开源社区开发并维护的...
此外,JavaScript还拥有大量的库和框架,如jQuery简化了DOM操作,React和Vue.js提供了组件化开发,Angular提供了完整的MVC架构。如果你在源代码中看到了这些库的使用,那么理解它们的工作原理和最佳实践将极大地提升...
总之,“json-table-converter”库为前端开发者提供了一个便捷的工具,使他们能够快速将JSON数据转换为易于阅读和操作的HTML表格,从而提升用户体验并简化开发流程。了解和掌握这个库的使用方法,将有助于你在实际...
10. **JavaScript框架和库**:如React、Vue、Angular等,它们提供了一套完整的解决方案,简化前端开发,提升开发效率。 11. **前端开发工具**:例如Babel用于将ES6+代码转换为兼容老版本浏览器的JavaScript,...
JavaScript工具库的出现,极大地提高了开发效率,简化了复杂操作,并提供了丰富的功能。本压缩包“JavaScript工具库.rar”包含了三个主要部分:JavaScript参考手册、jQuery参考手册以及“js网页设计300例”,这些都...
在JavaScript的世界里,基础知识点包括变量、数据类型(如字符串、数字、布尔值、对象和数组)、控制流程(如条件语句、循环、函数)、以及作用域和闭包。这些构成了JavaScript编程的基础,让开发者能够编写出有逻辑...
1. jQuery:简化DOM操作、事件处理和动画效果的库,极大地降低了JavaScript开发难度。 2. React:Facebook开发的前端库,主要用于构建用户界面,使用虚拟DOM提升性能。 3. Vue.js:轻量级的前端框架,易于上手,提供...
JavaScript是一种广泛应用于Web开发的脚本语言,它主要在客户端运行,为网页添加交互性,使得用户能够与网页进行实时的、动态的交互。在这本《JavaScript开发技术大全》电子书中,你将全面深入地了解到JavaScript的...