最近ajax在国内开始流行,很多程序员赶上了这个潮流,不幸的是,在这个大浪中,太多人拘泥于j2ee或者php等的经验,对服务器端做的事情转到客户端的javascript有热情,对css分离内容与表现不太有热情,一般的也就是知道该这么做,在论坛上可以看到很多程序员用ajax也只是在旧的table布局下套用了一点ajax的元素。这样没有充分发挥基于web标准开发的威力,只能算是旧瓶勾兑新酒。另外一种极端的做法是,单一页面网页程序,所有的元素都通过javascript生成。这样做可以避免一些无谓的css bug,最终的程序在装载阶段就比较缓慢,用到中间也容易变慢,内存泄漏,或者装载的组件过多,做得不太好的容易出现浏览器假死,尤其在网速慢或者网速不稳定的客户端上。
我一直都很反感一些javascript框架做一些布局的类库。web页面制作,表现,内容,行为三层的分离是最基本的原则,用javascript做布局是越界,该css做的事情由javascript做了,中间平白无故多了一层,浪费。目前而言,这些布局除了在模仿可缩放,可调整尺寸的地方有些必要以外,其他都不太值得使用。很多人对css避而远之,可能是因为在布局问题上受到的挫折太多。从前的解决办法是用一些hack手法,或者针对不同的浏览器多写几套css文件。现在css已经有很多试验性的例子,从menu,tab,tree等的生成,到grid布局的一些尝试,如google和yahoo都有这方面的css解决方案供参考。很多问题也能从http://www.positioniseverything.net/上找到解决办法,cssplayer这样的网站也能帮助我们找到很多借鉴的例子,从原则上说,无论是程序员还是美工,用css做一个拽一点的网站都不存在很大的障碍。当然,这个过程中肯定会遇到一些诡异的,一时无法解决的问题,但是网页有很多方法美化,总有绕过去的办法。用grid布局可能容易背上多div,多class症的罪名,不过比起table布局,多div症还是有可取之处。div所花的标签还是要少很多,内容和表现还是能够很好的分离,唯一的缺点是布局的无意义标签多了那么一点点,这一点点比起那些bug来说,还是少很多了。从开发效率上来讲,我认为是非常值得,缺点可能是如果刚开始就用这种手法,习惯之后就成了依赖,忘了css本身的魅力。
ajax和css紧密相连的一个重要原因在于,css可以帮助web页面减肥,减小dom树。很多ajax程序都是对dom树操纵来操纵去,尽管ext这样的框架对dom中的element获取做了优化,一次存取后,第二次他就记住了,Ajax在短小精悍的dom树比臃肿的dom树中速度要快很多。举个最近工作中遇到的例子,刚开始试用ajax做一个较复杂的页面,类似联众游戏的房间页面。房间的桌子列表,房间的人员列表,聊天室这三个是ext类库生成的,外面有些装饰元素,以前是table布局,有10来张小碎图。就外面一点点修饰页面,table套table,套的不厌其烦。估计大家这种页面都见多了。html页面程序不到4k,因为毕竟原来的页面程序员还是懂一点css,把很多table的修饰拿到外面的css文件中了。在本地一测试,平均装载时间稳定在8秒左右。当然,ext还用的debug模式,稍微优化了一下,平均6秒左右。我看不惯表格套表格的多余,动手整了整外面的修饰,简化为那么5个div,所有的碎图都变成背景图,把4个切碎的图合并成一个,页面之内再也没有<img>标签了(一个链接按钮)除外。html文件简化到900字节左右,从文件大小来看,毫无疑问,不值。但页面装载速度降为2s左右。当然,这个页面的装载速度还有提升的空间,我认为可以接受的速度是局域网1秒左右。从firebug的显示来看,html文件的网络传输速度没有差别,局域网内基本看不出来,但是在页面装载的时候,ajax程序开始获取后台数据,生成element组件的时候,速度差距就出来了。动态生成几十个element,累加起来就不少了。
做web开发,需要稍微复杂一点的控件的时候就开始犯难了。html本身提供的元素有限,复杂的没有,如spinner这种东西基本只能用javascript结合css做,可以找到一些现成的,当然一些javascript框架提供了一些不错的组件。目前我还用得比较少,略微看了些,感觉不太爽的地方是很多javascript鼓励一种不好的习惯,在元素中直接声明style,而不是分配类名。其实这些元素一般都附带一些基本的css文件,但是这些js框架对css文件的说明不太够,很多时候,改动组件的外观应该比较方便,最好不必在javascript中改,直接修改css比较省事,也符合分工的原则。其实,这也是jsf让人诟病的地方。在所见即所得上,现有的js在一些特定的工具上还能实现,jsf在netbeans上也做的不错,可惜的是缺乏一个整合的工具,让整个web页面能够在良好的分工协作中所见即所得,这是非常影响效率的一个问题。在复杂控件上,能够零散的找到一些框架使用,但是在修改这些控件的外观上,缺乏良好的对css的支持。这是目前比较头疼的问题。国内有不少单一页面的ajax应用,好些看上去就知道用了某个js框架,但是基本没怎么改css,美术效果很不咋地。
web2.0程序开发,还在摸索中,目前还没有看到很好的解决css和javascript分工协作的问题,只能寄希望于开发人员自身对此的认识了。
分享到:
相关推荐
这种分工协作可以提高开发效率,同时让每个部分都能专注于其擅长的领域。 在这个"html css javascript教学课件"中,你将学习到如何用这些技术来创建功能丰富、视觉吸引人的网页。通过实践和深入理解,你可以掌握...
该平台的设计主要基于Java语言,辅以CSS进行样式美化和JavaScript进行前端交互处理。该平台的源码包含了总共121个文件,分为不同种类,确保了整个购书平台的完整性和功能性。 在这些文件中,有34个文件是Java源文件...
基于Python的教务系统设计源码是一套采用流行的全栈技术组合,利用Python作为后端开发语言,结合HTML、CSS和JavaScript作为前端技术,开发完成的一款教育管理软件。该系统包含117个文件,其中既有后端的Python源代码...
组内分工文件记录了项目团队成员的职责分配,有助于提高团队协作效率。百度脑图文件则是项目规划和设计思路的可视化展现。可行性研究文档评估了项目的实施可能性,管理文档则是整个项目管理流程的记录。 克拉淘克拉...
项目文件结构方面,包含的文件类型和数量反映了开发过程中的分工协作和开发层次。Java文件和JavaScript文件的数目较多,表明系统在这两方面有较复杂的逻辑和功能。HTML、CSS文件相对较少,但它们是用户直接接触的...
该项目的源码文件结构以及文件类型的选择,也体现了现代Web开发中的分工协作和模块化开发的理念。通过明确的文件分类和规范的命名,可以使得团队成员在开发过程中更加清晰地了解各自的工作职责,提高开发效率。同时...
整个外卖平台的设计源码集成了丰富的文件资源,不仅体现了Web开发的多样性和复杂性,也展示了前后端分离架构下,各技术栈之间的协作和分工。前后端分离使得项目的开发更加模块化,提高了开发效率,便于团队协作和...
整个系统的文件结构设计合理,通过文件和目录的合理划分,使得代码的组织结构清晰,便于团队协作和后续的扩展。该系统还提供了LICENSE文件,为项目的授权和使用范围提供了明确的说明,保证了知识产权的合法性。 ...
内容概要 本项目聚焦于一个功能完备的手机商城页面设计与实现,采用HTML、CSS和JavaScript作为核心技术栈。页面不仅外观现代、交互...增强团队合作能力和项目管理技巧,通过分工协作完成项目开发 仅用作学习参考使用
此外,源码的文件结构设计也体现了良好的模块化和组织性,文件夹如application、public和runtime等分别承担不同的职责,有助于开发者进行分工和协作,从而提高开发效率和代码质量。 基于PHP、HTML、JavaScript、CSS...
这表明项目的业务逻辑和功能被合理分解和组织,每个子项目都承担着特定的职责,有助于开发团队的分工协作。 这个项目是为特定的商业客户定制开发的,运用了多技术栈构建了一个完整的Web应用框架。它不仅展示了如何...
4. **团队合作**:如果是小组项目,则可以锻炼团队协作的能力,学会如何有效沟通和分工合作。 综上所述,该项目不仅能够帮助学生巩固理论知识,还能够培养学生的实践能力和创新能力,具有非常重要的教育意义。
同时,这也是一种团队协作的锻炼,因为通常一个网站会涉及到多人分工合作。 5. 编号100010186: 这可能是一个课程代码或项目编号,用于区分不同的课程设计任务。在实际的学习环境中,每个项目都有独特的标识符以便...
JavaScript与CSS文件相辅相成,共同打造了网页的动态交互效果和视觉样式。在项目中,还包含了一个FreeMarker模板文件,FreeMarker是一个用于生成文本输出的Java库,它允许使用动态数据生成HTML、XML或其他文本格式的...
这种详细的文件分工不仅有利于开发团队的协作,也为后期的维护和升级提供了便利。 在具体的实现上,该系统可能采用了MVC(Model-View-Controller)架构,将数据模型、用户界面和控制逻辑分离,使得代码更加清晰、...
CUC-NS在线查看设计源码系统是一个综合性的项目,主要使用Python、JavaScript、CSS和Shell这四种编程语言和脚本语言开发而成。系统具有超过400个文件,其中大部分是图像和文档,包括PNG、JPG、Markdown、Visio以及...
该项目的结构完整,文件分布合理,说明它采用了模块化的设计思想,这不仅有助于项目的分工协作,而且也为后期的维护和扩展提供了便利。这样的设计可以确保项目在开发复杂的综合应用系统时,能保持良好的可读性和可...
在当前数字化与信息化的浪潮中,构建一个基于Html、Css和JavaScript的视频网站,不仅是一个技术练习,更是对现代网页开发能力的综合检验。视频网站作为一种多媒体信息交互平台,它集内容展示、用户交互、数据管理等...
这样的目录结构有助于维护项目的模块化和代码的清晰度,便于开发者分工协作。 该项目通过整合前端和后端的多种技术,提供了一个完整的珠宝商品电商平台的解决方案。它不仅适用于珠宝商品的展示,还能够处理复杂的...
知识库文件夹(knowledge)和源代码文件夹(src)表明项目代码组织结构清晰,分工明确,有助于团队协作开发。 整个系统通过多个文件的协同工作,构建了一个全面的知识产权信息查询服务平台,旨在为用户提供便捷的...