2015-02-11 49 views
0

问题:我不希望每次都向客户端发送prefixfree.js,我认为它可能不适合速度并且可以在服务器上解决侧。快速:如何在应用程序启动时生成浏览器特定的css并提供服务

但同时我不希望服务器一遍又一遍地重做相同的工作。我想塞雷尔语要做到这一点:

当服务器启动...

  1. 转换少CSS
  2. 使4个版本的所有CSS文件:
    1. 的webkit
    2. MOZ
    3. ie
    4. 所有浏览器
  3. 然后适当地提供它们,所以如果浏览器代理是webkit,则提供该css文件的webkit版本。如果无法确定,则提供所有版本。

现在我可以代替所有的文件,我知道它不会增加那么多的文件大小。但我不知道如何减少编译器输出的前缀版本,我不想在命令行中运行每个css文件并运行一些命令来添加前缀。此外,尝试尽可能地改善流量并不是一个好习惯。

我也可以使用一些ide插件在较少的文件中添加前缀,但这使得css文件变得庞大且难以调试。

+0

[Autoprefixer](https://github.com/postcss/autoprefixer)。 – 2015-02-11 16:14:44

+0

你能告诉它它做了什么,从我得到它需要最终的CSS和前缀与所有浏览器前缀对吗? – 2015-02-11 18:05:44

+0

好吧,它几乎可以在任何shell格式下使用,包括['lessc' plugin](https://github.com/less/less-plugin-autoprefix)(所以你可以随时随地使用它,例如任何你需要的东西。如果'Grunt'是你的构建链的一部分,那么使用它作为[Grunt插件](https://github.com/nDmitry/grunt-autoprefixer)而不是所提及的'lessc'插件更加灵活。 – 2015-02-11 19:05:50

回答

1

要做出正确的决定,您应该知道您必须支持哪些浏览器。 Yous也应该考虑Graceful degradation

个人我认为运行较少与autoprefix和clean-css在大多数情况下是安全的选择。

测试很简单:

npm install less 
npm install less-plugin-clean-css 
npm install less-plugin-autoprefix 
lessc source.less production.css --autoprefix --clean-css 

注意,你可以设置你的目标浏览器作为autoprefix插件参数。为了支持与Bootstrap相同的浏览器,请使用以下内容:

--autoprefix='Android 2.3','Android >= 4','Chrome >= 20','Firefox >= 24','iOS >= 6','Opera >= 12','Safari >= 6' 

你说得对。供应商前缀会使您的CSS文件变大。你应该注意到你可以压缩/缩小你的代码(也是zip),你的代码可以被浏览器缓存。

您应该将较大的代码与-prefix-fee进行比较; 2kb gziped一个额外的http进程和一些JavaScript处理。维拉解释了为什么使用它可能是一个好主意:http://css-tricks.com/five-questions-with-lea-verou/

你的想法是介于上述两个解决方案之间的某处。你的css代码可能会稍小一些,但你仍然需要一些JavaScript处理来找出用户的浏览器。

我也可以使用一些ide插件在较少的文件中添加前缀,但是>使得css文件变得庞大且难以调试。

您可以将autoprefix插件与CSS源代码一起使用,以方便调试(使用Less编译器的--source-map选项)。在大多数情况下,您将拥有开发和生产版本的代码。

正如@ seven-phases-max已经说明的那样,您可以将所有上述内容集成到Grunt或Gulp的构建链中。

+0

我以为express可以使用用户代理来确定浏览器,然后为特定文件'moz-home.css'提供服务,如果存在不确定性,那就服务于整个事情。 'home.css',它可能有前缀版本,或者它可能与prefixfree ..我忘记了gzip和缩小,以及源地图。如果告诉,我认为较少的编译器会压缩。 我一直觉得在浏览器中使用prefixfree是违背最佳实践的。这就像创造不必要的弱点,这会减慢加载时间。 (如果没有缓存,首先下载前缀,第二分析样式表,第三修改它们) – 2015-02-12 01:15:42

+0

是少了'--compress'选项删除空格。人们应该更喜欢clean-css,以获得更好的优化,例如选择器合并。也免费前缀可以从CDN加载。这个问题:http://stackoverflow.com/questions/11947861/should-i-include-prefix-free-plugin-in-my-website确认使用前缀免费是不好的做法。我认为只有在了解真正的瓶颈时才能做出判断。例如,在你的网站上使用jQuery时,开销是多少。 – 2015-02-12 10:18:48

相关问题