Saya mencoba mencari tahu cara memuat dan merender file HTML dasar sehingga saya tidak perlu menulis kode seperti:
response.write('...<p>blahblahblah</p>...');
Saya baru saja menemukan satu cara menggunakan perpustakaan fs . Saya tidak yakin apakah itu yang terbersih sekalipun.
var http = require('http'),
fs = require('fs');
fs.readFile('./index.html', function (err, html) {
if (err) {
throw err;
}
http.createServer(function(request, response) {
response.writeHeader(200, {"Content-Type": "text/html"});
response.write(html);
response.end();
}).listen(8000);
});
Konsep dasarnya hanya membaca file mentah dan membuang konten. Masih terbuka untuk opsi yang lebih bersih!
sys = require('util')
tidak diperlukan karena tidak ada yang dicetak ke konsol.fs.readFile
dapat ditempatkan di dalam panggilan kehttp.createServer
, memungkinkan kesalahan untuk ditangani. Jawaban Gunakan Stephen denganif (err) { console.log('something bad'); return res.end('Oops! Something bad happened.');}
Thereturn
pernyataan adalah hal sederhana yang pengguna baru mungkin mengabaikan.gunakan app.get untuk mendapatkan file html. itu mudah!!
sesederhana itu. Untuk ini gunakan modul kilat. Instal ekspres:
npm install express -g
sumber
express
.var express = require('express'); var app = express();
npm install express --save
sebagai ganti -gAnda dapat menggema file secara manual menggunakan objek fs, tetapi saya akan merekomendasikan menggunakan kerangka ExpressJS untuk membuat hidup Anda lebih mudah.
... Tetapi jika Anda bersikeras melakukannya dengan cara yang sulit:
sumber
Saya tahu ini adalah pertanyaan lama, tetapi karena tidak ada yang menyebutkannya, saya pikir ini layak untuk ditambahkan:
Jika Anda benar-benar ingin menayangkan konten statis (misalnya halaman 'tentang', gambar, css, dll.) Anda dapat menggunakan salah satu modul penyajian konten statis, misalnya simpul-statis. (Ada yang lain yang mungkin lebih baik / lebih buruk - coba cari.npmjs.org.) Dengan sedikit pra-pemrosesan Anda kemudian dapat menyaring halaman dinamis dari statis dan mengirimkannya ke penangan permintaan yang benar.
sumber
Ini mungkin akan menjadi sesuatu yang lebih baik karena Anda akan streaming file (s) daripada memuat semuanya ke dalam memori seperti fs.readFile.
sumber
Ini adalah pembaruan untuk jawaban Muhammed Neswine
Di Express 4.x, sendfile telah ditinggalkan dan fungsi sendFile harus digunakan. Perbedaannya adalah sendfile mengambil jalur relatif dan sendFile mengambil jalur absolut. Jadi, __dirname digunakan untuk menghindari hardcoding path.
sumber
Ini cara yang lebih fleksibel dan sederhana untuk menggunakan
pipe
metode.sumber
Cara terbaik yang saya pelajari adalah menggunakan express dengan file html karena express memberikan banyak keuntungan. Anda juga dapat memperluasnya ke platform Heroku jika Anda mau .. Hanya mengatakan :)
Bersih dan terbaik .. !!!
sumber
Cara mudah untuk melakukannya adalah, letakkan semua file Anda termasuk index.html atau sesuatu dengan semua sumber daya seperti CSS, JS dll di folder publik atau Anda dapat menamainya apa pun yang Anda inginkan dan sekarang Anda dapat menggunakan js ekspres dan hanya memberi tahu aplikasi untuk menggunakan _dirname sebagai:
Di server.js Anda menggunakan express tambahkan ini
dan jika Anda ingin memiliki direktori seprate tambahkan dir baru di bawah direktori publik dan gunakan jalur itu "/ public / YourDirName"
Jadi, sebenarnya apa yang kita lakukan di sini? kami membuat aplikasi bernama instance express dan kami memberikan alamat jika direktori publik untuk mengakses semua sumber daya. Semoga ini membantu !
sumber
Bagaimana kalau menggunakan modul kilat?
lalu, Anda dapat menggunakan browser untuk mendapatkan / localhost: 8000
sumber
sumber
response.writeHeader()
, melainkanresponse.writeHead()
,.response.writeHeader()
danresponse.writeHead()
keduanya valid.Saya pikir ini akan menjadi pilihan yang lebih baik karena menampilkan URL yang menjalankan server:
sumber
Anda juga dapat menggunakan potongan ini:
sumber
Ini sangat sederhana jika Anda menggunakan pipa. Berikut ini adalah cuplikan kode server.js.
sumber
../
. Jika tidak melakukan apa pun selain mengubah__dirname + "/index.html'
ke sesuatu seperti__dirname + requestedPageFromHeader
, saya percaya kode yang dihasilkan akan memiliki kerentanan ini. Karakter pathing direktori seperti~
akan baik-baik saja selama Anda memasukkan__dirname +
- jika pengguna dapat menentukan awal path perlu memeriksa ini juga.Saya tahu ini adalah pertanyaan lama - ini adalah utilitas server file sederhana jika Anda memilih untuk tidak menggunakan koneksi atau express; melainkan modul http.
sumber
gunakan ejs bukannya jade
npm install ejs
app.js
./routes/index.js
sumber
Ini adalah pertanyaan yang cukup lama ... tetapi jika use case Anda di sini adalah dengan hanya mengirim halaman HTML tertentu ke browser secara ad hoc, saya akan menggunakan sesuatu yang sederhana seperti ini:
sumber
kita dapat memuat dokumen html dengan kerja bingkai koneksi. Saya telah meletakkan dokumen html saya dan gambar terkait di folder publik proyek saya di mana kode di bawah ini dan modul simpul ada.
Saya telah mencoba metode readFile () dari fs, tetapi gagal memuat gambar, itu sebabnya saya telah menggunakan kerangka koneksi.
sumber
https://gist.github.com/xgqfrms-GitHub/7697d5975bdffe8d474ac19ef906e906
Ini kode demo sederhana saya untuk meng-host file HTML statis dengan menggunakan server Express!
semoga ini membantu anda!
sumber