您是否应该将js,html和CSS分开?


10

我一直都在听/读到,保持jshtmlcss分开更干净。据说它使维护,调试更加容易。据说它更有效,因为它允许缓存/最小化CSSJS文件。

就我而言,使用网络框架(Django,Rails等),JavaScript模板库……我倾向于将很多HTML页面拆分为多个可重用模板-如果需要,可以使用某种小部件。例如,我可以有一个新闻提要窗口小部件,一个选择多个窗口小部件等……每个窗口小部件在不同页面上的布局都一致,并且每个页面均受其JavaScript的控制。

对于这个组织-在我看来它很干净,可以最大程度地提高可重用性-我很难理解为什么将所有jscss放在单独的文件中会更简单。我认为例如这样会更简单:

选择多个小部件文件中

  • html
  • 基本的CSS布局
  • 用一些JS控制直接交互和UX增强。

我认为这种方式更可重用,更易于维护,因为您不必滚动浏览胖的js文件,然后切换到并滚动浏览胖的css文件,再次切换到html文件...来回。

因此,如果您坚持通常建议的分离方式,那么我很想知道你们如何组织代码。

  • 是否真的有这样做的充分理由?
  • 是不是网络上的指南通常假定您不会使用任何精美的工具(在这种情况下,我希望获得更多有关最佳实践的最新在线阅读资料)?
  • 这只是偏好问题吗?

2
您提到的原理称为表示和内容分离。
罗伯特·哈维

8
请记住,如果不将文件分开,那么用户将在每次页面加载时下载嵌入式HTML和CSS,而不是一次下载并缓存。
妮可

@RobertHarvey:好的参考书...但是那里列出的分离内容/表示的唯一原因是提高了机器的可读性。但是,我认为将小部件与JS添加到页面无关紧要。无论如何,基本的html都不包含它们!
sebpiq 2011年

1
@Renesis:这是一个很大的缺点,是的。但是例如使用Django,从多个模板中收集js和css并将它们合并为一个文件是相当容易的。
sebpiq 2011年

2
就是说,您可以为普通网页,移动网页和可打印页面提供服务,而无需通过重新编写演示文稿(即CSS)而从头开始手动编写每个页面。
罗伯特·哈维

Answers:


5

我保持这种结构

对于每个页面或控件,我为其指定一个html页面(或aspx或php等)的文件夹。该文件夹中还有js,xml,图像和css文件的文件夹。这些是针对页面/控件的,不是共享资源。

在网站根目录中,还有js,xml,图像和css文件夹,每个文件夹都包含网站范围的资源。

站点范围的js和css文件在服务器端汇总,并作为单个js文件返回。由于通常每页只有一页,因此仅保留页面特定的那些。

这组织了我关于资源范围的资源。虽然我在根js文件夹中可能有十几个js文件,但通过组合和缩小它们在服务器端(并缓存结果),它们将作为一个js资源返回。

当我处于页面状态时,我也没有加载特定于pagex的资源。唯一的“浪费”可能在站点范围的资源文件中,但是由于已被缓存,并且许多资源将在多个地方使用,因此效率更高。


1
听起来不错 !我没想到只是将文件分组在单独的文件夹中,然后收集它们以供使用!它解决了所有问题-缓存,SoC等-并允许封装。太好了!
sebpiq 2011年

2

通常,惯例是为JS / CSS / HTML创建单独的文件,以保持内容,表示和行为的分离。但是,如果速度成为问题,那么一切都会发生。


单独的文件实际上提高了速度,而不是降低了速度:\
Raynos 2011年

HTML文件中较少的CSS和JS数量是一个页面请求,而不是三个页面请求,这对于更快地处理大量页面可能更好。或者至少它们组合根据需要- code.google.com/speed/page-speed/docs/rtt.html
Bratch

1

在选择多个小部件文件中

  • html
  • 基本的CSS布局
  • 用一些JS控制直接交互和UX增强。

我有一个组织工具(trinity)可以帮助您做到这一点。

除了小部件文件被分成3个小文件,HTML,CSS和JS。这意味着您拥有单独的文件,但它们仍处于链接状态。

这样可以避免文件过多的问题,但仍然可以为您提供单独的文件。

因此,简单地将关注点分隔开并不意味着您应该拥有一个大的 HTML / CSS / JS文件。<HTML, CSS, JS>对于所有可重复使用的封装代码,您应该有多个三元组

现在,只要将所有这些文件清楚地分开,将它们都放在一个文件中就没错。

所以一个看起来像

<div id="wrapper">
  <style scoped> CSS code </style>
  <script> JS code </script>
  HTML code
</div>

很好,很棒。除了将所有内容都保存在一个文件中之外,维护人员开始混合和匹配CSS / JS / HTML太容易了。

随着时间的流逝,它很容易变成意大利面。

人们推广单独文件的主要原因是两方面的

  • 单独下载。一旦将任何css / js代码复制并粘贴到多个“窗口小部件”中,就需要将其分解为自己的文件。
  • 通过不依赖作者将其css / js / html很好地分隔在一个文件中来积极地预防意大利面条式代码

是的...和乍得一样的建议!的确,我立即尝试了一下,并被卖了:)这样的清洁工非常多……您的工具适用于节点吗?我应该为Django找到类似的东西……
sebpiq 2011年

@sebpiq是用于节点的,但是我正在将其移植到客户端。它也是alpha版本,我正在努力使其成为一个完整的HTML / CSS / JS组织平台,包括重复使用客户端/服务器代码。我个人怀疑你会发现在其他平台上像这样的东西,你可以将它移植虽然O /
Raynos

1

分隔html,css和js是一个好习惯,因为它可以简化您的网站管理。

刚开始时,您可能只有一个main.index.html和一个styles.css文件,但是随着网站的增长,它最终会具有多个特定于单个组件或组件的脚本和样式表。端点。

使用分隔:

  • 可以在其他页面上重用单独的JavaScript
  • 单独的CSS可以使站点易于重新使用,并具有新的外观
  • 单独的HTML可以专注于内容而不是外观。

还应提及,如果在您网站上的多个页面上使用CSS / JS,则可以将其缓存


...并且有许多“构建工具”可以从(未部署的)单个文件中收集JS和CSS资产,以创建已部署的实际文件...收集资产,删除(或检测)重复项,最小化并不久。
Mike Robinson
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.