簡體   English   中英

使用Node JS / Express提供包含圖像的靜態HTML頁面

[英]Serving a static HTML page containing an image using Node JS / Express

我可以使用express提供靜態HTML頁面。 我還安裝了“ejs”,用我的.js文件中的局部變量數據呈現頁面。 我只需要在頁面的一角顯示一個小徽標以及其他數據。 在瀏覽器中打開html文件就可以很好地加載圖像了,但是在服務器上我得到了一個破損的圖像。 我認為這可能是我的文件路徑或目錄結構的問題。 這是我原始的簡單代碼,沒有徒勞的嘗試:

server.js

var express = require ('express');
var fs = require ('fs');
var app = express ();
var bodyParser = require ('body-parser');
app.use (bodyParser ());
var server = require ('http').createServer (app);
app.set('views', __dirname + '/views');
app.engine('.html', require('ejs').__express);

var my_name="Goku";
var my_power=9001;

app.get ('/', function (req, res){
    console.log ('GET /');
    res.render('index.html',{name:my_name,power:my_power});    
    });

server.listen (8888);

的index.html

<html>
<body>
<input id="name" value=" <%=name%> " /><br>
<input id="power" value=" <%=power%> "/><br>
</body>
</html>

我沒有包含img src行,所以你可以給我完整的一行,人們有時會忽略我微妙的語法錯誤。關於目錄結構,我只在我的/ home文件夾中有'server.js'文件和'索引。 html'文件在/ home / views中


Ploutch提供的解決方案:我將logo.jpg移動到我在'/ home'下創建的'/ images'文件夾中我剛剛添加了這些行 -

server.js

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

的index.html

<img src="/logo.jpg" />

由於我使用ejs渲染具有局部變量的頁面,如果我將logo.jpg放在當前目錄而不是單獨的圖像文件夾中,則圖像加載正常,但“name”和“power”的輸出將被破壞。

您需要以靜態方式提供資源文件(images,js,css,...)。

為此,請將它們放在子目錄中,然后在server.listen之前添加它

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

(假設public是包含靜態文件的文件夾的名稱)

然后,假設您的圖片名為logo.png您可以這樣調用它:

<img src="/logo.png" />

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM