Nodejs Jade模版中引入css文件
Nodejs Jade模版中引入css文件
这个问题我是在看《Node.js入门经典》的时候遇到的。
一开始我使用的代码如下: link(rel=‘stylesheet’, href=‘http://twitter.github.com/bootstrap/1.4.0/bootstrap.min.css’) 这样引入css文件,可以正常显示css效果。
后来,我尝试使用引入本地css文件,代码如下: link(rel=‘stylesheet’, href=‘bootstrap.css’) 备注:为了方便测试,这里我将css文件和引入它的jade模版放在一个文件夹下的。 这时候,该css效果无法显示。
折腾了一下午还是没想明白,只好到社区向各位大大求助了,万分感谢~~~
Nodejs Jade模版中引入css文件
这个问题我是在看《Node.js入门经典》的时候遇到的。
初始尝试
一开始我使用的代码如下:
link(rel='stylesheet', href='http://twitter.github.com/bootstrap/1.4.0/bootstrap.min.css')
这样引入CSS文件,可以正常显示CSS效果。但是,这种方式依赖于外部网络资源,一旦网络不稳定或者服务器出现问题,就会影响到页面的展示效果。
引入本地CSS文件
后来,我尝试使用引入本地CSS文件,代码如下:
link(rel='stylesheet', href='bootstrap.css')
备注:为了方便测试,这里我将CSS文件和引入它的Jade模版放在一个文件夹下的。
这时候,该CSS效果无法显示。
经过一番调试后,发现原因在于路径设置不正确。在Jade模版中引入本地CSS文件时,需要确保路径是相对于静态资源目录(如public
)的。
解决方案
假设你的项目结构如下:
project-root/
├── public/
│ ├── css/
│ │ └── bootstrap.css
│ └── index.jade
└── app.js
你需要在Jade模版中这样写:
link(rel='stylesheet', href='/css/bootstrap.css')
同时,在Express应用中需要配置静态资源目录,以便正确地处理这些请求:
const express = require('express');
const app = express();
// 配置静态资源目录
app.use(express.static('public'));
app.get('/', (req, res) => {
res.render('index');
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
通过以上步骤,你可以确保Jade模版能够正确加载本地CSS文件,并且页面样式能够正常显示。
多谢! 不仅告诉了我怎么做,还告诉了我为什么。 握个爪,哈哈~
您这么一提醒,我倒是想起来了。这书一开始讲目录结构的时候就提过所有静态文件应该放在public文件夹下。是我粗心了<del>惭愧</del>~再次感谢~~~
用了 app.set(‘views’, __dirname + ‘/views’); app.use(express.static(path.join(__dirname, ‘public’))); 也不行 啊 为什么 还是404 not find
在Node.js应用中使用Jade(现称为Pug)模板引擎时,正确地引用CSS文件需要确保路径正确,并且服务器能够正确地提供静态文件。你的问题可能出在CSS文件路径或服务器配置上。
示例代码
假设你的项目结构如下:
/myapp
/public
stylesheets
bootstrap.css
/views
index.jade
app.js
app.js
配置静态文件服务
首先,在你的Express应用中配置静态文件服务,使Express知道在哪里寻找静态文件(如CSS文件)。
const express = require('express');
const path = require('path');
const app = express();
// 设置静态文件目录
app.use(express.static(path.join(__dirname, 'public')));
// 渲染index.jade
app.get('/', (req, res) => {
res.render('index');
});
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
index.jade
文件
然后,在你的Jade模板中正确引用CSS文件:
doctype html
html
head
title My Node.js App
link(rel='stylesheet', href='/stylesheets/bootstrap.css')
body
h1 Hello World!
p This is a test.
关键点解释
-
路径问题:在引用本地CSS文件时,你需要指定从根静态文件目录开始的相对路径(例如,
/stylesheets/bootstrap.css
)。这确保了浏览器能够正确地请求CSS文件。 -
静态文件服务:通过调用
app.use(express.static(...))
,你告诉Express去哪里查找客户端的静态资源(如HTML、CSS、JS文件等)。在这个例子中,我们设置public
文件夹为静态文件目录,所以所有子目录(包括stylesheets
)都可以被直接访问。
通过上述步骤,你应该能够在Jade模板中成功引入并应用本地CSS文件。如果仍然有问题,请检查网络请求是否成功加载了CSS文件,可以通过浏览器开发者工具查看网络请求。