2016-06-07 48 views
2

這不是一個問題,關於express.static()如何使用Node.js的

我有一個應用程序,我要爲具有相同的JS和CSS依賴多頁,包括在HTML靜態文件。因此,編寫css和js包括在每一頁上使用<script><link>標籤是不好的做法。

我期待看起來像php包括的方式來做到這一點。由於php會處理所有的php代碼併發送編譯後的html,我認爲可以通過節點服務器上的js來完成。

那麼服務器會做有點象下面這樣:

  1. 獲取HTML從resources.html
  2. 推上面的html的index.html
  3. 發送的index.html

或者也許可能有其他方法。任何想法?

+0

爲什麼你不包括它在你的index.html? – Demnogonis

回答

1

您可以在您選擇的模板引擎中使用佈局,並且每個視圖都可以擴展該佈局。例如,如果您使用Jade作爲模板引擎。

index.js

var express = require("express"); 
var app = express(); 
var port = process.env.PORT || 7080; 

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

app.get('/', function (req, res) { 
    res.render('home'); 
}); 

app.listen(3000); 

的意見/ layout.jade

doctype html 
html 
    head 
    script(src='/javascripts/home.js') 
    link(rel='stylesheet', href='/stylesheets/style.css') 
    block title 
     title= "My Website" 
    body 
    .container 
     block content 

的意見/ home.jade

extends ./layout.jade 

block content 
    h1 Hello World! 

家。玉視圖擴大了佈局並覆蓋了content區塊。參觀http://localhost:3000/返回如下:

<!DOCTYPE html> 
<html> 
    <head> 
    <script src="/javascripts/home.js"></script> 
    <link rel="stylesheet" href="/stylesheets/style.css"> 
    <title>My Website</title> 
    </head> 
    <body> 
    <div class="container"><h1>Hello World!</h1></div> 
    </body> 
</html> 
+0

我得到了模板引擎的概念,但它使簡單的事情變得更加複雜。感謝您的答案btw。 :) –

+0

不幸的是,Node不能像PHP一樣工作,所以我認爲這是你最好的選擇。如果有人有另一種選擇,我會很感興趣。 – MrWillihog

+0

是的不幸。我使用Express提供sendFile選項,但不允許在發送之前動態修改文件。但是我發現只有這個功能的ejs比所有模板引擎好一點。 –

0

做一個公共文件夾根目錄

然後在主app.js/server.js

添加以下行: -

`var express = require('express'), 
bodyParser = require('body-parser'), 
userRoutes = require('./routes/user'), 
mongoose = require('mongoose'); 
var app = express(); 
mongoose.connect('mongodb://localhost/meanDemo'); 
app.use(bodyParser.json());  // to support JSON-encoded bodies 
app.use(bodyParser.urlencoded({  // to support URL-encoded bodies 
extended: true 
})); 
app.use(express.static('public')); 
app.engine('html', require('ejs').renderFile); 
app.set('view engine', 'html'); 
app.use('/', userRoutes); 
app.get('/',function(req, res){ 
res.render('userlist'); 
}); 
app.listen(3000); 
console.log("sever started at 3000"); 

`

然後在視圖中使用/*filename將/將您的公共目錄