资产的命名约定(图像,css,js)?

Max*_*Max 76 naming-conventions

我仍在努力为我的网络项目中使用的图像,js和css文件等资产找到一个好的命名约定.

所以,我目前的情况是:

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

JS: script-{name}.js
例子:script-main.js,script-nav.js

图像: {imageType}-{name}.{imageExtension}
{imageType}是这些中的任何一个

  • 图标(例如帮助内容的问号图标)
  • img(例如通过<img />元素插入的标题图像)
  • 按钮(例如图形提交按钮)
  • bg(图像用作css中的背景图像)
  • 精灵(图像在css中用作背景图像,包​​含多个"版本")

例如,名称是:icon-help.gif,img-logo.gif,sprite-main_headlines.jpg,bg-gradient.gif等.

那么,您的想法是什么您的命名惯例是什么?

rob*_*muh 45

我注意到有很多的前端开发者远离移动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,您可能无法实现您应该考虑的大多数以移动为中心的性能目标.


小智 25

我将CSS文件放在一个文件夹css,Javascript in js,images in images... 中,根据需要添加子文件夹.不需要在单个文件级别上使用任何命名约定.

  • 我不同意.考虑到许多已知项目具有命名约定的事实.看到j​​Query,它使用`<product-name>.<plugin> - <ver.sion>.<filetype> .js`,例如`jquery-1.4.2.min.js`或`jquery.plugin-0.1 .js`. (15认同)

Chr*_*s S 13

/Assets/
  /Css
  /Images
  /Javascript (or Script)
    /Minified
    /Source

是我见过的最好的结构,也是我喜欢的结构.使用文件夹,您不需要在CSS等前面加上描述性名称.


Bri*_*ton 10

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

例如:

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

footer.bkg-image.png
footer.copyright-gradient.png
Run Code Online (Sandbox Code Playgroud)

我们还讨论过添加元素类型,但我不确定它有多大帮助,可能会误导未来所需的更改:

[component].[element]-[function-description].[filetype]
footer.div-bkg-image.png
footer.p-copyright-gradient.png
Run Code Online (Sandbox Code Playgroud)


smd*_*ger 6

首先,我分成文件夹:css,js,img.

在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个,并且很容易混合在一起并且容易混淆.

  • `img/con`?我猜你没有在基于 Windows 的系统上存储任何这些文件?结果 _con_ 是 [保留的 MS-DOS 设备驱动程序名称,不能用作文件名](http://support.microsoft.com/kb/74496/en-us)。 (2认同)

Jam*_*mes 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库文件,再到数据库表和列名.


小智 6

你可以这样命名:

/ assets/css/ - 对于CSS文件

/ assets/font/ - 对于字体文件.(大多数情况下你可以去google字体搜索可用的字体.)

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

/ assets/scripts /或/ assets/js/ - 对于JavaScript文件.

/ assets/media/ - 用于视频和misc.文件.

您还可以将"assets"替换为"resource"或"files"文件夹名称,并保留其子文件夹的名称.拥有这样的订单文件夹结构并不是非常重要,唯一重要的是你必须按照它的格式排列文件.比如为CSS文件创建文件夹"/ css /"或为图像文件创建"/ images /".


小智 5

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

我目前的建议是使用以下内容:

  • 资产(或资产-web 或资产-www);这个用于客户端(浏览器)使用的静态内容
    • 数据; 一些 xml 文件和其他东西
    • 字体
    • 图片
    • 媒体
    • 样式
    • 脚本
    • lib(或第 3 方);这个是用于你不制作或修改的代码,你得到的库
    • lib-modded(或 3rd-party-modified);这个适用于您不希望修改但必须修改的代码,例如在库提供者发布它的同时应用变通方法/修复
  • inc(或资产服务器或资产本地);这是用于服务器端的内容,而不是由客户端使用,例如 PHP 或服务器脚本等语言中的库,例如 bash 文件
    • 字体
    • 库修改

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

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

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

    • jquery.com
      • jQuery
        • vX.YZ
    • github
      • [小路]
        • [库/项目名称]
          • vX.YZ(版本)

这样您就可以用新的库替换库,而不会破坏代码,还允许未来的代码维护者(包括您自己)找到库并更新它或获得支持。

另外,可以根据使用情况随意组织里面的内容,因此图像/徽标和图像/图标在某些项目中是预期的目录。

作为旁注,资产名称是有意义的,不仅意味着我们在那里有资源,而且意味着那里的资源必须对项目有价值,而不是无意义的。