首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Express 3.x中加载样式表时出错

在Express 3.x中加载样式表时出错
EN

Stack Overflow用户
提问于 2013-01-02 09:07:38
回答 2查看 1.3K关注 0票数 2

因此,我在express项目中加载样式表时遇到了问题。当我使用express 2.5.8时,我的样式可以正确加载,但当我更新到3.x时,样式开始加载失败。视图被渲染,但没有任何样式。

我使用node、express 3.x、jade和bootstrap。我的风格是public/stylesheets/*格式的。

更新:由于某些原因,layout.jade似乎没有被渲染。

这是我的server.js

代码语言:javascript
复制
require('coffee-script');
/**
 * Module dependencies.
 */

var express = require('express'),
            flash = require('connect-flash');

var app = module.exports = express.createServer();

// Configuration

app.configure(function(){
  app.set('views', __dirname + '/views');
  app.set('view engine', 'jade');
  app.set('port', 3000);
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(flash());
  app.use(require('connect-assets')());
  app.use(app.router);
  app.use(express.static(__dirname + '/public'));
});

app.configure('development', function(){
  app.use(express.errorHandler({ 
    dumpExceptions: true, 
    showStack: true 
  }));
});

app.configure('test', function () {
  app.set('port', 3001);
});

app.configure('production', function(){
  app.use(express.errorHandler());
});

// Routes

require('./apps/landing-page/routes')(app);
require('./apps/authentication/routes')(app);
require('./apps/home/routes')(app);
require('./apps/register/routes')(app);


app.listen(3000);
console.log("Express server listening on port %d in %s mode", app.settings.port, app.settings.env);

下面是我的主要layout.jade视图:

代码语言:javascript
复制
!!!
html
  head
    title= title
    script(src='http://code.jquery.com/jquery-latest.js')
    link(rel='stylesheet', href='/stylesheets/bootstrap.css')
    link(rel='stylesheet', media='screen', href='/stylesheets/bootstrap-responsive.css')
    link(rel='stylesheet', href='/stylesheets/app.css')

    script(src='javascripts/bootstrap.js')

    |   <!--[if lt IE 9]>
    |   <link rel="stylesheet" href="stylesheets/ie.css">
    |   <![endif]-->

    |   <!-- IE Fix for HTML5 Tags -->
    |   <!--[if lt IE 9]>
    |     <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
    |   <![endif]-->

  body 
    !=body


script(src='javascripts/app.js')

这是我的一条路线:

代码语言:javascript
复制
routes = (app) ->
    app.get '/home', (req, res) ->
        res.render "#{__dirname}/views/home",
        title: 'Home | SiteName'
        stylesheet: 'home'


module.exports = routes
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-02 09:17:31

我相信在Express3中布局渲染默认设置为false,所以尝试在您的配置中添加以下内容:

代码语言:javascript
复制
app.set('view options', { layout: true });

更新: The migration guide声明布局和分词的概念已经完全删除。相反,请使用Jade's template inheritance

/视图/布局

代码语言:javascript
复制
!!! 5
head
    // all your header elements
body
    block content

/视图/主页

在顶部添加以下内容:

代码语言:javascript
复制
extends layout

block content
    // the stuff you want to have in your content block

有关更多信息,请查看this guide

票数 3
EN

Stack Overflow用户

发布于 2013-01-02 09:15:42

代码语言:javascript
复制
app.use(express.static(__dirname + '/public')); 

必须在此之前

代码语言:javascript
复制
app.use(app.router);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14115819

复制
相关文章

相似问题

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