为什么专业制作的网站有奇怪的#id和.class名称?

Nic*_*nto 30 css

我注意到facebook和gmail有很奇怪的#id和.class名称.

他们是故意混淆他们吗?或者他们的IDE做到了吗?拥有这样难以理解的开发名称似乎不合逻辑

例如 - 这是gmail的刷新按钮.将id/class作为"刷新"是合理的

<div class="G-Ni J-J5-Ji" style="">
<div class="T-I J-J5-Ji nu T-I-ax7 L3" act="20" role="button" tabindex="0" style="-webkit-user-select: none;" data-tooltip="Refresh" aria-label="Refresh">
<div class="asa">
<span class="J-J5-Ji ask">&nbsp;</span><div class="asf T-I-J3 J-J5-Ji"></div></div></div></div>
Run Code Online (Sandbox Code Playgroud)

和facebook的状态更新的帖子按钮

<button class="_42ft _42fu _11b selected _42g-" type="submit">Post</button>
Run Code Online (Sandbox Code Playgroud)

在性能上 - 确实有较短的名称真的会影响加载时间吗?它似乎是(对于像Facebook或gmail这样的大页面)多了100kb,今天的宽带线在所需的时间内可以忽略不计

例外 - twitter和pinterest有可读的名字

Ast*_*tim 17

更新:CSS模块

这种做法现在被称为"CSS模块",并且随着Webpack的普及而越来越广泛采用.这个概念是将CSS选择器转换(散列)为唯一的类名,以确保模块之间不存在样式冲突.

Webpack 的css-loader模块有一个modules启用此功能的选项.它通常与React一起使用,您可以通过导入CSS文件的JS对象在标记中指定类名,例如:

import styles from './style.css
Run Code Online (Sandbox Code Playgroud)

如果该CSS文件具有选择器,例如.sidebar,它通过标记应用

className={styles.sidebar} // JSX
Run Code Online (Sandbox Code Playgroud)

Webpack将散列类名和matcing选择器以确保唯一性.

原始答案↓

这将是缩小和压缩的产物.毫无疑问,它将使用人类可读的id和类名称编写,但是像Zeta所评论的那样,这些将被缩写替换以节省字节.这些事情对普通网站来说并不重要,但是当你每分钟获得数十亿的综合浏览量时,这一切都很重要.

看一下jQuery 的开发版本和生产版本之间的区别.这是缩小和压缩结果的一个例子.

  • 看似合乎逻辑,但我不买.看看alexa顶级网站,youtube具有非常易读的id和类名,它们并不简短.雅虎似乎有这样的组合..有这样的东西``div class ="searchwrapper tabpanel选择"id ="p_13838465-searchwrapper"role ="tabpanel"aria-labelledby ="yui_3_4_0_1_1360241032142_164">`.维基百科也有可读的名字.另外,twitter和pinterest(非常受欢迎)也有可读的名字,amazon.com.所以这些热门网站都不关心这些字节,但facebook呢?我对此表示怀疑 (4认同)
  • 难道是为了防止数据被抓取吗?如果 id/class 名称是乱码并且是动态的,那么抓取数据将非常困难。人们必须依赖元素排序/嵌套。 (2认同)