JQuery插件中的Separate.css?还是嵌入JS?

JQuery插件中的Separate.css?还是嵌入JS?,jquery,jquery-plugins,Jquery,Jquery Plugins,我最近开始构建自己的jQuery插件,以模块化我经常使用的一些想法。我注意到许多jQuery插件都有一个单独的js和css文件要包含,但我开始质疑这种逻辑 我的问题是,我是否应该将css嵌入我的JavaScript 我能想到的优点: 减少http请求 如果禁用js,则不会加载特定于插件的CSS 易于使用-只需粘贴一份副本,即可完成契约 缺点?: 不分离关注点 更难按照您想要的方式组织代码 对于不熟悉的人来说,编辑核心css容易混淆或困难 在发布插件更新时可能会造成困难 我自己创建了几个小插

我最近开始构建自己的jQuery插件,以模块化我经常使用的一些想法。我注意到许多jQuery插件都有一个单独的
js
css
文件要包含,但我开始质疑这种逻辑

我的问题是,我是否应该将
css
嵌入我的
JavaScript

我能想到的优点:

  • 减少http请求
  • 如果禁用js,则不会加载特定于插件的CSS
  • 易于使用-只需粘贴一份副本,即可完成契约
缺点?

  • 不分离关注点
  • 更难按照您想要的方式组织代码
  • 对于不熟悉的人来说,编辑核心css容易混淆或困难
  • 在发布插件更新时可能会造成困难

我自己创建了几个小插件(只是为了好玩),我喜欢将CSS嵌入js文件本身的想法,因为它非常详细地说明了我在插件中要做的事情。+如果css没有正确加载,对插件的恐惧现在可能会正常工作。话虽如此,我想我们真的可以从这个问题中得到很好的答案,这可能会让我改变我的编码风格。

我认为最好将基本插件CSS文件从Javascript中分离出来


主要是因为如果有人想对你的CSS进行添加和更改,他们可以在自己的单独文件中进行添加和更改,从而轻松地更改/替换你的CSS规则。(这样,如果你在插件更新中对基础CSS进行了更新,就不会与他们的CSS发生冲突)。

我肯定会从你的JS中分离出大量的CSS

让我们看看你的专业技能:

减少了http请求

如果有人使用你的插件,他们会将所有CSS文件合并到一个插件中。如果没有,他们就做错了。所以仍然需要一个主CSS文件。

如果禁用js,则不会加载特定于插件的CSS

真的吗?他们已经在保存JS文件的请求。我不在乎。

易用性-只需粘贴一份副本即可完成契约。

嗯,我想你不能从身体上不同意这一点。但这真的重要吗?如果你的插件需要图片怎么办?您也不能包含它们。*


*是的,我知道数据URI…

如果你想在JS中嵌入CSS,我发现这个库很有用:

用于jQuery:


您计划如何将其嵌入?您计划将其中任何一个发布到公共领域吗?@Prinzhorn-正在考虑将其作为一个单独的问题提问。目前,我的两个插件都很小,不必太担心它,目前只需使用
.css({'etc':'etc'})
,但我相信还有更好的插件way@Jeemusu当然,我的第一个插件已经有很多用户了:。第二个仍然是杂乱无章的:我猜你有两种css,一种是插件操作所必需的东西,另一种是你个人喜欢的样式。如果是我,并且我正计划发布它,我会分离用于设计目的的css。虽然我发现自己只是使用javascript来应用类,并将几乎所有的样式分开,但我想我是一个纯粹主义者,不太喜欢看到内联样式。这一点很好!努力寻找一个好的表达方式,用一个
con
bullet point;-)我仍然在努力解决这样一个事实,即许多css无法分解,因为它通常依赖于变量set
onLoad
或类似的变量。你觉得在两个地方使用特定于插件的css值得吗?@ZachL你能举个例子说明为什么它不能被分解吗?例如,您可以将类用于单独的情况。在一种情况下,我使用JQuery的
.position()
方法来获取(可能的)静态元素的位置,然后再将它们切换到
绝对
。另一个示例是将集合中所有图像的高度设置为最短图像的高度。在那个例子中,我让js做
{'height':theMinHeight}
和css做
{width:100px}
好的,那么让我们这样说吧:这在很大程度上取决于您编写的插件类型。如果它使用的是可以排除的非平凡CSS,那么它应该被排除。是的,我想它需要有点逐案的基础。我可能会包括我目前开发的插件的所有css(可能只有十几行),但我认为总的来说,我仍然会争取一个干净的分离。