2011-06-18 37 views
2

我試圖用快遞JSLESS沒有在快遞工作的js

var app = express.createServer(); 
var pub = __dirname + '/styles'; 
app.configure(function(){ 
    app.set("view engine", "html"); 
    app.register(".html", require("jqtpl").express); 
    app.set('views', __dirname + '/views'); 
    app.set("view options", { layout: true }); 

    app.use(express.compiler({ src:pub, enable: ['less'] })); 
    app.use("/styles", express.static(pub)); 
    app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); 
    app.use(express.bodyParser()); 
    app.use(app.router); 
}); 

中的layout.html少使用

<!DOCTYPE HTML> 
<html> 
    <head> 
     <title>${title}</title> 
     <link rel="stylesheet" href="/styles/style.less" type="text/css" media="screen" title="main css" charset="utf-8"> 
    <head> 
    <body> 
      <h1>Hello World!</h1> 
     {{html body}} 
    </body> 
</html> 

我style.less是

@color: #4D926F; 
h1 { 
    color:@color; 
} 

我可以調用http://localhost/styles/style.less,但它不是呈現CSS。

快速配置的任何錯過?

回答

5
  1. 設置srcexpress.compiler你的公共根路徑,而不是/風格(同static
  2. 編譯的文件將在/風格/風格。 CSS

這也是很好的做法,從哪裏提供靜態文件夾public。如果你是從根服務的,你將暴露你的服務器源代碼。

var app = express.createServer() 
    , public = __dirname + "/public" 

app.configure(function(){ 
    app.set('view engine', "html") 
    app.register('.html', require('jqtpl').express) 
    app.set('views', __dirname + "/views") 
    app.set('view options', { layout: true }) 

    app.use(express.compiler({ src:public, enable: ['less'] })) 
    app.use(express.static(public)) 
    app.use(express.errorHandler({ dumpExceptions: true, showStack: true })) 
    app.use(express.bodyParser()) 
    app.use(app.router) 
}) 
+0

此答案已過時。 Express 3不再具有「編譯器」方法。檢查這個答案更多:http://stackoverflow.com/a/14368170/2031033 –

3

少的中間件是一個更好的替代方案,精美的作品。像這樣的代碼應該做的伎倆:

var pub_dir = __dirname + '/public'; 

app.use(require('less-middleware')({ src: pub_dir })); 
app.use(express.static(pub_dir)); 

請注意,當您創作something.less你其實應該鏈接,如果你想要的文件也可以從你的HTML或something.min.css something.css精縮。默認情況下,每次文件更改時都會進行編譯/縮小,但您可以配置該行爲。請參閱less-middleware文檔以獲取完整的選項列表: https://github.com/emberfeather/less.js-middleware