18

重要提示:接受的答案在赏金后被接受,不一定是因为我认为这是最好的答案。


我发现自己在开始新项目时一遍又一遍地做事。我创建了一个包含子文件夹的文件夹,然后复制一些标准项目,如 css 重置文件、famfamfam 图标、jquery 等。

这让我想到了理想的起始模板是什么。我问的原因是我再次经历并且想知道我应该在我的模板中包含什么,这样我就不必在将来返回并在我开始的每个新网站上重新做一遍.

我目前拥有的如下:

项目模板文件夹
  • index.html -- XHTML 1.0 严格的文档类型。元标签。引用的 CSS/js 文件。
  • css/
    • default.css——空的。为用户样式保留。
    • 960 / -- 960 用于 CSS 布局的网格系统。
      • 960.css
      • 重置.css
      • 文本.css
  • js/
    • default.js——空的。为用户脚本保留。
    • jQuery / -- 轻量级 Javascript 框架
      • jquery-1.3.1.min.js
  • 图片/
    • famfamfam / -- 优秀的 png 图标集合
      • 图标/
        • 接受.png
        • 添加.png
        • ...ETC
4

11 回答 11

8

我有类似的结构和命名约定,但对于 CSS,我使用BluePrint,我发现它更具可扩展性。也更喜欢最近从原型切换的jQuery。此外,我还有一个 common.js 文件,它是一个带有 jQ​​uery 自定义函数的扩展。

包含架构定义的 .sql 文件的 /db/ 文件夹。用于常见中间层库的 /lib/ 文件夹。

我还将有一个 /src/ 文件夹,其中有时会包含原始文件,例如 Photoshop 模板、自述文件、待办事项列表等。

于 2009-02-04T09:40:28.613 回答
3

如果您有很多具有很多共同静态内容的项目(例如 jquery、css 框架等),请让自己成为服务所有这些的媒体服务器。然后,您无需从“模板”创建一堆文件夹结构,而是在项目的 html 中包含正确的文件。如果你真的想要一个模板,你的模板变成一个 html 文件而不是一个目录结构。

这也为您提供了一种为您的站点更新静态媒体的简单方法(例如,迁移到 960 的下一个版本)。你只需要在一个地方做。当然,您仍然必须确保您的更新不会破坏现有网站!:)

如果某些项目有重叠的需求但与其他项目不同,您可以使该方案更复杂一些。只需在服务器的顶层为每个设置创建一个目录,并且每个设置对应一个 html“模板”。主要思想是只需要处理所有常见内容的一个副本。

您当然可以在小型 VM(例如linode)上以 20 美元/月的价格执行此操作,或者在您当前的 Web 服务器上使用虚拟 Web 服务器。您实际上并不需要服务器,就此而言,您只需要一个文件夹。但是,我认为您可以通过拥有专用媒体服务器获得一些显着的性能提升。为此,我建议使用经过微调的 apache 或nginx 。

至于特定于站点的静态文件,它们位于媒体服务器上也是一个好主意,并且目录结构可能正是您所拥有的,但它们将/应该是空目录。

于 2009-02-11T18:11:06.463 回答
3

我的 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
于 2009-02-12T11:21:14.987 回答
2

我使用类似的布局,但有一个主要例外:所有这些目录都位于顶级 media/ 目录下。这有几个原因:

  1. 这个目录被同步到另外两个处理所有静态媒体请求的服务器。
  2. 拥有多个主机允许某些浏览器对支持文件发出更多并行请求。
  3. media/ 目录有自己的 .htaccess 文件,该文件从路径中剥离了一个伪目录,该路径是图像(或其他任何内容)的最后修改日期时间。

一个自定义模板标签(我在 2 个 Django 项目中使用过这个,但你可以在 PHP 等中做到这一点)生成 url,其中 a) 半随机选择一个媒体服务器,b) 添加基于时间的伪目录到路径,并且 c) 给对象一个现在 + 10 年的过期时间。

于 2009-02-12T23:29:24.410 回答
1

我觉得结构很好。添加一些其他文件夹取决于您正在完成的工作类型。

对于自由职业者等,添加 PSD 文件夹、客户评论将是一个不错的补充。

于 2009-02-04T18:46:50.913 回答
1

一个非常 MS 倾斜的观点,但我现在的 SOP 大致如下:

  • 文件/
    • 架构/(你可能称之为代码文档)
    • 通讯/(重要的客户文档)
    • 规格/
    • 白皮书/
  • 图形/
    • *.psd
  • 来源/

    • com.mycompany.projectname.solutionA/
    • com.mycompany.projectname.solutionB/
    • com.mycompany.projectname.solutionC/
    • com.mycompany.projectname.solutionX/ (这里是商业意义上的项目)

      • 商业逻辑/
        • *.cs (或其他)
      • (进一步的项目——在视觉工作室的意义上)
      • 地点/

        • handlers/ (这些天我很少使用实际的.html)
        • 模块/
        • 资源/

          • img/ (pngs jpegs, gifs 随便)

            • 皮肤/
              • 图标/
              • 背景/
          • js/ (发布时压缩)

            • 库/ (标准代码)
            • common/ (应用程序特定代码)
            • *.js (应用程序特定代码,希望为零)
          • css/
            • skinX/ (即使只有“默认”)
              • 扩展名.css
            • base.css
          • transforms/ (总是通过配置或构建过程对公众隐藏)
            • *.xslt
      • 单元测试/
        • 模拟/
        • testmain.cs(或其他)
  • 第三方/
    • 依赖关系
于 2009-02-11T11:42:04.183 回答
1

我绝对喜欢拥有这样一个骨架模板文件夹的想法,但如果您使用几种不同的技术,一定要密切注意结构。与 PHP 相比,我的 VB.net 文件夹结构具有完全不同的设置。这听起来像是常识,但我看到人们以同样的方式处理这两种方法。

于 2009-02-12T01:56:41.070 回答
1

在工作中,我们使用 Code Igniter 作为我们 Web 应用程序的 PHP 框架,并创建了一个新的项目模板,它正是这样做的:简单的目录结构、Blueprint CSS、jQuery 和 Code Igniter 应用程序文件夹,其中包含几个常用库(身份验证,常用数据库的一些特殊模型...)。

这里的主要座右铭是:删除组件总是比添加组件更容易。所以填写你的模板。

(当我在业余时间开始一个新项目时,我非常想念那个模板......)

于 2009-02-12T12:34:40.693 回答
1

我认为您在这里拥有的东西很棒......您列出的内容当然都是关于您的应用程序的公共前端。我对此的唯一补充是尽可能将所有后端代码和源代码保留在公共网络空间之外,因为公共空间中的东西越少,应用程序就越安全。

所以我建议你把你的整棵树放进去:

httpdocs/(all you had in your project template folder)

然后将所有后端代码(例如 php 库、sql 文件等)放在相邻的子目录中:

httpdocs/(all you had in your project template folder)
phplibs/
sql/

等等

而且,即使对于您的前端内容,请确保您不要复制任何可能与您的前端库一起提供的示例文件,因为示例本身可能存在安全问题,允许人们使用 XSS 或以其他方式危害您的网站。

于 2009-02-12T14:45:37.023 回答
1

我已经使用以下设置一段时间了,效果很好:

  • /site:这是我实际工作网站所在的位置。创建模板后,我将在此目录中安装我的 CMS 或平台。
    • .htaccess (我通常会发现自己启用的基本调整)
    • robots.txt (所以我以后不要忘记禁止 /admin 之类的项目)
  • /source: 包含任何comps、notes、documents、specifications等。

  • /模板:从这里开始!创建最终需要移植到 CMS 或 /site 框架中的所有静态模板。

    • /行为
      • global.js (特定于站点的代码;可以根据需要分解为多个文件)
    • /media:图像、可下载文件等。根据需要进行组织

    • /style:我更喜欢模块化 CSS 开发,所以我通常会为网站的每个独特部分制作许多样式表。Blender可以很好地清理这个问题 - 我强烈推荐这个工具!

      • behavior.css (任何需要支持 JS 的浏览器的样式)
      • print.css (最终会被混合,所以使用@media print)
      • reset.css 埃里克迈耶的
      • screen.css (用于@media screen,手持)
    • /vendor:所有第 3 方代码(jQuery、shadowbox 等)

    • Blendfile.yaml (用于 Blender;见上文)

    • template.html (基本起始模板;可以为每个唯一模板复制和重命名)
于 2009-02-12T19:39:14.917 回答
1

我喜欢将 OP 作为默认起点。您的标准模板应该在简单性上犯错,只有在需要时才能增加复杂性。

一项补充:

/机器人.txt

于 2009-02-13T04:59:25.757 回答