This is a sample basic Node.js website using plain HTML files and the built in http and fs modules.
This tutorial will walk you through the creation of a very basic website using only Node.js built in modules. Follow these steps to create a Node.js website:
- Create a folder for your Node.js project.
- Create a home page HTML and call it
index.html. Add the required HTML tags and some basic content in theindex.htmlfile. - Create a second file and for now, call it
another-page.html. Add the required HTML tags and some basic content in theanother-page.htmlfile. - Add a link in the
index.htmlpage toanother-page.html. And add a link in theanother-page.htmltoindex.html. This will allow for easy testing of pages. - Create a new file called
app.js. - In
app.jsimport the required modules:
var http = require('http'); var url = require('url'); var fs = require('fs');- Create an http server:
http.createServer(function (req, res) { }).listen(8080);This will start a web server. The server is available to test by opening a browser and using the URL http://localhost:8080/index.html.
- Inside the
createServerfunction add code to fetch the current URL:
var q = url.parse(req.url, true); var filename = "." + q.pathname;- Inside the
createServerfunction, after the the previous lines of code, add code to load the appropriate HTML file based on the URL. For example the URLhttp://localhost:8080/index.htmlwill load theindex.htmlfile.
fs.readFile(filename, function(err, data) { res.writeHead(200, {'Content-Type': 'text/html'}); res.write(data); return res.end(); });- Inside the
readFilefunction, add code that will display an error message in case the requested URL does not match an exsting file:
if (err) { res.writeHead(404, {'Content-Type': 'text/html'}); return res.end("404 Not Found"); } - To test your Node.js website, open up a terminal, use
cdto navigate to your project folder, and usenode app.jsto start your file. Then open a browser and visit the URLhttp://localhost:8080/index.html.
Your final code in app.js should look like this:
var http = require('http'); var url = require('url'); var fs = require('fs'); http.createServer(function (req, res) { var q = url.parse(req.url, true); var filename = "." + q.pathname; fs.readFile(filename, function(err, data) { if (err) { res.writeHead(404, {'Content-Type': 'text/html'}); return res.end("404 Not Found"); } res.writeHead(200, {'Content-Type': 'text/html'}); res.write(data); return res.end(); }); }).listen(8080);- Visual Studio Code or Brackets (or any code editor)
- Filezilla (or any FTP program)
- Node.js
Full tutorial URL: https://codeadam.ca/learning/nodejs/nodejs-website.html