我正在開發第三方腳本。我將自己的樣式表添加到腳本嵌入的頁面中。目前,這種風格在JavaScript中是一個很長的字符串。這很愚蠢,但它比追加樣式鏈接併發出另一個http請求要快。使用RoR Asset Pipeline將樣式表添加到Javascript
縱觀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,我想要突出語法,並且希望在合理的環境中進行開發。
我需要做什麼,如何掛鉤資產管道/鏈輪/傾斜,使這件事情發生?
代碼示例是一大優點,因爲我不是一個瘋狂的好ruby開發者。
編輯:我瀏覽了資產管道文檔,沒有看到任何實際掛鉤的方法。我看到的唯一選擇是創建一個調用默認轉換的Tranfsorm類,然後將輸出轉換爲JS字符串並將其發送給函數。我真的不知道該怎麼做。我不知道我是否甚至可以要求輸入.jscss
文件,而不會讓管道變得異常脆弱。另一個選擇(非常相似)是寫一個像Black Coffee這樣的寶石,我再也不知道該如何去實現這個了。
是否有一個很好的理由,爲什麼CSS需要從JS轉換?如果只是一次性導出,則可以將CSS寫入文件並將其放入應用程序/ assets/stylesheets/ – rossta
您誤解了該問題。最終結果應該是JavaScript中的CSS作爲字符串。這樣腳本就不需要再創建一個http請求來將樣式附加到頁面上。 – CamelCamelCamel