Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
外部样式表与JavaScript添加的样式标记_Javascript_Css_Stylesheet - Fatal编程技术网

外部样式表与JavaScript添加的样式标记

外部样式表与JavaScript添加的样式标记,javascript,css,stylesheet,Javascript,Css,Stylesheet,我有多个小部件,可以添加到各种网页。每个都有自己的样式表: <link type="text/css" href="http://mySite/widget1.css" /> <script type="text/javascript" src="http://mySite/widget1.js"></script> 这个有什么问题吗?对我来说这听起来是个好主意,但当我看其他示例(如jQuery插件)时,css和js总是在单独的文件中。这对HTTP请求毫无帮

我有多个小部件,可以添加到各种网页。每个都有自己的样式表:

<link type="text/css" href="http://mySite/widget1.css" />
<script type="text/javascript" src="http://mySite/widget1.js"></script>

这个有什么问题吗?对我来说这听起来是个好主意,但当我看其他示例(如jQuery插件)时,css和js总是在单独的文件中。

这对HTTP请求毫无帮助。使用JavaScript向外部样式表添加链接仍然需要HTTP请求来获取它


您最好使用类似于将所有小部件的样式表合并并缩小到一个CSS文件中。然后将它包含在每个页面中,让浏览器缓存它。

这对HTTP请求毫无帮助。使用JavaScript向外部样式表添加链接仍然需要HTTP请求来获取它

您最好使用类似于将所有小部件的样式表合并并缩小到一个CSS文件中。然后将其包含在每个页面中,并让浏览器缓存它

用一个http请求替换两个http请求将带来性能改进

如果您在自己的文件中有CSS,浏览器可以缓存它,从而提高性能。让JavaScript创建它最终会生成一个更大的JS文件,而且它(CSS)不能被缓存。另外,JavaScript将不得不生成CSS,从而降低性能

用一个http请求替换两个http请求将带来性能改进


如果您在自己的文件中有CSS,浏览器可以缓存它,从而提高性能。让JavaScript创建它最终会生成一个更大的JS文件,而且它(CSS)不能被缓存。另外,JavaScript将不得不生成CSS,从而降低性能。

如果要创建新的样式元素,
为什么不把它的代码放在它影响的js小部件文件中呢?

如果您正在创建一个新的样式元素,
为什么不把它的代码放在它影响的js小部件文件中呢?

我最后的选择是从脚本中创建样式表

除了减少http请求的数量外,主要的好处实际上是您可以在注入样式表之前对其进行调整。这对于小部件尤其有用,因为您可以在运行时调整类名、颜色或大小


在更大的范围内,这就是像LESS和SASS这样的一些库正在做的事情。

我的最终选择是从脚本中创建样式表

除了减少http请求的数量外,主要的好处实际上是您可以在注入样式表之前对其进行调整。这对于小部件尤其有用,因为您可以在运行时调整类名、颜色或大小


在更大的范围内,这是一些像LESS和SASS这样的库正在做的事情。

注意,您仍然有两个请求,因为当您将该链接元素添加到DOM中时,它会去请求它。如果您只有5-10个声明,也许您可以在线执行它们,而不必担心样式表。@BrianGlaz抱歉,我立即意识到我的示例完全错了,并更正了这个问题。请注意,您仍然有两个请求,因为当您将link元素添加到DOM中时,它会去请求它。如果您只有5-10个声明,也许您可以在线执行它们,而不必担心样式表。@BrianGlaz抱歉,我立即意识到我的示例都错了,并更正了问题。抱歉,我立即意识到我的示例都错了,并更正了问题。抱歉,我立刻意识到我的示例完全错了,并纠正了这个问题。即使使用缓存,也会有http请求,对吗?由于样式表的大小,我更担心http请求浪费的时间,而不是加载时间。非常确定,如果缓存了http请求,就没有http请求,或者它只获取头,而不是数据。除非你的服务器在响应上真的很慢,否则“浪费的时间”就不会成为问题。即使使用缓存,也会有http请求,对吗?由于样式表的大小,我更担心http请求浪费的时间,而不是加载时间。非常确定,如果缓存了http请求,就没有http请求,或者它只获取头,而不是数据。除非您的服务器响应速度非常慢,否则“浪费的时间”不会成为问题。是的,这就是想法(在问题中解释得很糟糕…)。创建样式元素的代码将进入widget1.js。我已经更正了帖子。是的,这就是我的想法(在问题中解释得很糟糕…)。创建样式元素的代码将进入widget1.js。我已经更正了帖子。
var stylesheet=document.createElement("style");
stylesheet.innerHTML="#slideshow{width:500px;...";
etc...