首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Node.js + Express.js。如何渲染更少的css?

Node.js + Express.js。如何渲染更少的css?
EN

Stack Overflow用户
提问于 2011-01-07 02:18:42
回答 5查看 24.5K关注 0票数 17

我无法在express工作区中呈现较少的css。

这是我当前的配置文件(我的css/文件'public/stylo/')中:

代码语言:javascript
复制
app.configure(function()
{
    app.set('views'      , __dirname + '/views'         );
    app.set('partials'   , __dirname + '/views/partials');
    app.set('view engine', 'jade'                       );
    app.use(express.bodyDecoder()   );
    app.use(express.methodOverride());
    app.use(express.compiler({ src: __dirname + '/public/stylo', enable: ['less']}));
    app.use(app.router);
    app.use(express.staticProvider(__dirname + '/public'));
});

这是我的main.jade文件

代码语言:javascript
复制
!!!
html(lang="en")
     head
         title Yea a title
         link(rel="stylesheet", type="text/css", href="/stylo/main.less")
         link(rel="stylesheet", href="http://fonts.googleapis.com/cssfamily=Droid+Sans|Droid+Sans+Mono|Ubuntu|Droid+Serif")
         script(src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js")
         script(src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.7/jquery-ui.min.js")
     body!= body

这是我的main.less css

代码语言:javascript
复制
@import "goodies.css";

body 
{
    .googleFont;
    background-color     :  #000000;
    padding              :  20px;
    margin               :  0px;

    > .header
    {
        border-bottom    :  1px solid #BBB;
        background-color :  #f0f0f0;
        margin           :  -25px -25px 30px -25px; /* important */
        color            :  #333;
        padding          :  15px;
        font-size        :  18pt;
    }
}

下面是我的goodies.less css

代码语言:javascript
复制
.rounded_corners(@radius: 10px)
{    
    -moz-border-radius   :  @radius;
    -webkit-border-radius:  @radius;
    border-radius        :  @radius;
}
.shadows(@rad1: 0px, @rad2: 1px, @rad3: 3px, @color: #999)
{
    -webkit-box-shadow   :  @rad1 @rad2 @rad3 @color;
    -moz-box-shadow      :  @rad1 @rad2 @rad3 @color;
    box-shadow           :  @rad1 @rad2 @rad3 @color;
}
.gradient (@type: linear, @pos1: left top, @pos2: left bottom, @color1: #f5f5f5, @color2: #ececec)
{
    background-image     :  -webkit-gradient(@type, @pos1, @pos2, from(@color1), to(@color2));
    background-image     :  -moz-linear-gradient(@color1, @color2);
}
.googleFont
{
    font-family          :  'Droid Serif';
}

很酷的交易。现在:我通过npm安装了less,我从另一篇文章中听说@imports应该引用.css而不是.less。无论如何,我已经尝试了在jade和更少的文件中将.less切换为.csscombinations,但都没有成功。

如果您能提供帮助或有解决方案,我将不胜感激。

注意:如果我输入任何ol‘.css,jade部分就可以正常工作。

Note2:如果我通过命令行使用,lessc会编译得更少。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-01-09 01:36:46

天哪,这些东西在路径的工作方式上是非常不一致的,但是我发现了如何让它工作。

第一个问题是你的路径,无论是compiler还是staticProvider,编译器都需要使用/public,它会挂接到下面的所有请求中。如果您不这样做,编译器将尝试使用像/public/stylo/stylo这样的路径。

第二个问题存在于main.less文件中的@import,以及less编译器愚蠢且不能处理相对导入的事实。

main.less中使用@import "/public/stylo/goodies.css";将使其正常工作。

已为less的相对路径问题提交错误

https://github.com/cloudhead/less.js/issues/issue/177

票数 16
EN

Stack Overflow用户

发布于 2011-12-05 07:48:21

如果你想缩小输出的css,我发现内置的编译器(来自connect模块)缺少压缩选项。因此,与其为它编写我自己的中间件编译器。我在我的应用中改写了connect less编译器。

代码语言:javascript
复制
var express = require('express');
var app = express.createServer();
var less;

express.compiler.compilers.less.compile = function (str, fn) {
    if (!less) less = require("less");                                                      
    try {
        less.render(str, { compress : true }, fn);
    } catch (err) {
        fn(err);
    }
};

app.use(express.compiler({ src: publicdir, enable: ['less'] }));
票数 3
EN

Stack Overflow用户

发布于 2011-01-11 00:25:56

问题是,如果mtime发生变化,编译器只会编译文件。

假设你有:

代码语言:javascript
复制
// A.less
@import "B.css";

代码语言:javascript
复制
// B.less
body {
  background: #f00;
}

我现在修改B.less,A将不会被重新编译!

我有一个拉取请求等待了几个月,你可以使用我的fork编译器而不是主编译器。

https://github.com/senchalabs/connect/pull/167

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4618257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档