资产的命名约定(图像,CSS,JS)?


89

我仍在努力为Web项目中使用的图像,js和CSS文件之类的资产找到一个良好的命名约定。

因此,我当前将是:

CSS: style-{name}.css
例子:style-main.cssstyle-no_flash.cssstyle-print.css等。

JS: script-{name}.js
示例:script-main.jsscript-nav.js等等。

图片:其中 {imageType}-{name}.{imageExtension}
{imageType}的任何一个

  • 图标(例如帮助内容的问号图标)
  • img(例如,通过<img />元素插入的标题图片)
  • 按钮(例如图形提交按钮)
  • bg(图像在CSS中用作背景图像)
  • Sprite(图像在CSS中用作背景图像,并且包含多个“版本”)

例如,名称是:icon-help.gifimg-logo.gifsprite-main_headlines.jpgbg-gradient.gif等。

那么,您怎么看?您的命名约定是什么?


对于Javascript File Naming Conventions只,读(多)更多stackoverflow.com/questions/7273316/...
阿德里安要

Answers:


28

我将CSS文件放在一个文件夹中css,在中的Javascript中在js中的图像中images,...在您认为合适的情况下添加子文件夹。无需在单个文件级别上使用任何命名约定。


16
我不同意。考虑许多已知项目都有命名约定的事实。参见jQuery,它使用<product-name>.<plugin>-<ver.sion>.<filetype>.js,例如jquery-1.4.2.min.jsjquery.plugin-0.1.js
Adrien Be

56

我注意到有很多的前端开发者从移动远离cssjs支持styles,并scripts因为通常存在有其他的东西,比如.less.styl.sass以及为一些.coffee。事实是,即使每个人都在选择文件夹组织时使用特定的技术选择也是一个坏主意。我将继续使用从这些受人尊敬的开发人员那里看到的标准:

  • src/html
  • src/images
  • src/styles
  • src/styles/fonts
  • src/scripts

它们的目标构建等效项,有时dest根据它们的构建前缀:

  • ./
  • images
  • styles
  • styles/fonts
  • scripts

这样,那些希望将所有文件放在一起(而不是分解src目录)的文件就可以保持一致,并使确实分解的文件保持关联。

我实际上还继续添加

  • scripts/before
  • scripts/after

其中获得smooshed成两个main-before.min.jsmain-after.min.js脚本,一个用于头(带的基本要素normalize,并modernizr有早期运行,例如),并after在体内自认为JavaScript可以等到最后一件事。这些内容不适合阅读,就像Google的主页一样。

如果存在脚本和样式表,那么有必要缩小它们并使其保持链接状态,这是因为构建规则中考虑了特定的缓存管理方法。

如今,如果您没有使用诸如gulpgrunt之类的构建过程,则可能未达到您可能应该考虑的大多数以移动为中心的性能目标。


字体文件(.ttf,.eot等)是否位于样式/字体中?
Andrew Savetchuk '16

这是个非常合理的主意。谢谢!
zhibirc

我认为字体文件应该放在样式文件夹外面,它们已经被替换,但是我认为外面看起来更加清晰。
Pablo-No

13
/资产/
  / CSS
  /图片
  / Javascript(或脚本)
    /缩小
    /资源

是我见过的最好的结构,也是我更喜欢的结构。使用文件夹,您实际上不需要为CSS等添加描述性名称。


我喜欢这样,但我认为更常见的根文件夹是“ public”或“ content”。
Brian Boatright 2010年

我第一次看到“资产”的这种文件结构是当我深入研究Angular单页应用程序时。在那里,很多Angular单页应用程序教程中都使用了它-我喜欢它。
凯尔·瓦塞拉

11

对于css可能定义许多背景图像的大型站点,这些资产的文件命名约定非常方便,以便以后进行更改。

例如:

[component].[function-description].[filetype]

footer.bkg-image.png
footer.copyright-gradient.png

我们还讨论了元素类型的添加,但不确定是否有帮助,并且可能会误导将来所需的更改:

[component].[element]-[function-description].[filetype]
footer.div-bkg-image.png
footer.p-copyright-gradient.png

8

您可以这样命名:

/ assets / css /-适用于CSS文件

/ assets / font /-用于字体文件。(通常,您只能转到Google字体来搜索可用的字体。)

/ assets / images /-用于图像文件。

/ assets / scripts /或/ assets / js /-用于JavaScript文件。

/ assets / media /-用于视频和其他。文件。

您也可以将“资产”替换为“资源”或“文件”文件夹名称,并保留其子文件夹的名称。那么具有这样的订单文件夹结构不是很重要,唯一重要的是您只需要按其格式排列文件即可。例如为CSS文件创建文件夹“ / css /”或为图像文件创建文件夹“ / images /”。


6

首先,我分成文件夹:cssjsimg

在css和js中,我为文件加上项目名称前缀,因为您的网站可能包含js和css文件(它们是组件),因此可以清楚地知道文件是针对您的网站的,还是与插件有关的。

css/mysite.main.css css/mysite.main.js

其他文件可能像

js/jquery-1.6.1.js js/jquery.validate.js

最后,图像按其用途进行划分。

  • img/btn/submit.png 一个按钮
  • img/lgo/mysite-logo.png 一个徽标
  • img/bkg/header.gif 背景
  • img/dcl/top-left-widget.jpg 贴花元素
  • img/con/portait-of-something.jpg 内容图片

保持图像井井有条非常重要,因为图像可能会超过100张,并且很容易将它们完全混合在一起并造成混淆。


1
img/con?我猜您没有在基于Windows的系统上存储任何这些文件吗?原来,con保留的MS-DOS设备驱动程序名称,不能用作文件名
ᴍᴀᴛᴛʙᴀᴋᴇʀ

我喜欢将img作为文件夹名称,因为它使我想起标记名称也是img,而不是image
user949300 '16

6

我倾向于避免任何通用的东西,例如smdrager建议的东西。“ mysite.main.css”根本没有任何意义。

什么是“我的网站”?我正在研究这个吗?如果是这样的话,那么确实很明显,但是我已经想过它可能是什么,并且如果这很明显!

什么是“主要”?在编码人员不知道该css文件中内容的范围之外,“主”一词没有定义。

在某些情况下虽然可以,但也请避免使用“ top”或“ left”之类的名称:“ top-nav.css”或“ top-main-logo.png”。
您可能最终想在其他地方使用相同的东西,并且将图像放在页脚中或称为“ top-banner.png”的主页内容内非常令人困惑!

我看不到具有大量样式表以允许使用适当的命名约定来描绘给定文件中的CSS的任何问题。
多少完全取决于站点的大小及其功能,以及站点上有多少不同的块。

我认为您根本不需要在css文件名中声明“ CSS”或“ STYLE”,因为它位于“ css”或“ styles”文件夹中,并且具有扩展名,.css主要是因为这些文件只曾被称为在该<head>地区,我非常清楚地知道它们是什么。

也就是说,我使用库,JS和配置(等)文件来执行此操作。例如libSomeLibrary.php或JSSomeScript.php。由于PHP和JS文件已包含在其他文件中或在其他文件的各个区域中使用,因此在文件名称中包含文件主要用途的信息非常有用。

例如:查看文件名require('libContactFormValidation.php');很有用。我知道这是一个库文件(lib),从名称上可以知道它的作用。

对于图像文件夹,我通常有images/content-images/images/style-images/。我认为不需要进一步分离,但这又取决于项目。

然后,每个图像将根据其名称进行相应命名,再次,我认为没有必要将文件定义为文件名中的图像。尺寸可能很有用,尤其是当图像尺寸不同时。

site-logo-150x150.png
site-logo-35x35.png
shop-checkout-button-40x40.png
shop-remove-item-20x20.png


要遵循的一个好规则是:如果有新开发人员来访问这些文件,他们会坐着挠头几个小时吗?或者他们可能会了解所做的事情而只需要一点时间进行研究(这是不可避免的)?

然而,像这样的事情,要遵循的最重要的规则之一就是恒心
确保在所有命名约定中都遵循相同的逻辑和模式!
从简单的CSS文件名到PHP库文件再到数据库表和列名。


要为图像大小,我之争去除歧义site-logo-150w-150h.pngsite-logo-w150x150h.pngsite-logo-150w150h.png想法? -
Daniel Sokolowski

5

这是一个老问题,但仍然有效。

我当前的建议是在以下几行中添加一些内容:

  • 资产(或资产-网站或资产-www);这是针对客户端(浏览器)使用的静态内容的
    • 数据; 一些xml文件和其他内容
    • 字型
    • 图片
    • 媒体
    • 样式
    • 剧本
    • lib(或第三方);这是针对您不制作或修改的代码,获取时的库的
    • lib-modded(或第3方修改);此代码用于您不希望修改的代码,但必须这样做,例如在库提供程序发布它的同时应用解决方法/修复
  • 公司(或资产服务器或本地资产);这是供服务器端使用的内容,而不是由客户端使用,如PHP之类的语言库或bash文件之类的服务器脚本
    • 字型
    • LIB
    • lib-modded

我用粗体标出了平常的内容,其他都不是平常的内容。

进行主要划分的原因是,出于安全原因,将来您可以决定从CDN服务器提供Web资产或限制客户端对服务器资产的访问。

在lib目录中,例如,我用来描述库

  • LIB
    • jquery.com
      • jQuery的
        • X
    • 的github
      • [路径]
        • [图书馆/项目名称]
          • vX.YZ(版本)

因此,您可以在不破坏代码的情况下用新的库替换该库,还可以让包括您自己在内的将来的代码维护人员查找该库并对其进行更新或获得支持。

另外,请随时根据使用情况来组织内部内容,因此在某些项目中,应将图像/徽标和图像/图标视为目录。

附带说明一下,资产名称是有意义的,不仅意味着我们在那里拥有资源,而且意味着那里的资源必须对项目具有价值,而不是无谓的负担。


我非常喜欢这种方法,特别是它是可自定义的,例如,在样式内部可以放置sass和css文件夹,但是在其他一些答案中,他们将样式文件夹称为css。
Pablo-No

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.