24Web前端架构

近来都是接触前端,所以学多点这方面的东西,虽说有实战到项目里面去了,但可能还没走到所谓正确的道路上去。欢迎交流。

转载请说明来着:http://blog.csdn.net/wowkk

---------------------------------------------------------------------------------------------

如果Web前端做多了一点,那就会意识到,无论项目大小,都得考虑到一个“架构”的问题。

因为只要是项目,就会涉及到“管理”,如果不规范,就肯定会乱。如果涉及到团队协作,情况就会更加糟糕。

如果没有架构的观念,大家都把css、js都写在html里,并且css想怎么写就怎么写,js接口想怎么放就怎么放,不仅像垃圾堆一样让人恶心,维护起来也是个噩梦,获取就是直接清空重新堆放垃圾?

这里所谈的架构,并不是什么伟大的东西,也没名字,只是关乎前端质量。像后端的“三层架构”一样,可以走遍大部分管理系统。

PS:本文思想主要学自《编写高质量代码--Web前端开发修炼之道》,因为所做项目必须保密,所以演示代码会比较少,详细内容得去这本书中学习。

目前我的做法有下面几步:

一:保证文档流清晰

当确定好页面各模块(版面)后,不通过任何css代码修饰,用Div标签把布局代码写好出来。打开页面,能看懂个模块的组织逻辑就可以进入下一步。

二:引入bass.css文件

bass.css为基础样式文件。引入这个文件,可以清除浏览器带来的默认样式,比如直接放个div在页面,它和body是有个间距在那的,对于新手来说,清除这个边距都有得受的。还有就是解决有时有些不是很好理解的浏览器差异。

它的主要特性就是:“通用性”和“原子性”,可以引用到任何页面中,并且每个css类都不可再分。比如  .fl{float:left;display:inline;}  出现浮动效果,并且解决IE6的双外边距BUG。

通过组合使用bass.css里面的类来装修html页面元素。比如class="bc w200"表示元素宽度200px & 居中。

下面是一个bass.css文件代码,可以通过需要自己新增代码进去(好像代码大部分来自 http://developer.yahoo.com/yui 雅虎的前端框架,比较成熟的代码)

@charset "utf-8";
/* CSS Document */
/*CSS reset*/
html{color:#000;background:#FFF;}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,textarea,p,blockquote,th,td{margin:0;padding:0;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var,optgroup{font-style:inherit;font-weight:inherit;}del,ins{text-decoration:none;}li{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}q:before,q:after{content:‘‘;}abbr,acronym{border:0;font-variant:normal;}sup{vertical-align:baseline;}sub{vertical-align:baseline;}legend{color:#000;}input,button,textarea,select,optgroup,option{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;}input,button,textarea,select{*font-size:100%;}

/*文字排版*/
.fontf{font-family: Helvetica, Tahoma, Arial, "Microsoft YaHei", "微软雅黑", Heiti, "黑体",SimSun, "宋体", STXihei, "华文细黑",  sans-serif;}

.f12{font-size:12px;}

.fb{font-weight:bold}
.fn{font-weight:normal;}
.t2{text-indent:2em;}
.lh150{line-height:150%;}
.lh180{line-height:180%;}
.lh200{line-height:200%;}
.unl{text-decoration:underlline;}
.no_unl{text-decoration:none;}

/*定位*/
.m0a{margin: 0 auto;}
.tl{text-align:left;}
.tc{text-align:center;}
.tr{text-align:right;}
.bc{margin-left:0;margin-right:0;}
.fl{float:left;display:inline;}
.fr{float:right;display:inline;}
.cb{clear:both;}
.cl{clear:left;}
.cr{clear:rigth;}
.clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden;}
.vm{verticle-align:middle;}
.pr{position:relative;}
.pa{position:absolute;}
.abs-right{position:absolute;right:0}
.zoom{zoom:1;}
.hidden{visiility:hidden;}
.none{display:none;}

/*宽度*/
.w10{width:10px;}

.w14p{width:14%}

/*高度*/
.h50{height:50px;}

.h10p{height:10%}

/*边距*/
.m10{margin:10px;}

/*上边距*/
.mt0{margin-top:0px;}
.mt25{margin-top:25px;}

.mt2p{margin-top:2%;}

/*下边距*/
.mb0{margin-bottom:0px;}
.mb5{margin-bottom:5px;}

.b9p{bottom:9%;}
/*左边距*/
.ml0{margin-left:0px;}
.ml20{margin-left:20px;}

.ml1p{margin-left:1%;}

/*右边距*/
.mr5{margin-right:5px;}

.p10{padding:10px;}

.pt5{padding-top:5px;}

.pb5{padding-bottom:5px;}

.pl5{padding-left:5px;}

.pr5{padding-right:5px;}

三:引入common.css文件

首先是分析各页面组成模块,如果有相同的表现的地方,就抽取出来,作为共同类。然后一般还会在引入page.css文件,不同页面引入不同的page.css来各自表现自己的页面。

但我们主要是做Web App项目,页面会比较少,所以舍弃了page.css文件,只引入了common.css文件,也不需要怎么抽取共同元素,当commoncss + page.css使用。

四:js控制接口

一是变量的初始化:提到接口,那就会有对应的数据,一般得使用全局变量。对应接口所使用到的全局变量,不能和局部变量等混淆。解决方法就是使用命名空间var GLOBAL={}; 之后就可以直接使用诸如GLOBAL.state1 = "全局变量1"来保存接口所用的数据。

上面的代码是写在html页面的,第二个部分见下个部分。

五:引入common.js文件

本来有base.css就应该有base.js的,但我们使用的是JQuery.js所以免去了。

common.js主要的存储“接口”:

注意到了吗。JQuery是不存在stateUpage这个函数的。

我们在处理模块的时候,全部用插件的思想封装起来了,所以,页面整合的人和模块插件的人可以同时工作起来。模块写好了,只需要给一行<div>的代码给整合的人放到页面上,调用下初始化函数(此时插件会重新组合代码替换到相应的位置)。

总结:

(没时间画出流程图了,赶紧睡觉明天还要上早课~~)

按照这样的模式,前端工作就可以流程化了。当某个地方需要修改时,无论是css样式,还是某个模块,负责那部分的人修改好对应的文件,然后发过来替换源文件即可。在配合设计师的工作上也可以比较灵活,后面有空再分解下这方面的流程。

24Web前端架构

时间: 2024-10-10 03:27:44

24Web前端架构的相关文章

使用模块化思维和模板引擎搭建前端架构(require+underscore)

require.js 介绍: 是一个非常小巧的JavaScript模块载入框架,是AMD规范最好的实现者之一.最新版本的RequireJS压缩后只有14K,堪称非常轻量. 官网:http://www.requirejs.cn/    (PS:如果没接触过,刚开始看都是一头蒙蔽的,建议看下菜鸟教程) 新手教程:http://www.runoob.com/w3cnote/requirejs-tutorial-1.html 优点:可完成团队协作.模块复用.单元测试等等一系列复杂的需求 undersco

WEB前端开发电商网站前端架构

课程介绍通过一个垂直电子商务网站,介绍前端架构搭建和实现的步骤和方法,以及在这个过程中我们需要做什么才能帮助项目最终从设计走向实现.课程提纲第1章 前端架构知识准备认识前端架构,了解前端架构技术.产品设计和发布.数据分析和优化的基础第2章 前端架构设计了解前端架构的组织方式.页面层次的架构组织.架构设计和组件化方案等.第3章 前端架构实施了解架构的实施.优化思路,如何实施自动化.通过蛋糕电商网站讲解,分析案例.如何图解设计和交互图.如何从目录入手搭建基本架构.如何从页面层次进行架构搭建和最后项目

web富客户端应用下,前端架构问题。

前言: 以前的工作大部分都是,前端做页面 稍微写几个js效果就算是 有复杂的效果 也没有涉及到 需要去调用后端数据的层面.总体来说,以前的页面逻辑会相对简单后端会做更多的事. 而现在,这些任务都抛给前端来做了..  前端的业务逻辑变得很复杂 有的时候甚至 比后端的更复杂.(当然这个也跟写接口的人水平有关...) 在这样的背景下面,如果还是以前那套 页面里面写js 或者哪里有效果写哪里的话.无论是实现,还是后面的维护都是一个很大的问题.. 所以,我觉得富客户端web应用,很有必要组建一个自己的前端

没有最好,选择最适合自己的前端架构

前端框架不断推新,众多IT企业都面临着"如何选择框架","是否需要再造轮子"的抉择.去哪儿网前端架构师司徒正美分析了各主流行框架优劣点.适用场景,并针对不同规模的公司.项目给出了相应的前端技术选择方案. 最近几年,前端技术迅猛发展,差不多每年都会冒出一款主流的框架. 每次新开业务线或启动新项目时,首先第一件事就是纠结:使用什么框架,重造什么轮子?我很高兴应CSDN的邀请谈我的看法. RequireJS,前端技术发展分水岭 在五六年前,移动端还没有兴起,我们没有什么选

用“MEAN”技术栈开发web应用(一)AngularJs前端架构

前言 不知何时突然冒出“MEAN技术栈”这个新词,听起来很牛逼的样子,其实就是我们已经熟悉了的近两年在前端比较流行的技术,mongodb.express.angularjs.nodejs,由于这几项技术涵盖了从前端到后端再到数据库,可以用他们完整的开发一个web应用了,所以成了一个非常牛逼的组合,颇有当年LAMP的气势.前端要从切图仔迈向全栈的路上,这几门技术必须得有所涉猎.本系列文章利用自己虚构的一个小项目为例,对“使用MEAN技术栈开发web应用”做一个入门级的介绍. AngularJs的争

前端架构浅谈

前端架构浅谈 0.前注 鉴于作者本人的能力有限(非常有限),并且依然在学习中,因此本文的高度和深度必然有所欠缺. 欢迎(并且非常欢迎)大家来批评指正,如果能详细的说明问题在哪里,如何解决和改正,那么就太感谢了!!! 我最喜欢听有理有据的批评了!! 本人QQ:20004604,邮箱:[email protected],期待你的交流. 1.为什么要有一个好的架构 首先明确一点,架构是为需求服务的. 前端架构存在的目的,就我个人理解来说,有以下几点: 1.提高代码的可读性. 一个好的架构,代码的可读性

好的前端架构

p{text-indent:2em;}前端开发whqet,csdn,王海庆,whqet,前端开发专家 翻译自:www.sitepoint.com 翻译人员:前端开发whqet,意译为主,不当之处欢迎大家指正. 译者说:临近期末,大部分的基础教学内容已经讲解完毕,在进行比较大型的项目训练之前,如果能让学生了解甚至遵循一些前端开发的编码规范将会是一件非常有意义的事情.因此,本博客准备于近期整理一个编码规范与最佳实践的系列文章,包括html.css.javascript.jquery.php等,希望能

【PC网站前端架构探讨系列】关于中小型PC网站前端架构方案的讨论与实践

 说在前面 好几天没更新这个系列文章了,这段时间还是在研究这块东西,遇到的各种奇葩问题,最后写完,只是调试就花了两天,果然发现在和大神之间的距离越来越远,在加上大部分时间在追求自己的梦想,梦想同样也是遥遥无期啊!一直在思考星星的那句话,人到底该不该追求梦想,做个咸鱼到底好不好的,吃吃喝喝睡睡的,反正最近感悟挺多,抽时间写个文章,好好和大家聊聊,把我的心里话告诉大家,程序员不容易,寻梦者更难啊!比如,这个所谓的pc网站的前端框架,这对一个做后台而且还是多年一直在做C#.JAVA没怎么写脚本的我来说

我的前端架构之一--统一扩展Js方法

我的前端架构汇总 MyJs_Core.js 这是一个核心的Js文件,它扩展了原生的Js方法.如下: Array对象: 1) indexOf 2) max 3) min 4) removeAt 5) insertAt 6) remove 7) intersect 8) minus 9) Recursion 10) last 11) distinct 12) to 13) addArray String对象: 1) indexFrom:不区分大小写进行查找. 2) format: 使用索引进行参数化