ejs

2013-09-05 7 views
10

पर .css फ़ाइल जोड़ना ejs के साथ node.js (express) पर काम कर रहा हूं और मैं इसे एक .css फ़ाइल शामिल करने में सक्षम नहीं हूं। मैंने एक ही चीज़ को एक HTML-css duo के रूप में अलग-अलग कोशिश की और यह ठीक काम किया। ..मैं कैसे अपनी .ejs फ़ाइल में इसे शामिल कर सकता हूं। मेरे app.js इस प्रकार है:ejs

var express = require('express'); 
var app = express(); 

app.set('views', __dirname + '/views'); 


app.get('/', function(req, res){ 
    res.render('index.ejs', { 
     title: 'My Site', 
    nav: ['Home','About','Contact'] 
    }); 
}); 

app.get('/home', function(req, res){ 
    res.render('index.ejs', { 
     title: 'My Site', 
    nav: ['Home','About','Contact'] 
    }); 
}); 

app.get('/about', function(req, res){ 
    res.render('about.ejs', { 
    title: 'About', 
    nav: ['Home','About','Contact'] 
    }); 
}); 

app.get('/contact', function(req, res){ 
    res.render('contact.ejs', { 
    title: 'Contact', 
    nav: ['Home','About','Contact'] 
    }); 
}); 


app.listen(3000); 

और index.ejs फ़ाइल:

<html> 
<head> 
<link href="style.css" rel="stylesheet" type="text/css"> 

</head> 
<body> 
<div> 
    <h1> <%= title %> </h1> 
    <ul> 
<% for (var i=0; i<nav.length;i++) {%> 

<li><a href="/<%=nav[i]%>"> <%=nav[i]%> </a></li> 
    &nbsp; 
<% } %> 
    </ul> 
</div> 

<br> 
<h3>Node.js</h3> 
<p class='just'>Express is agnostic as to which templating language you use. Templating languages can be a hot topic of debate.Here Iam going to use Jade.</p> 
<p class ='just'>Again Express is agnostic to what you use to generate your CSS-you can use vanilla CSS but for this example I'm using Stylus. 
</p> 
<footer> 
Running on node with express and ejs 
</footer> 
</home> 
</html> 

style.css फ़ाइल:

<style type="text/css"> 
body { background-color: #D8D8D8;color: #444;} 
h1 {font-weight: bold;text-align: center;} 
header { padding: 50px 10px; color: #fff; font-size :15px; text-align:right;} 
p { margin-bottom :20px; margin-left: 20px;} 
footer {text-decoration: overline; margin-top: 300px} 
div { width:100%; background:#99CC00;position:static; top:0;left:0;} 
.just 
{ 
    text-align: center; 

} 
a:link {color:#FF0000;} /* unvisited link */ 
a:visited {color:#0B614B;} /* visited link */ 
a:hover {color:#B4045F;} /* mouse over link */ 
a:active {color:#0000FF;} 

    ul { list-style-type:none; margin:0; padding:0;text-align: right; } 
li { display:inline; } 
</style> 
+1

आपको अपनी सीएसएस फ़ाइल में स्टाइल टैग का उपयोग नहीं करना चाहिए और आपको एक्सप्रेस के साथ रूट बनाने की आवश्यकता हो सकती है जो आपके सीएसएस और अन्य संपत्तियों की सेवा करती है। –

उत्तर

50

आपकी समस्या वास्तव में EJS के लिए विशिष्ट नहीं है।

2 बातें यहाँ

  1. style.css नोट करने के लिए एक बाहरी सीएसएस फ़ाइल है। तो आपको उस फ़ाइल के अंदर स्टाइल टैग की आवश्यकता नहीं है। इसमें केवल सीएसएस होना चाहिए।

  2. अपने एक्सप्रेस ऐप में, आपको उस सार्वजनिक निर्देशिका का उल्लेख करना होगा जिसमें से आप स्थिर फाइलों की सेवा कर रहे हैं। सीएसएस/जे एस/छवि की तरह

यह मानते हुए कि आप अपने अनुप्रयोग जड़ में से सार्वजनिक फ़ोल्डर में सीएसएस फ़ाइलें डाल द्वारा

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

किया जा सकता है। अब तुम मैं तुम्हें अपने सार्वजनिक फ़ोल्डर के अंदर सीएसएस फ़ोल्डर में सीएसएस फ़ाइल डाल दिया है मान

तरह
<link href="/css/style.css" rel="stylesheet" type="text/css"> 

यहाँ अपने tamplate फ़ाइलों में सीएसएस फ़ाइलों का उल्लेख करने, की है।

तो फ़ोल्डर संरचना होगा

. 
./app.js 
./public 
    /css 
     /style.css 
-1
app.use(express.static(__dirname + '/public'));<link href="/css/style.css" rel="stylesheet" type="text/css"> 

तो फ़ोल्डर संरचना होना चाहिए:

. 
./app.js 
./public 
/css 
/style.css 
1

आप टेम्पलेट

पर इस

 var fs = require('fs'); 
    var myCss = { 
     style : fs.readFileSync('./style.css','utf8'); 
    }; 

    app.get('/', function(req, res){ 
     res.render('index.ejs', { 
     title: 'My Site', 
     myCss: myCss 
     }); 
    }); 

इस डाल उपयोग कर सकते हैं

<%- myCss.style %> 

सिर्फ style.css

<style> 
    body { 
    background-color: #D8D8D8; 
    color: #444; 
    } 
    </style> 

निर्माण मैं कुछ कस्टम सीएसएस के लिए इस प्रयास करें। यह मेरे लिए काम करता है

संबंधित मुद्दे