文档章节

Web项目,工程目录应该怎样规划?

哈库纳
 哈库纳
发布于 2015/12/23 22:18
字数 818
阅读 1075
收藏 13

一、工程目录如何规划?

    通常我们会给自己的Web项目做一些目录上的规划,一般来说,我们会在webapp目录下创建很多文件夹。用来存放不同业务的文件,当遇到通用文件时我们会专门新建一个common文件夹来保存它们。此外还有js、img、css等等各类文件。最后我们的目录有可能是这个样子的(如下图:左边)

    左边这种方式,显然没有对工程结构进行预先的合理规划。属于典型的打一枪换一个地方做派。路子很野!效率很高!但是不成体系,一旦项目做大了,或者参与人员多了就会暴露各种问题。

    那么我们在看一看右边这种方式,它比左边的好了一些,专门为资源文件和公共文件做了规划。我相信一般情况下项目的目录结构都趋向于这种结构。在不同的项目会有相似但是各自不同的结构。

二、以框架的眼光规划工程目录

区块

    通常一个页面可以被切分为多个不同的小区块,每个小区块会按照业务进行划分。相同功能的部分我们也会使用相同的区块。例如:

    这样一来不同的页面都是通过组合区块的方式得以呈现,这样做的好处是页面中相同的部分可以抽象出来成为区块。为了后面理解更加方便,简单模拟一个电商网站的三个主要页面:

    这三个不同的页面根据各自的功能都进行了区块的划分,那么把眼光从区块上在放大到页面上。

布局

    可以看出,不同的页面都有“Head”和“Foot”区块,而且都是在相同的地方。通常实现这种逻辑的方式是我们在每个页面中都添加相应的代码,但是这也实在是太low了。现在我们把这个共性也抽象出来。

有了这个“layout”就可以解决我们页面之间共性的问题了,下面在举一个复杂点的例子。layout可以轻松解决。

    在这个复杂的布局例子中,首先定义了一个全网通用布局。然后根据市场不同定义了两类模版,第一类layout 1,用来做市场频道页。而第二类layout 2,用来做垂直市场List搜索页。

这两个布局例子可以在:淘宝网上见到。

页面

    经过上面“区块”“布局”的抽象,似乎已经可以表述整个网站的面貌。接下来就是用户真正可以看到的页面了。为了避免页面的路径和前面我们定义的两个元素混淆,再把所有页面单独放到一个目录中。最后的布局结构就变成了这个样子的:

三、结束语

    这样一来感觉上,这套目录就很清晰明了。

© 著作权归作者所有

共有 人打赏支持
哈库纳

哈库纳

粉丝 960
博文 84
码字总数 151810
作品 4
杭州
后端工程师
加载中

评论(5)

王爵nice
王爵nice
42 我也附带个小尾巴 https://github.com/biezhi/jb/blob/master/mvc/index.md
青木河
青木河

引用来自“断崖逐梦”的评论

来我们公司做架构师吗
哈哈哈,大哥太逗了
Smile月光
Smile月光
断崖逐梦
断崖逐梦
来我们公司做架构师吗
Cobbage
Cobbage
啊啊啊啊啊啊啊啊啊啊?
JAVAEE——宜立方商城14:系统部署

1. 学习计划 1、系统部署 2. 项目部署 2.1. 项目架构讲解 2.2. 网络拓扑图 2.3. 系统部署 2.3.1. 部署分析 e3-manager e3-manager-web e3-portal-web e3-content e3-search e3-search-web e...

kent鹏
08/09
0
0
使用你喜欢的模版引擎渲染页面

目前 Web 网站的开发 基本都用到了模版引擎,使用 Hasor 开发 web 可以使用你喜欢的任何模版解析引擎。在开始本文之前,先推荐您三篇相关文章: https://my.oschina.net/u/1166271/blog/7530...

哈库纳
2016/10/06
551
0
使用maven管理 项目,多模块怎么结合?

假如说我有一个系统,现在分成了几个项目(maven里面的意思是模块),两个web工程,一个java工程 。 我应该怎么新建这些maven工程,他们的结构是怎样的? maven新手,望解答。。...

ccjiang
2014/05/08
575
3
写书计划《让我们一起开源吧》目录大纲

目标读者: 写框架的人或者正在计划写框架的人,个人开源项目爱好者,有想法参与开源项目的读者。读者范围还可以扩大到Java初学者。 本书特色: 本书的视角是通过个人作者发起开源项目为切入...

哈库纳
2016/11/24
481
26
Maven 是怎样创建War 包?

最近在网上看到一篇介绍maven基础知识的文章,觉得对初学Maven的朋友一定有帮助。水平有限,翻译的不好,请大家见谅。 介绍 在处理WEB应用的时候,最终使用的工程文件是以War包的形式交付。M...

Matt_MYB
2013/11/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

GO冒泡,二分查找

package mainimport("fmt")func main() {var arr [5]int = [5]int{11,13,9,2,25}maopao(&arr)fmt.Println("arr = ", arr) //[2 9 11 13 25]findIndex := binaryFind(&arr, 0......

汤汤圆圆
32分钟前
1
0
工作2年半跳槽面试阿里,成功拿到offer,凭什么?

2015年刚毕业的我,进入了一家小小的公司实习工作,在学校学了三年软件开发的我,还是想去寻找一份互联网行业的工作,这样更能学以致用发挥自己的特长。一直到18年三月份,我辞掉已有的工作,...

java知识分子
37分钟前
1
0
讲述下:Linux的10个最危险的命令

导读 Linux命令行佷有用、很高效,也很有趣,但有时候也很危险,尤其是在你不确定你自己在正在做什么时候。这篇文章将会向你介绍十条命令,但你最好不要尝试着去使用。 当然,以下命令通常都...

问题终结者
41分钟前
1
0
分库分表后如何部署上线?

引言 我们先来讲一个段子 面试官:“有并发的经验没?” 应聘者:“有一点。” 面试官:“那你们为了处理并发,做了哪些优化?” 应聘者:“前后端分离啊,限流啊,分库分表啊。。” 面试官:...

Java烂猪皮
46分钟前
1
0
Redis源码阅读笔记-快速列表

快速列表 快速列表(quicklist)是由压缩列表(ziplist)组成的一个双向链表,链表中,每一个节点都是以压缩列表(ziplist)的结构保存。 在 Redis3.2 后加入的新数据结构,在列表键中取代了双向链...

Jian_Ming
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部