我想導入一個DB生成的變量少的文件,以供其他較少的文件使用。這將爲我的應用程序提供一些高級別的變量。導入這些文件的最佳方法是什麼?我已經嘗試過類似@import "http://server.com/foo.less"
而沒有成功。如何生成動態LESS樣式表?
文件看起來像:
@fontColor: #EEE;
@fontSize: 10px;
從
@fontColor: {{fontColor}}
@fontSize: {{fontSize}}
我想導入一個DB生成的變量少的文件,以供其他較少的文件使用。這將爲我的應用程序提供一些高級別的變量。導入這些文件的最佳方法是什麼?我已經嘗試過類似@import "http://server.com/foo.less"
而沒有成功。如何生成動態LESS樣式表?
文件看起來像:
@fontColor: #EEE;
@fontSize: 10px;
從
@fontColor: {{fontColor}}
@fontSize: {{fontSize}}
你需要這樣做使用url()「函數」
@import url("http://localhost/foo.less");
這將根據您的要求有多快被回答在編譯時,這將會減慢的過程中導入較少的文件。 之後,此文件中的所有變量將可用於您當前的範圍。 很可能,這也適用於mixins,但我沒有測試。
生成假設你有機會獲得server.com
獲取文件(我認爲你這樣做),你的道路是正確的(並且我假設它是這樣),在我看來,需要糾正的一個錯誤是該文件應該看起來像(注意添加冒號):
@fontColor: #EEE;
@fontSize: 10px;
我不知道這是否意味着你需要改變你的生成代碼:
@fontColor: {{fontColor}}
@fontSize: {{fontSize}}
我不是用雙括號意味着什麼{{...}}
熟悉不夠,但我認爲是數據庫是如何從中提取信息放入正在生成的.less
文件中。如果是這樣,那麼在那裏添加冒號應該可以解決LESS期望變量被定義的問題,並且可能解決您的問題。
使用Asp.net,您的服務器可以動態生成較少的文件。但我認爲它也可以用其他技術。
的HomeController
//
// GET: /Home/
public ActionResult Index()
{
return View();
}
public ActionResult StyleMeFromCshtml()
{
Response.ContentType = "text/css";
return View(new StyleModel());
}
Index.cshtml
<!DOCTYPE html>
<html>
<head>
<title>test less</title>
<link rel="stylesheet/less" type="text/css" href="/Home/StyleMeFromCshtml" />
<script src="~/Scripts/less-1.4.2.js"></script>
</head>
<body>
<div class="styleMeLess">
I'm styled
</div>
</body>
</html>
StyleModel.cs
public class StyleModel
{
public string BackgroundColor
{
get
{
// or get the value from the DB
var random = new Random();
var toArgb = Color.FromArgb(random.Next(256), random.Next(256), random.Next(256));
return toArgb.Name.Remove(6, 2);
}
}
}
的StyleMeFromCshtml.cshtml較少在CSHTML僞裝
@model lessTest.Models.StyleModel
@{
Layout = null;
}
.styleMeLess{
background-color: #@Model.BackgroundColor
}
隨着索引的每次調用,都會在服務器上生成隨機顏色。但顏色值也可能來自數據庫。訣竅是在響應中contentType被設置爲「text/css」。
或者你直接返回較少的字符串:
public ActionResult StyleMe()
{
var random = new Random();
var toArgb = Color.FromArgb(random.Next(256), random.Next(256), random.Next(256));
string style = String.Format(".styleMeLess{{ background-color: #{0} }}", toArgb.Name.Remove(6,2));
return Content(style, "text/css");
}
這不是我要找的。我並沒有與產生更少的文件的問題,我希望能夠導入服務器生成在我的設置較少的文件。 – Art 2013-02-28 03:28:33
@arturnt:也許你需要澄清你的問題。我重讀它,我想你問的是你如何可以是_not_該服務器上的其他文件少導入服務器生成的少文件?那是對的嗎?如果是這樣,我懷疑這是不可能的(儘管我還沒有證實)。 – ScottS 2013-02-28 13:26:18
這正是我問的:)。它可以位於同一臺服務器上,但不能在本地文件系統上運行。 – Art 2013-03-01 20:50:31