重要提示:接受的答案在赏金后被接受,不一定是因为我认为这是最好的答案。
我发现自己在开始新项目时一遍又一遍地做事。我创建了一个包含子文件夹的文件夹,然后复制一些标准项目,如 css 重置文件、famfamfam 图标、jquery 等。
这让我想到了理想的起始模板是什么。我问的原因是我再次经历并且想知道我应该在我的模板中包含什么,这样我就不必在将来返回并在我开始的每个新网站上重新做一遍.
我目前拥有的如下:
项目模板文件夹重要提示:接受的答案在赏金后被接受,不一定是因为我认为这是最好的答案。
我发现自己在开始新项目时一遍又一遍地做事。我创建了一个包含子文件夹的文件夹,然后复制一些标准项目,如 css 重置文件、famfamfam 图标、jquery 等。
这让我想到了理想的起始模板是什么。我问的原因是我再次经历并且想知道我应该在我的模板中包含什么,这样我就不必在将来返回并在我开始的每个新网站上重新做一遍.
我目前拥有的如下:
项目模板文件夹我有类似的结构和命名约定,但对于 CSS,我使用BluePrint,我发现它更具可扩展性。也更喜欢最近从原型切换的jQuery。此外,我还有一个 common.js 文件,它是一个带有 jQuery 自定义函数的扩展。
包含架构定义的 .sql 文件的 /db/ 文件夹。用于常见中间层库的 /lib/ 文件夹。
我还将有一个 /src/ 文件夹,其中有时会包含原始文件,例如 Photoshop 模板、自述文件、待办事项列表等。
如果您有很多具有很多共同静态内容的项目(例如 jquery、css 框架等),请让自己成为服务所有这些的媒体服务器。然后,您无需从“模板”创建一堆文件夹结构,而是在项目的 html 中包含正确的文件。如果你真的想要一个模板,你的模板变成一个 html 文件而不是一个目录结构。
这也为您提供了一种为您的站点更新静态媒体的简单方法(例如,迁移到 960 的下一个版本)。你只需要在一个地方做。当然,您仍然必须确保您的更新不会破坏现有网站!:)
如果某些项目有重叠的需求但与其他项目不同,您可以使该方案更复杂一些。只需在服务器的顶层为每个设置创建一个目录,并且每个设置对应一个 html“模板”。主要思想是只需要处理所有常见内容的一个副本。
您当然可以在小型 VM(例如linode)上以 20 美元/月的价格执行此操作,或者在您当前的 Web 服务器上使用虚拟 Web 服务器。您实际上并不需要服务器,就此而言,您只需要一个文件夹。但是,我认为您可以通过拥有专用媒体服务器获得一些显着的性能提升。为此,我建议使用经过微调的 apache 或nginx 。
至于特定于站点的静态文件,它们位于媒体服务器上也是一个好主意,并且目录结构可能正是您所拥有的,但它们将/应该是空目录。
我的 Web 开发框架位于 git 存储库中。通用代码,例如通用 PHP 类在 master 分支中开发。特定网站的所有工作都在一个分支上完成,然后将有助于未来工作的更改合并回 master。
这种方法对我很有效,因为我对所有网站都有完整的版本控制,如果我在分支上工作时碰巧修复了错误或实现了新功能,我可以进行合并,然后一切都会受益。
这是我的模板的样子:
/
|-.htaccess //mod_rewrite skeleton
|-admin/ //custom admin frontend to the CMS
|-classes/ //common PHP classes
|-dwoo/ //template system
|-config/ //configuration files (database, etc)
|-controllers/ //PHP scripts that handle particular URLs
|-javascript/
|-tinyMCE/
|-jquery/
|-modules //these are modules for our custom CMS
|-news/
|-mailing_list/
|-others
|-private/ //this contains files that won't be uploaded (.fla, .psd, etc)
|-.htaccess //just in case it gets uploaded, deny all
|-templates/ //template source files for dwoo
我使用类似的布局,但有一个主要例外:所有这些目录都位于顶级 media/ 目录下。这有几个原因:
一个自定义模板标签(我在 2 个 Django 项目中使用过这个,但你可以在 PHP 等中做到这一点)生成 url,其中 a) 半随机选择一个媒体服务器,b) 添加基于时间的伪目录到路径,并且 c) 给对象一个现在 + 10 年的过期时间。
我觉得结构很好。添加一些其他文件夹取决于您正在完成的工作类型。
对于自由职业者等,添加 PSD 文件夹、客户评论将是一个不错的补充。
一个非常 MS 倾斜的观点,但我现在的 SOP 大致如下:
来源/
com.mycompany.projectname.solutionX/ (这里是商业意义上的项目)
地点/
资源/
img/ (pngs jpegs, gifs 随便)
js/ (发布时压缩)
我绝对喜欢拥有这样一个骨架模板文件夹的想法,但如果您使用几种不同的技术,一定要密切注意结构。与 PHP 相比,我的 VB.net 文件夹结构具有完全不同的设置。这听起来像是常识,但我看到人们以同样的方式处理这两种方法。
在工作中,我们使用 Code Igniter 作为我们 Web 应用程序的 PHP 框架,并创建了一个新的项目模板,它正是这样做的:简单的目录结构、Blueprint CSS、jQuery 和 Code Igniter 应用程序文件夹,其中包含几个常用库(身份验证,常用数据库的一些特殊模型...)。
这里的主要座右铭是:删除组件总是比添加组件更容易。所以填写你的模板。
(当我在业余时间开始一个新项目时,我非常想念那个模板......)
我认为您在这里拥有的东西很棒......您列出的内容当然都是关于您的应用程序的公共前端。我对此的唯一补充是尽可能将所有后端代码和源代码保留在公共网络空间之外,因为公共空间中的东西越少,应用程序就越安全。
所以我建议你把你的整棵树放进去:
httpdocs/(all you had in your project template folder)
然后将所有后端代码(例如 php 库、sql 文件等)放在相邻的子目录中:
httpdocs/(all you had in your project template folder)
phplibs/
sql/
等等
而且,即使对于您的前端内容,请确保您不要复制任何可能与您的前端库一起提供的示例文件,因为示例本身可能存在安全问题,允许人们使用 XSS 或以其他方式危害您的网站。
我已经使用以下设置一段时间了,效果很好:
/source: 包含任何comps、notes、documents、specifications等。
/模板:从这里开始!创建最终需要移植到 CMS 或 /site 框架中的所有静态模板。
/media:图像、可下载文件等。根据需要进行组织
/style:我更喜欢模块化 CSS 开发,所以我通常会为网站的每个独特部分制作许多样式表。Blender可以很好地清理这个问题 - 我强烈推荐这个工具!
/vendor:所有第 3 方代码(jQuery、shadowbox 等)
Blendfile.yaml (用于 Blender;见上文)
我喜欢将 OP 作为默认起点。您的标准模板应该在简单性上犯错,只有在需要时才能增加复杂性。
一项补充:
/机器人.txt