21xrx.com
2024-11-05 16:39:37 Tuesday
登录
文章检索 我的文章 写文章
使用Node.js返回HTML网页
2023-06-24 11:22:39 深夜i     --     --
Node js 返回 HTML网页

Node.js是一个流行的服务器端JavaScript运行环境,它可以用于创建高性能、可扩展、高度交互的网络应用程序。其中一个常见的用途是使用Node.js返回HTML网页。

返回HTML网页需要使用Node.js的HTTP模块,该模块可以用来创建HTTP服务器和HTTP客户端。在使用HTTP模块时,我们可以使用“createServer()”方法创建一个HTTP服务器并指定其回调函数。在回调函数中,我们可以指定服务器的响应头和响应体。

以下是一个简单的Node.js程序,用于返回简单的HTML页面:


const http = require('http');

const port = 3000;

const server = http.createServer((req, res) => {

 res.setHeader('Content-Type', 'text/html');

 res.write('<html>');

 res.write('<head><title>Node.js HTML Page</title></head>');

 res.write('<body>');

 res.write('<h1>Hello World!</h1>');

 res.write('</body>');

 res.write('</html>');

 res.end();

});

server.listen(port, () => {

 console.log(`Server running at port ${port}`);

});

在上述代码中,我们首先引入了Node.js的“http”模块,并指定服务器所使用的端口号。然后,我们使用“createServer()”方法创建了一个HTTP服务器,并指定了回调函数。在回调函数中,我们使用“setHeader()”方法设置了响应头的内容类型,然后使用“write()”方法将HTML页面的各个部分写入响应体中,并最终使用“end()”方法结束响应。

要使用Node.js返回动态HTML网页,我们可以使用模板引擎来根据用户请求生成HTML页面。常见的模板引擎包括EJS、Handlebars和Jade/Pug等,其中EJS是最流行的选择之一。

以下是一个简单的Node.js程序,用于返回使用EJS模板引擎生成的动态HTML页面:


const http = require('http');

const port = 3000;

const ejs = require('ejs');

const server = http.createServer((req, res) => {

 res.setHeader('Content-Type', 'text/html');

 const template = `

  <html>

   <head><title>Node.js EJS Page</title></head>

   <body>

    <h1>Hello <%= name %></h1>

   </body>

  </html>

 `;

 const data = { name: 'World' };

 const html = ejs.render(template, data);

 res.write(html);

 res.end();

});

server.listen(port, () => {

 console.log(`Server running at port ${port}`);

});

在上述代码中,我们首先引入了Node.js的“http”模块,并指定服务器所使用的端口号。然后,我们还引入了EJS模板引擎,并使用字符串模板定义了HTML页面的结构和内容。在定义模板时,我们使用了EJS的标签“<%= name %>”来表示页面中动态生成的内容。接下来,我们定义了一个数据对象来保存要在模板中使用的变量值。在回调函数中,我们使用EJS的“render()”方法将模板和数据对象传递给EJS模板引擎来动态生成HTML页面,并直接将HTML页面写入响应体中。

总的来说,使用Node.js返回HTML网页是一种非常简单和快速的方法,可以让我们轻松构建高性能、可扩展的Web应用程序。通过使用模板引擎,我们还可以方便地生成动态HTML页面,以响应用户的各种请求。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复