`
bellstar
  • 浏览: 150690 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

javascript总结(二)文件组织与代码组织

阅读更多

目录
(一)有关框架
(二)文件组织与代码组织
(三)JS与FLASH交互
(四)ajax局部刷新与RPC
  (五)获取设置元素样式与监听元素事件
  (六)页面元素的创建调整与关联
(七)浏览器兼容性问题
(八)WEB软件的前端架构实践


文章中的代码只为表达文章意义,非真正能执行的代码。
现在公司的文件组织结构就不列举了,有点儿乱,有不能算理由的历史原因和不严谨的因素 ,要整。我的重整方案:
文件组织
一、自己开发的代码
文件命名:与类的名字一样,如有MessageBox类,则文件名也为MessageBox,当然前提是没有在一个文件里放两个类,这个目前做到了。

文件夹命名
小写,与命名空间一致:
jsroot--comm------util-------v1_0------Cookie.js
                 |                |
                 |                ui-------v2_0------MessageBox.js
                 |----------Comm.js (定义公用库的shortname)
                 |
             app----------user----- User.js
                 |                |---------Profile.js               
                 |                |---------IconEdit.js
                 |                |---------Relation.js
                 |
                 |-------- space-----Share.js
                                   |----------MyApps.js
遵行的规则如下
  • 公用的类库(与具体业务逻辑无关)放到comm目录下,公用代码区分版本
  • 业务逻辑放到app目录下,app目录下是各模块的文件夹,模块下如果还有子模块,继续建立子模块文件夹
  • 业务逻辑代码不区分版本

二、第三方库:
jsroot--vendor----jQuery---v1_2_4----jQuery-1.2.4.min.js
                 |                |
                 |                |--------plugin----imagAreaSelect-----v0_9_2_3----[lib all files]
                 |                                                                              
                 |---------firebug---v1_0----firebug-lite-compressed.js

遵行的规则如下:
  • 建立版本号文件夹,版本号中的.转为_表示,版本号前加小写字母v
  • 如果某个第三方库为依赖于某个框架,则放到此框架根目录之下,不必放到依赖的版本之下
  • 下载到的第三方库文件原样全部直接放到版本号文件夹下,不重命名原来的文件或文件夹,包含的css,images文件夹也保持原样。这样做目的是为了保持原样。


三、文件混淆与压缩
工具
用过两种:
金大为JSA:可配置ANT来批量压缩,会进行脚本分析,采用JSI来管理脚本的话,就用JSA
yui-compressor:可在命令行下运行,我写了RUBY脚本来批量压缩,参见自动批量压缩JS和CSS

有关压缩脚本的存放位置
我们的SVN静态目录结构是这样的
static------js
           |---js_min
           |---css
           |---css_min
把源和压缩目录分开,而不是放到一起,有以下好处
  • 源文件不与压缩文件放一起,很清爽
  • 模板中定义一个文件夹的变量,通过更改它便可切换源目录与压缩文件目录


代码组织
一、命名空间的实现
参见实现javascript的namespace声明
//example
(function(user){
user.User = function(){
 //code ...
}
})(ibm.namespace("ibm.app.user"))

二、变量命名规范
  • 全局变量以$开头,如$user
  • 常量全部大写,单词以下划线分隔,如STATIC_ROOT
  • 变量采用驮峰式写法,如userIcon,UserRelation
  • 类名首字母大写
  • 普通变量、命名空间,首字母小写
  • 局部变量可缩写,命名空间,类名尽量不缩写
  • 条件表达式、正则表式式,如果很复杂,给其命名

三、页面中代码的载入
原则
只在主页面中写初始化的代码
!!!坚决不在主页面中嵌入脚本,
!!!坚决不在ajax载入的HTML片段里面嵌入脚本,载入后要执行代码,可以写在 回调里面

主面页
在顶部我们只载入了两个JS,一个是swfobject.js,一个是Comm.js,这两个文件都很小
在comm.js中我们定义了一个ready方法,功能类似jQuery(document).ready。其他的脚本全部放到了页面最底部。
<head>
<script type="javascript" src="Comm.js"></script>
<script type="javascript" src="swfobject.js"></script>
</head>
<body>
<script type="javascript" src="1..n"></script><!--其他脚本-->
<script>
$BASE_URL = {
static: <?php ?>,
user: <?php ?>
}
jQuery(document).ready(function(){
comm.init(); //按顺序执行传给comm.ready()的方法;
})
</script>
</body>
<html>


ajax载入的HTML片段中要用到的脚本,大致做法如下
function loadHTML(target, src, js){ 
   Comm.importJs(js, function(){
     jQuery(target).load(src);
   })
}

项目很大,依赖关系复杂
用JSI来管理和导入你的脚本,SO EASY!参见JSI专栏





分享到:
评论
4 楼 bellstar 2010-03-31  
fins 写道
JSI 到现在一直不会用...

我们公司一直在用 金大为早期的 jsa做js压缩
后来他出的jsi一直没有用.

:'(

JSI使用起来还是很方便的,但可能不大适合网站,网站的JS相对比较简单,我认为比较适合大型的WEB软件。但是用JSI描述依赖,并作为开发阶段来用还是很方便的。
3 楼 fins 2010-03-31  
JSI 到现在一直不会用...

我们公司一直在用 金大为早期的 jsa做js压缩
后来他出的jsi一直没有用.

:'(
2 楼 bellstar 2010-03-31  
godfish 写道
引用
//example
Javascript 代码

   1. (function(user){ 
   2. user.User = function(){ 
   3.  //code ... 
   4. } 
   5. })(ibm.namespace("ibm.app.user")) 

(function(user){
user.User = function(){
//code ...
}
})(ibm.namespace("ibm.app.user"))



这样定义的都是对象吧,并不是类呀

也可以是类,看你怎么写
1 楼 godfish 2010-03-30  
引用
//example
Javascript 代码

   1. (function(user){ 
   2. user.User = function(){ 
   3.  //code ... 
   4. } 
   5. })(ibm.namespace("ibm.app.user")) 

(function(user){
user.User = function(){
//code ...
}
})(ibm.namespace("ibm.app.user"))



这样定义的都是对象吧,并不是类呀

相关推荐

    如何组织你的javascript代码

    直接使用函数是一种简单的代码组织方式。这种方式适用于较小的项目或功能模块。通过直接编写函数并在适当的位置调用它们,可以避免全局变量的污染,提高代码的整洁度。例如: ```javascript function greet(name) {...

    JavaScript实战 源代码

    1. **代码结构**:了解代码是如何组织的,包括文件和目录的布局,以及模块化的实现方式(如CommonJS, ES6模块)。 2. **变量与数据类型**:观察作者如何声明和使用变量,以及对不同数据类型(如字符串、数字、数组...

    JAVASCRIPT程序设计基础教程课本案例代码

    函数则是组织代码的模块,可以接收参数并返回值。 接着,深入理解DOM(Document Object Model)操作是JavaScript的重要部分。DOM是HTML或XML文档的树形结构表示,通过JavaScript可以添加、删除、修改元素,实现页面...

    Javascript打飞机小游戏源代码

    至于压缩包内的"javaScript打飞机"文件,这很可能是整个游戏的源代码文件,可能包含HTML文件(用于构建游戏界面)、CSS文件(用于样式设计)和多个JavaScript文件(分别负责不同的游戏功能)。打开这个文件,我们...

    JavaScript源代码大全

    通过阅读和分析这些源代码,你可以了解到如何组织和编写JavaScript代码,如何操作DOM,以及如何使用事件处理程序。此外,还可以学习到如何结合CSS和JavaScript实现更复杂的动态效果。在实际项目中,这样的技能将非常...

    前端开发技术分享 前端开发-更好的文件组织 代码组织 共49页.pdf

    前端开发技术分享是指前端开发中的文件组织和代码组织,而文件组织是指静态文件的管理和组织。前端开发主要用到HTML/CSS/Javascript这三种语言,它们的发展和在实际应用中的复杂度和代码量的提高,使得文件组织变得...

    《网页设计与制作项目教程(HTML+CSS+JavaScript)》源代码.zip

    在本教程中,JavaScript文件可能以.js结尾,用于处理用户输入、改变页面内容或与其他Web服务进行通信。理解JavaScript的基本语法、DOM操作和事件处理是网页开发的关键技能。 在实践中,HTML、CSS和JavaScript常常...

    代码文件代码文件

    例如,一个Web应用可能有HTML文件负责页面结构,CSS文件处理样式,而JavaScript文件则处理交互逻辑。在软件工程中,良好的代码组织有助于团队协作和代码维护。 代码文件还需要遵循一定的编码规范,如命名规则、注释...

    jquery下组织javascript代码(js函数化).docx

    特别是在使用jQuery时,如何有效地组织代码,使其既易于维护又具有良好的可读性,成为了前端开发者们关注的重点。本文档将探讨在jQuery框架下如何组织JavaScript代码,尤其是通过函数化的方式来提升代码质量和可维护...

    html 无限极组织结构前端代码

    HTML 无限极组织结构前端代码是一种用于展示层次关系数据的技术,常见于企业组织架构、文件系统或产品分类等场景。这种技术允许用户以树形结构查看数据,而且能够无限制地进行子节点的添加和扩展,提供了一种直观且...

    JavaScript值班表代码

    1. **外部脚本引入**:`&lt;script language="JavaScript" type="text/JavaScript" src="../zb/date.js"&gt;&lt;/script&gt;` 这一行代码表明了从外部引入了一个名为`date.js`的JavaScript文件,该文件可能包含了与日期处理相关...

    javascript树源代码

    JavaScript树结构是一种在Web开发中常用的数据展示方式,它能够以层级关系呈现复杂的数据,尤其适合于展现具有分层结构的目录、组织架构或者文件系统。在这个“javascript树源代码”中,开发者利用XML作为数据源来...

    服务端运行javascript代码

    模块系统允许开发者将代码组织成独立的模块,方便复用和管理。事件驱动模型则使得Node.js能高效地处理并发请求,通过事件循环和回调函数,非阻塞I/O操作得以实现,这在处理大量并发连接时具有显著优势。 除了Node....

    从入门到精通javascript全部代码

    "从入门到精通javascript全部代码"这个资源旨在帮助初学者逐步掌握JavaScript,并通过实际代码示例深入理解其核心概念。 首先,JavaScript的核心知识点包括变量、数据类型、控制结构(如条件语句和循环)、函数、...

    javaScript源代码集

    这类工具可以帮助开发者检查代码质量、性能、错误,或者将JavaScript代码转换为其他格式,如浏览器可执行的捆绑文件。 `7880.com.txt` 文件名暗示这可能是一个文本文件,其中可能包含了网址7880.com的相关信息,...

    HTML5_CSS3_javascript 源代码

    总结来说,这个压缩包提供的"HTML5_CSS3_javascript 源代码"很可能是为了帮助学习者理解和掌握现代Web开发的核心技术。通过深入学习这些源代码,可以了解如何利用HTML5构建结构化的网页,用CSS3实现美观且响应式的...

    JavaScript显示组织结构图

    首先,`organization.js` 文件很可能是包含组织结构图绘制逻辑的核心代码。在JavaScript中,我们可以通过创建自定义对象或者使用现成的数据结构(如树或图)来表示组织结构。通常,组织结构图的数据源可以是JSON格式...

    vs2010 javascript代码折叠扩展插件

    总结来说,"vs2010 javascript代码折叠扩展插件"是一款专为Visual Studio 2010设计的工具,它提升了JavaScript代码的编辑体验,特别是对于ASP.NET开发者。通过代码折叠功能,开发者能够更好地管理和阅读代码,进而...

    javascript代码应当放在html代码哪个位置比较好_.docx

    因此,合理地组织和合并JavaScript文件至关重要。 需要注意的是,引用外部JavaScript文件时,路径必须正确。相对路径适用于在同一目录结构中的文件,而绝对路径则适用于跨域或不同目录结构的情况。 总结起来,...

    用JavaScript实现的员工组织结构图.zip

    2. "132692138376028757" - 这个文件名看起来像是一个随机生成的数字或时间戳,可能是JavaScript代码文件、数据文件(例如JSON格式的员工数据)或者是一个图片文件,用于显示组织结构图的图标或背景。具体的用途需要...

Global site tag (gtag.js) - Google Analytics