创建Web应用技巧之文件和目录结构
2012-01-18 09:26:54  来源:e800  作者:西米薇 编译  编辑:王鲲鹏  
有组织才是有效运行各类代码的关键,对于Web应用而言尤为如此。许多Web开发员选择使用预制的编码架构,如用于PHP的CodeIgniter,这类架构可帮助程序员遵守特定的架构规则,提高编码效率。

有组织才是有效运行各类代码的关键,对于Web应用而言尤为如此。许多Web开发员选择使用预制的编码架构,如用于PHPCodeIgniter,这类架构可帮助程序员遵守特定的架构规则,提高编码效率。不论有没有,Web应用都需要结构,而且程序员最好对从核心部分组织Web应用结构的最佳方式有所了解。

每个程序员对于如何组织Web应用可能都有自己独特的标准,但是在这篇文章中我们将为大家介绍一些最佳案例,常用案例并详细解释为什么Web应用的某些部分应用特定的方式组织。最后,我们还会看一看为何有组织的结构有利于应用创建。

你需要什么文件

初为程序员的时候也犯过很常见的错误,比如直接打开最喜欢的IDE,直接起草编程。后来笔者发现应该先计划好再编码,尤其是接到大的项目时。所以文章首先会指出在制定计划前程序员需要哪些文件,这些文件要完成哪些任务,这些文件具备哪些信息,最重要的是你打算创建的文件将如何与实现协作从而形成一个完整的应用。

先把目录结构放一边,只考虑你需要的文件。我们的示例是创建一个基于PHP的应用。尝试编写和组织所需文件,而且在做这些事情的时候还要思考实现各个文件的协调。以下是你需要搞清楚的几个问题:

1.需要什么类?

2.需要其他类型的PHP脚本吗?

3.如何处理制模系统?

4.Web应用需要具备哪些内容/基本页面类型?

5.你会使用很多样式表,JavaScriptAjax吗?如果是这样,需要哪些文件呢?

6.管理文件中需要哪些东西?

当列出所需文件后,就可以把这些文件放入文字编辑文档中了。笔者使用了子列表以及一个选项卡式的结构供笔者进行目录结构的思考。

举例

假设我们正为推荐页面创建简单的成员系统。成员可以注册创建自己的资料,上传图片,并发送相关人员的资料链接来检查其工作。

需要安装什么类型的文件呢?

Index.php// 网站首先打开的主页

Content.php// 所有静态内容页面的模板

memberList.php// 成员列表模板

profile.php// 每个成员的资料要遵循的模板

profileEdit.php// 规定哪些资料可被修改的模板

style.css// 可以控制样式

图像:

1.// 所有用于设计的图片

2.profilePics/ // 放置所有成员资料图片的文件夹

3.uploads/ // 放置所有成员上传文件的文件夹

JavaScripts:

// 在我们所需的基础上任何JS文件都可以到此处。

类:

1.Member.php// 展示成员的类

2.MemberFunctions.php// 控制所有函数的类

3.Content.php// 控制所有内容函数的类

先列出这样一个清单,比完成后重新安排整个Web应用要轻松得多。这还只是个开始。

精简目录结构

从上面选取所需的文件,然后开始创建目录结构。还要精简目录结构,双击确保:

1.可根据一定的逻辑轻松查找文件。

2.文件的组织方式有助于代码的重复有效使用。

3.文件可以进行相互参考。

在这一部分,我们要看看一些程序员用于目录结构的基本方法以及特定情况下的最佳实例。

如果独立于编码框架,几乎所有Web应用都有下列文件夹。如果使用一个框架,这些文件夹类型很有可能已经呈现出来或是已有解决方案。

Images/ ——是一个图片文件夹,它不仅装有所有Web应用设计所需的图片,还包括其他要播放的图片,如资料图片上传,成员上传,管理员图片等。这是组织图片最简单的形式,虽然一些目录结构可能需要更多思考。你的制模系统看上去是怎样的呢?可能你希望每个模板有一个images/文件夹,以及所有成员上传的单独文件夹。或许你只有一个模板,而且可以使用相同的图片文件夹,以及利用子文件夹。非常有必要找到一个好的图像目录结构,不论其安装方式,而应让其简化适合特定应用。

Css/ ——你可以称这个文件夹为“styles”,“css”,“样式表”或其他。重要的是它是用来存放所有css文件的。笔者习惯把主要的样式表放到根目录中,由此便习惯于创建WordPress主题。然后将其他样式表放到CSS文件夹中。

Classes/ ——如果你正创建一个web应用,它可能从某种程度而言是对象指向型。对象指向型应用对有对象显示网站的特性,如Member类。事实上,他们只是用相同函数组合在一起的文件。笔者有时也创建仅有一个类的应用,而其他应用则有若干类。把它放到类文件夹中有助于实现组织化管理,特别是当你需要从应用中添加或删除类的时候。

Includes/ ——许多开发员可能更愿意将这个文件夹称作”inc_””inc”,当然这随便你自己。关键在于这个文件夹是用来存放任何需要包含到任意类型文件中的文件。适用于创建数据库连接的文件或是定义网站常数的文件,如数据库凭证,库URL等。许多程序员也喜欢把配置文件放进来。

这些是基本的目录结构,如果不是从框架开始创建应用,任何框架都会有特定的方案来规定文件应放到哪个目录下。程序员组织代码的方式因人而异,有些会选择用特定的规则区分markup和代码,而有些人可能将应用代码混合在一起。

下面就目录结构的其他考虑看看还有什么可用于Web应用组织的:

Views/ ——这个views文件夹是模板保存的地方。如果你有一个制模系统可允许Web应用使用若干主题,这个文件夹就很适合。在其子文件夹中,笔者也保存了其他文件,如header.phpsidebar.phpfooter.php等。也有程序员喜欢把标题,脚码和静态内容放到一个文件中,不过如果有内容区域占位符,情况就会发生改变。使用怎样的制模系统取决于你,当然要考虑应用的大小。

Model-View-Controller ——这是一个用于Web应用创建的预定义结构,也是很多编码框架常使用的结构。即便你不打算是哟过框架,也可以按照这个结构来组织代码,然后将逻辑与设计分离。使用MVC最好的一点是它流行度在上升,越来越多的程序员都开始遵循这一结构,因此它对于相同项目的程序员而言具有持续性。

子目录——如果子目录创建得过多,会使事情变复杂。不过,如果文件需要进一步结构化还是有这个必要的。组织网站文件的时候,可按需使用子目录,但要确保用得合乎逻辑。Web应用越大,需要子目录的可能性越大。

Admin/——任何类型的Web应用都可能涉及admin领域,而且把所有与管理相关的东西都放在单独文件夹中是一个聪明的选择。这样管理员可以直接把浏览器导向这个文件夹进行访问,这样更易于在管理员文件夹的基础上创建隐私限制。如果管理员区域混合了所有其他文件,那管理员就容易忘记要确保特定页面,文件夹或特定区域的安全。而如果保护单独的管理员文件夹,那其中所有子目录和文件都可以得到保护。

在考虑Web应用需要的基础上,可以为用户创建更具逻辑性的结构。在任意Web应用的根目录中,通常会有一个.htaccess文件可以重写URL。你可以使用htaccess文件做两件很重要的事情:隐藏文件扩展以及重构URL目录。这样有助于SEO的工作,也有利于用户链接。

例如,我们的文字目录结构可能链接到下面的成员资料页面:

http://yourwebsite.com/app/views/profile.php?memberName=JohnnySmith

为了简化链接,我们可以在.htaccess文件中重写链接:

http://yourwebsite.com/profile/JohnnySmith

或者

http://yourwebsite.com/JohnnySmith

特别功能

在编码前,笔者会浏览一遍目录结构,再开始文件组织。笔者会定义变量,函数以及每个类中的函数要做什么,而不是直接写出代码。笔者会查看每个模板,定义页面上要显示的东西,以及信息检索的方式。

下面是一个有关特别功能的示例。可能有你知道的功能,你得记住必须包含一个特定的文件夹。

通常我们会在结构中发现逻辑错误或是找到更易于代码重复使用的方法。

浏览每个文件,输出逻辑。如果逻辑都成立且你仍然拥有所有Web应用的功能所覆盖的库,你的目录结构就没什么问题。

public class Member{

// Variables for member info

// Constructor: include database connection

// Deconstuctor

// function setInfo()

// function getInfo()

// function login()

// function register()

}

public class MemberFunctions{

// Variables

// Constructor: include database connection

// Deconstuctor

// function uploadProfilePic()

// function uploadImage()

// function editProfile()

// function editAccountInfo()

}

结论

笔者不喜欢编码架构的一个方面是其结构可能不是最适合应用的。特别是对于那些没有大量文件的小应用而言。但同时,编码架构的严谨性有利于我们的工作。最好还是在编码前先做个计划来确定编码架构是否有利。

先不论架构,规划一个Web应用的结构其实本身会提高Web应用的效用。良好的代码组织方式让应用运行更快更易于编辑和操作。

本文关键字: Web设计 Web开发 文件 目录
相关文章