2012-11-21 19 views
15

के लिए ejs के साथ काम करने के लिए स्टाइलशीट नहीं मिल सकता है। मैं टेम्पलेट के लिए नोड, एक्सप्रेस और ejs के साथ एक साधारण सर्वर बनाने की कोशिश कर रहा हूं। मैंने सर्वर को पृष्ठ पर इंगित करने के लिए प्राप्त किया है, इसे लोड किया है, और इसमें शामिल कथन के साथ कोड के अन्य बिट्स उत्पन्न करने में भी सक्षम हूं। हालांकि किसी कारण से स्टाइल शीट लोड नहीं होगी।node.js

app.js

var express = require('express'), 
app = express(), 
http = require('http'), 
server = http.createServer(app), 
fs = require('fs'); 

var PORT = 8080; 

app.set('view engine', 'ejs'); 

app.get('/', function(req, res){ 
res.render('board.ejs', { 
    title: "anything I want", 
    taco: "hello world", 
    something: "foo bar", 
    layout: false 
    }); 
}); 


app.listen(PORT); 
console.log("Server working"); 

EJS फ़ाइल एक निर्देशिका विचारों में है/board.ejs

<html> 
<head> 
    <title><%= title %></title> 
    <link rel='stylesheet' href='../styles/style.css' /> 
</head> 
<body > 
    <h1> <%= taco %> </h1> 
    <p> <%= something %> </p> 
</body> 
</html> 

और style.css ऐप के लिए शैलियों/style.css निर्देशिका रिश्तेदार है। js

p { 
    color:red; 
} 

मैं हर रास्ता है कि मैं जहाँ मेरे localho के सापेक्ष सहित लिंक के href के लिए के गर्भ धारण कर सकते हैं की कोशिश की है बोर्ड.ईजे और यहां तक ​​कि सिर्फ style.css के सापेक्ष app.js से संबंधित सेंट पॉइंट्स लेकिन कोई भी काम नहीं कर रहा है। कोई भी सुझाव अति सराहनीय है।

app.use(express.static(__dirname + '/public')); 

<link rel='stylesheet' href='/style.css' /> 

उत्तर

37

एक स्थिर निर्देशिका घोषित

you must first declare static directory 

app.use("/styles",express.static(__dirname + "/styles")); 

EJS फ़ाइल में:

<link rel='stylesheet' href='/styles/style.css' /> 
+0

कि काम करने के लिए नहीं मालूम था। क्यों ''/public '?' और app.use कैसे सेट करेगा स्टाइलशीट का मूल्यांकन कैसे किया जाता है? मैंने परिवर्तन के साथ 'href = '/ शैलियों/style.css'' पर सेटिंग करने का प्रयास किया और बिना किसी किस्मत के – Loourr

+0

इसे अपने app.router() लाइन से ऊपर रखा। – chovy

+1

आप मूल रूप से अपनी .ejs फ़ाइल से बात कर रहे हैं और कह रहे हैं कि जब आप एक स्थिर फ़ाइल का संदर्भ देते हैं, जैसे उपरोक्त 'लिंक' टैग में, रूट निर्देशिका 'सार्वजनिक' फ़ोल्डर है जिसे आपने रूट के बजाए app.use में परिभाषित किया है आपके पूरे ऐप की निर्देशिका। इस मामले में, लिंक टैग के href में "/" 'सार्वजनिक' निर्देशिका का संदर्भ देता है, न कि आपके ऐप की जड़। – mumush

10
app.js में

:

+0

यह बहुत अच्छा जवाब है! यदि आप फ़ाइल स्थान के आधार पर मेरे जैसे कुछ सापेक्ष पथ का उपयोग करने की कोशिश कर रहे हैं उदा। href = '../../शैलियों/style.css' यदि आपके पास कुछ टेम्पलेट्स हैं (उदाहरण के लिए प्रत्येक फ़ाइल में शामिल सीएसएस/जेएस संसाधन) तो आपको समस्याएं आ रही हैं। संक्षेप में - जब आप उपयोगकर्ता "/ bla/bla" (स्लैश/ब्लै/ब्लै) करते हैं तो आप statics निर्देशिका के साथ काम कर रहे हैं। अच्छा। – Combine