我正在开发第三方脚本。我将自己的样式表添加到嵌入脚本的页面中。当前样式是 JavaScript 中的长字符串。这很愚蠢,但它比附加样式链接并发出另一个 http 请求要快。
查看 facebook SDK,我们看到一个 php 脚本,它执行类似这样的操作,其中JS_FILES
包含CSS_FILES
文件名数组:
// all.js
foreach ($JS_FILES as $file) {
echo file_get_contents($file);
}
$css = '';
foreach ($CSS_FILES as $file) {
$css .= file_get_contents($file);
}
// css URLs are relative to facebook domains
$css = preg_replace('#url\(/#', 'url(http://static.ak.fbcdn.net/', $css);
echo 'FB.Dom.addCssRules(' . json_encode($css) . ', ["pkg"])';
因此 css 被转换为 JSON 并发送到FB.Dom.addCssRules
将样式附加到页面的函数。
在 JS 字符串中编写 css 是愚蠢的。我想在我的风格中使用 SCSS,我想有语法高亮,我想在一个合理的环境中开发。
我需要做什么,如何连接到 Asset Pipeline / Sprockets / Tilt 以使这件事发生?
代码示例是一个很大的优势,因为我不是一个疯狂的优秀 ruby 开发人员。
编辑:我浏览了 Asset Pipeline 文档,并没有看到任何实际挂钩的方法。我看到的唯一选择是创建一个调用默认转换的 Tranfsorm 类,然后将输出转换为 JS 字符串并将其发送到函数。我真的不知道该怎么做。我不知道我是否甚至可以在.jscss
不使管道崩溃的情况下要求文件。另一种选择(非常相似)是编写一个像Black Coffee这样的 gem ,我真的不知道我应该如何去实现它。