Saya ingin menjalankan server HTTP yang sangat sederhana. Setiap permintaan GET example.com
harus index.html
dilayani tetapi sebagai halaman HTML biasa (yaitu, pengalaman yang sama seperti ketika Anda membaca halaman web normal).
Dengan menggunakan kode di bawah ini, saya dapat membaca konten index.html
. Bagaimana cara saya melayani index.html
sebagai halaman web biasa?
var http = require('http');
var fs = require('fs');
var index = fs.readFileSync('index.html');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end(index);
}).listen(9615);
Satu saran di bawah ini rumit dan mengharuskan saya untuk menulis get
baris untuk setiap file sumber daya (CSS, JavaScript, gambar) yang ingin saya gunakan.
Bagaimana saya bisa melayani satu halaman HTML dengan beberapa gambar, CSS dan JavaScript?
Jawaban:
Server Node.js yang paling sederhana hanyalah:
Sekarang Anda dapat menjalankan server melalui perintah berikut:
Jika Anda menggunakan NPM 5.2.0 atau lebih baru, Anda dapat menggunakannya
http-server
tanpa menginstalnyanpx
. Ini tidak disarankan untuk digunakan dalam produksi tetapi merupakan cara yang bagus untuk menjalankan server dengan cepat di localhost.Atau, Anda dapat mencoba ini, yang membuka browser web Anda dan mengaktifkan permintaan CORS:
Untuk opsi lainnya, lihat dokumentasi untuk
http-server
di GitHub , atau jalankan:Banyak fitur bagus lainnya dan penyebaran sederhana-mati-otak ke NodeJitsu.
Garpu Fitur
Tentu saja, Anda dapat dengan mudah menambah fitur dengan garpu Anda sendiri. Anda mungkin menemukan itu sudah dilakukan di salah satu dari 800+ garpu proyek ini yang ada:
Server Ringan: Alternatif Penyegaran Otomatis
Alternatif yang bagus
http-server
adalahlight-server
. Ini mendukung menonton file dan menyegarkan otomatis dan banyak fitur lainnya.Tambahkan ke menu konteks direktori Anda di Windows Explorer
Server JSON REST sederhana
Jika Anda perlu membuat server REST sederhana untuk proyek prototipe, maka json-server mungkin yang Anda cari.
Editor Penyegaran Otomatis
Sebagian besar editor halaman web dan alat IDE sekarang termasuk server web yang akan menonton file sumber Anda dan secara otomatis me-refresh halaman web Anda ketika mereka berubah.
Saya menggunakan Server Langsung dengan Visual Studio Code.
The open source editor teks Kurung juga termasuk NodeJS web server statis. Cukup buka file HTML apa pun dalam kurung, tekan " Live Preview " dan itu memulai server statis dan membuka browser Anda di halaman. Browser akan ** menyegarkan secara otomatis setiap kali Anda mengedit dan menyimpan file HTML. Ini sangat berguna saat menguji situs web adaptif. Buka halaman HTML Anda di beberapa browser / ukuran / perangkat jendela. Simpan halaman HTML Anda dan langsung lihat apakah hal-hal adaptif Anda berfungsi karena semuanya menyegarkan otomatis.
Pengembang PhoneGap
Jika Anda mengode aplikasi seluler hybrid , Anda mungkin tertarik untuk mengetahui bahwa tim PhoneGap mengambil konsep penyegaran otomatis ini dengan menggunakan Aplikasi PhoneGap baru mereka . Ini adalah aplikasi seluler generik yang dapat memuat file HTML5 dari server selama pengembangan. Ini adalah trik yang sangat licin karena sekarang Anda dapat melewati langkah kompilasi / penyebaran lambat dalam siklus pengembangan Anda untuk aplikasi seluler hybrid jika Anda mengubah file JS / CSS / HTML - yang sering Anda lakukan. Mereka juga menyediakan server web NodeJS statis (jalankan
phonegap serve
) yang mendeteksi perubahan file.PhoneGap + Sencha Touch Developers
Saya sekarang telah secara luas mengadaptasi server statis PhoneGap & Aplikasi Pengembang PhoneGap untuk pengembang Sencha Touch & jQuery Mobile. Lihat di Sencha Touch Live . Mendukung --qr QR Codes dan --localtunnel yang proksi server statis Anda dari komputer desktop Anda ke URL di luar firewall Anda! Banyak kegunaan. Speedup besar-besaran untuk pengembang ponsel hybrid.
Pengembang Kerangka Ionik Cordova +
Server lokal dan fitur penyegaran otomatis dimasukkan ke
ionic
alat. Jalankan sajaionic serve
dari folder aplikasi Anda. Bahkan lebih baik ...ionic serve --lab
untuk melihat tampilan baru secara otomatis dari iOS dan Android.sumber
npm install live-server -g
jika Anda menginginkan hal yang sama, tetapi dengan memuat ulang secara otomatis ketika mendeteksi perubahan filehttp-server -a localhost
Anda dapat menggunakan Connect dan ServeStatic dengan Node.js untuk ini:
Instal connect and serve-static dengan NPM
Buat file server.js dengan konten ini:
Jalankan dengan Node.js
Anda sekarang dapat pergi ke
http://localhost:8080/yourfile.html
sumber
Lihatlah intinya . Saya mereproduksi di sini untuk referensi, tetapi intinya telah diperbarui secara teratur.
Memperbarui
Intinya menangani file css dan js. Saya sudah menggunakannya sendiri. Menggunakan baca / tulis dalam mode "biner" bukan masalah. Itu hanya berarti bahwa file tidak ditafsirkan sebagai teks oleh pustaka file dan tidak terkait dengan tipe konten yang dikembalikan dalam respons.
Masalah dengan kode Anda adalah Anda selalu mengembalikan tipe konten "teks / polos". Kode di atas tidak mengembalikan tipe konten apa pun, tetapi jika Anda hanya menggunakannya untuk HTML, CSS, dan JS, browser dapat menyimpulkannya dengan baik. Tidak ada tipe konten yang lebih baik dari yang salah.
Biasanya tipe konten adalah konfigurasi server web Anda. Jadi saya minta maaf jika ini tidak menyelesaikan masalah Anda , tetapi itu bekerja untuk saya sebagai server pengembangan sederhana dan berpikir itu mungkin membantu beberapa orang lain. Jika Anda benar-benar perlu tipe konten dalam respons, Anda harus mendefinisikannya secara eksplisit sebagai joeytwiddle memiliki atau menggunakan perpustakaan seperti Connect yang memiliki default yang masuk akal. Yang menyenangkan tentang ini adalah bahwa itu sederhana dan mandiri (tidak ada ketergantungan).
Tapi saya merasakan masalah Anda. Jadi di sini adalah solusi gabungan.
sumber
fs.exists()
sudah usang sekarang. Tangkap kesalahan padafs.stat()
daripada menciptakan kondisi balapan.Anda tidak perlu mengungkapkan. Anda tidak perlu terhubung. Node.js tidak http NATIVELY. Yang perlu Anda lakukan adalah mengembalikan file yang tergantung pada permintaan:
Contoh yang lebih lengkap yang memastikan permintaan tidak dapat mengakses file di bawah direktori-dasar, dan melakukan penanganan kesalahan yang tepat:
sumber
node thisfile.js
. Itu akan berjalan, mendengarkan koneksi baru dan mengembalikan hasil baru, sampai A. itu ditutup oleh sinyal, atau B. beberapa kesalahan gila entah bagaimana menyebabkan penghentian program.Saya pikir bagian yang Anda lewatkan saat ini adalah yang Anda kirim:
Jika Anda ingin peramban web merender HTML, Anda harus mengubahnya ke:
sumber
<style>
tag.Step1 (command prompt di dalam [Saya harap Anda cd KE FOLDER ANDA]):
npm install express
Langkah 2: Buat file server.js
Harap dicatat, Anda harus menambahkan WATCHFILE (atau menggunakan nodemon) juga. Kode di atas hanya untuk server koneksi sederhana.
LANGKAH 3:
node server.js
ataunodemon server.js
Sekarang ada metode yang lebih mudah jika Anda hanya ingin meng-host server HTTP sederhana.
npm install -g http-server
dan buka direktori dan jenis kami
http-server
https://www.npmjs.org/package/http-server
sumber
Cara cepat:
Jalanmu:
sumber
Daripada berurusan dengan pernyataan switch, saya pikir lebih baik untuk mencari jenis konten dari kamus:
sumber
Ini pada dasarnya adalah versi terbaru dari jawaban yang diterima untuk koneksi versi 3:
Saya juga menambahkan opsi default sehingga index.html disajikan sebagai default.
sumber
Anda tidak perlu menggunakan modul NPM apa pun untuk menjalankan server sederhana, ada perpustakaan yang sangat kecil yang disebut " NPM Free Server " untuk Node:
50 baris kode, keluaran jika Anda meminta file atau folder dan memberikannya warna merah atau hijau jika gagal untuk bekerja. Ukurannya kurang dari 1KB (diperkecil).
sumber
var filename = path.join(process.cwd() + '/dist/', uri);
ke server dari folder dist . Saya memasukkan kodeserver.js
dan hanya berfungsi ketika saya mengetiknpm start
jika Anda memiliki simpul yang diinstal pada PC Anda, mungkin Anda memiliki NPM, jika Anda tidak memerlukan hal-hal NodeJS, Anda dapat menggunakan paket servis untuk ini:
1 - Instal paket pada PC Anda:
2 - Sajikan folder statis Anda:
Ini akan menunjukkan kepada Anda port mana folder statis Anda sedang dilayani, cukup arahkan ke host seperti:
sumber
Saya menemukan perpustakaan yang menarik di npm yang mungkin berguna bagi Anda. Ini disebut mime (
npm install mime
atau https://github.com/broofa/node-mime ) dan dapat menentukan tipe mime dari suatu file. Berikut adalah contoh server web yang saya tulis menggunakannya:Ini akan menayangkan file teks atau gambar biasa (.html, .css, .js, .pdf, .jpg, .png, .m4a dan .mp3 adalah ekstensi yang telah saya uji, tetapi menurut teori itu harus berfungsi untuk semuanya)
Catatan Pengembang
Ini adalah contoh dari output yang saya dapatkan:
Perhatikan
unescape
fungsi dalam pembangunan jalur. Ini untuk memungkinkan nama file dengan spasi dan karakter yang disandikan.sumber
Edit:
Aplikasi sampel Node.js. Node Chat memiliki fungsi yang Anda inginkan.
Di dalamnya README.textfile
3. Langkah adalah apa yang Anda cari.
Berikut ini adalah server.js
Inilah util.js
sumber
.readFileSync
dalam panggilan balik. Dengan node.js kita menggunakan IO non blocking. Tolong jangan rekomendasikanSync
perintah.Cara saya melakukannya adalah dengan pertama-tama menginstal server statis node secara global
lalu arahkan ke direktori yang berisi file html Anda dan mulai dengan server statis
static
.Buka browser dan ketik
localhost:8080/"yourHtmlFile"
.sumber
Saya pikir Anda di mana mencari ini. Di index.html Anda, cukup isi dengan kode html normal - apa pun yang ingin Anda render di atasnya, seperti:
sumber
Pada dasarnya menyalin jawaban yang diterima, tetapi menghindari membuat file js.
Menemukannya sangat convinient.
Memperbarui
Pada versi terbaru Express, serve-static telah menjadi middleware terpisah. Gunakan ini untuk melayani:
Instal
serve-static
dulu.sumber
dari w3schools
sangat mudah untuk membuat server simpul untuk melayani file apa pun yang diminta, dan Anda tidak perlu menginstal paket apa pun untuk itu
http: // localhost: 8080 / file.html
akan melayani file.html dari disk
sumber
Anda bisa mengetiknya di shell Anda
Repo: https://github.com/zeit/serve .
sumber
Saya menggunakan kode di bawah ini untuk memulai server web sederhana yang membuat file html default jika tidak ada file yang disebutkan dalam Url.
Ini akan membuat semua file js, css dan gambar, bersama dengan semua konten html.
Setuju pada pernyataan " Tidak ada tipe konten yang lebih baik daripada yang salah "
sumber
Saya tidak yakin apakah ini yang Anda inginkan, namun, Anda dapat mencoba mengubah:
untuk ini:
Ini akan membuat klien browser menampilkan file sebagai html bukan teks biasa.
sumber
sumber
Content-Type
harustext/html
, seperti yang didefinisikan dengan cara itu:Content-Type := type "/" subtype *[";" parameter]
.Versi 4.x verbose express yang sedikit lebih banyak tetapi menyediakan daftar direktori, kompresi, caching dan permintaan masuk dalam jumlah minimal baris
sumber
Jumlah jawaban rumit yang gila di sini. Jika Anda tidak bermaksud memproses file / basis data nodeJS tetapi hanya ingin menyajikan html / css / js / gambar statis seperti yang disarankan pertanyaan Anda, cukup instal pushstate-server modul atau yang serupa;
Inilah "satu liner" yang akan membuat dan meluncurkan situs mini. Cukup tempelkan seluruh blok di terminal Anda di direktori yang sesuai.
Buka browser dan buka http: // localhost: 3000 . Selesai
Server akan menggunakan
app
dir sebagai root untuk melayani file dari. Untuk menambahkan aset tambahan cukup tempatkan mereka di dalam direktori itu.sumber
npm install pushstate-server --save; touch server.js; echo "var server = require('pushstate-server');server.start({ port: 3000, directory: './' });" > server.js; node server.js
Sudah ada beberapa solusi hebat untuk yang sederhana
nodejs server
. Ada satu solusi lagi jika Anda perlulive-reloading
saat Anda membuat perubahan pada file Anda.arahkan direktori Anda dan lakukan
itu akan membuka browser untuk Anda dengan live-reload.
sumber
Fungsi Express sendFile melakukan apa yang Anda butuhkan, dan karena Anda menginginkan fungsionalitas server web dari node, express menjadi pilihan alami dan kemudian menyajikan file statis menjadi semudah:
baca lebih lanjut di sini: https://expressjs.com/en/api.html#res.sendFile
Contoh kecil dengan server web ekspres untuk simpul:
jalankan ini, dan arahkan ke http: // localhost: 8080
Untuk memperluas ini agar Anda dapat melayani file statis seperti css dan gambar, berikut adalah contoh lain:
jadi buat subfolder bernama css, masukkan konten statis Anda di dalamnya, dan itu akan tersedia untuk index.html Anda untuk referensi mudah seperti:
Perhatikan jalur relatif di href!
voila!
sumber
Sebagian besar jawaban di atas menggambarkan dengan sangat baik bagaimana konten disajikan. Apa yang saya cari sebagai tambahan adalah daftar direktori sehingga isi direktori lain dapat diramban. Inilah solusi saya untuk pembaca lebih lanjut:
sumber
Ini adalah salah satu solusi tercepat yang saya gunakan untuk melihat halaman web dengan cepat
Mulai saat itu cukup masukkan direktori file html Anda dan jalankan
kemudian ubah perangkat ke lansekap Nexus 7.
sumber
Versi sederhana yang saya temui adalah sebagai berikut. Untuk tujuan pendidikan, yang terbaik, karena tidak menggunakan perpustakaan abstrak.
Sekarang buka browser dan buka berikut ini:
Di sini
image.jpg
harus dalam direktori yang sama dengan file ini. Semoga ini bisa membantu seseorang :)sumber
Saya juga dapat merekomendasikan SugoiJS, sangat mudah untuk mengatur dan memberikan opsi untuk mulai menulis cepat dan memiliki fitur-fitur hebat.
Lihatlah di sini untuk memulai: http://demo.sugoijs.com/ , dokumentasi: https://wiki.sugoijs.com/
Ini memiliki permintaan menangani dekorator, kebijakan permintaan dan dekorator kebijakan otorisasi.
Sebagai contoh:
sumber
Sangat mudah dengan banyak perpustakaan yang hadir hari ini. Jawaban di sini fungsional. Jika Anda ingin versi lain untuk memulai lebih cepat dan sederhana
Tentu saja instal node.js. Kemudian:
Di sini isi " https://raw.githubusercontent.com/voxsoftware/kawix-core/master/example/npmrequire/express-static.js " (Anda tidak perlu mengunduhnya, saya diposting untuk memahami cara kerjanya)
sumber