根据用户不同请求返回不同html文件(带图片)|学习笔记

简介: 快速学习根据用户不同请求返回不同html文件(带图片)

开发者课程【Node.js 入门与实战根据用户不同请求返回不同html文件(带图片)】学习笔记,与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/588/detail/8262


根据用户不同请求返回不同html文件(带图片)

 

目录

一、通过node.js 编写http服务程序

二、解决服务器无法正常返回图片的方法

 

一、通过node.js 编写http服务程序–通过读取静态-HTML·文件来响应用户请求(带图片和外部CSS样式)的操作示例

代码示例:

//根据用户不同请求,做出不同响应(响应现有的HTML文件)

//加载- http模块

var-http-= -require( 'http');

//加载fs模块

var fs = require( 'fs ');

//加载path模块

var path = require( " path');

//创建http服务,并启动该服务

http.createServer(function (req, res) {

//通过req.url 获取用户请求的路径,根据不同的请求路径服务器做出不同的响应

if (req.url === '/'|| req.url === " /index ' ) {

//读取 index.html文件

fs.readFile(path.join(__dirname,'htmls ', 'index.html'), function (err,data){

if (err)

{

throw err;

} 

//把读取到的 index.html中的内容直接发送给浏览器

res.end(data);

});

}else if (req.url == '/login') {

//读取index.html文件

fs.readFile(path.join(__dirname,'htmls ', 'login.html'), function (err,data){

if (err) {

throw err;

}

//把读取到的 index.html中的内容直接发送给浏览器

res.end(data);

});

}else if (req.url *** ' /list') {

//读取index.html文件

fs.readFile(path.join(__dirname,’htmls ‘,‘list.html'),function (err,data) {

if (err) {

throw err;

}

//把读取到的index.html中的内容直接发送给浏览器res.end(data);

});

}else if (req.url *** ’/register’){

//读取index,html文件

fs.readFile(path.join(__dirname,'htmls ' , 'register.html '), function (err,data){

if (err) {

throw err;

}

//把读取到的 index . html中的内容直接发送给浏览器

res.end(data);

});

}else{

//读取index. html文件

fs.readFile(path.join(__dirname,"htmls ',‘404.html' ),function (err,data){

if (err) {

throw err;

} 

//把读取到的index.html 中的内容直接发送给浏览器

res.end(data);

});

}

}).listen(9090,function () {

console.log( ‘http:// localhost: 9090');

}); 

注意事项

1.上面显示的是读取多个不同 html 文件的操作,若要读取成功,那首要的因素是,先创建好相应的 html 文件,其次是写好文件拼接,运用好 path 模块。

2. 异步操作时,只能用 err 捕获错误,不能用 try catch 来捕获错误,否则无法捕获错误。 

执行结果:

已经启动9090端口号,服务没有停止,如果再次启动,则会报错,无法进行重复启动。

image.png

测试9090端口号:

进入网址http:// localhost: 9090,反应出如下画面:

image.png

根目录可以看到index。

进入网址locallhost:9090/login,显示界面如下:与上面是一样的)

测试成功。

实验:

1. 首先选择一张图片,将图片拷贝到当前测试的目录下,当用户请求index读取并返回

image.png

2. 创建一个新的项目index.html

代码:

<! DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>Hello Index</title>

</ head>

<body>

<h1 style="color: red; ">Hello Index</h1><h1>你好首页!!!看乱码吗?</h1>

..<img .src="../images/index.png" -alt="index·图片">

</ body>

</ html>

3. 重新启动服务 

4. 再次启动回车执行代码,进入网址后无法显示出存放的图片:

image.png

原因:

1. 打开开发工具,发现网页内容已经返回用户,并且包含图片框。

2. 对于图片的请求返回的是text/html并不是图片,请求的最终路径是/images/index.png

image.png

3. 将路径/images/index.png复制到浏览器并进入,出现如下错误:

image.png

虽然请求的是一张图片,但是服务器发现并没有请求图片的应用语句的判断,最终执行:

}else {

//读取index.html文件

fs.readFile(path.join(__dirname,  'htmls ' , '404.html '), function-(err , data)

if (err){

throw- err;

//读取到的index.html-中的内容直接发送给浏览器

res.end(data);

}); 

并返回404错误页面。 

 

二、解决服务器无法正常返回图片的方法

1.输入代码:

}else if (req.url === '/images/index.png')

//表示用户要请求images下的index.png图片

fs.readFile(path.join(__dirname,'images ', 'index.png'),function (err,data){

if (err) {

throw err;

}

res.setHeader( ' Content-Type', 'image/png');

//把读取到的index.html中的内容直接发送给浏览器res.end(data);

});

进入网页开源中国,点击常用对照表下的HTTP Mime-type,就会看到不同后缀对应不同的类型的地址。.png所对应的是image/png 

2.由于修改了代码,需要重新启动服务器

3.再进入网址,图片显示成功  image.png

注意:使用node.js编写服务器的时候,每一个请求都需要去判断,如果不判断,用户就不会得到响应

 

相关文章
|
3月前
|
移动开发 前端开发 JavaScript
基于 HTML5 和 Canvas 开发的在线图片编辑器
基于 HTML5 和 Canvas 开发的在线图片编辑器
68 0
|
2天前
|
JavaScript 前端开发 Java
SpringBoot项目的html页面使用axios进行get post请求
SpringBoot项目的html页面使用axios进行get post请求
14 6
|
4天前
|
前端开发
Twaver-HTML5基础学习(37)network导出图片并下载
本文介绍了如何在Twaver-HTML5中将network导出为图片并提供下载,主要通过将network转换为canvas对象,然后转换为base64编码的图片进行展示和下载。
19 5
|
21天前
|
前端开发 Windows
【前端web入门第一天】02 HTML图片标签 超链接标签 音频标签 视频标签
本文档详细介绍了HTML中的图片、超链接、音频和视频标签的使用方法。首先讲解了`&lt;img&gt;`标签的基本用法及其属性,包括如何使用相对路径和绝对路径。接着介绍了`&lt;a&gt;`标签,用于创建超链接,并展示了如何设置目标页面打开方式。最后,文档还涵盖了如何在网页中嵌入音频和视频文件,包括简化写法及常用属性。
32 13
|
20天前
|
Web App开发 前端开发 JavaScript
HTML/CSS/JS学习笔记 Day3(HTML--网页标签 下)
HTML/CSS/JS学习笔记 Day3(HTML--网页标签 下)
|
2月前
在线将多张图片拼接起来图工具HTML源码
在线将多张图片拼接成一张图片,多图合一并导出下载。无需本地安装软件。 下载时,使用日期时间作为文件名,规避图片文件名相同造成的覆盖问题;也能省去一部覆盖确认操作 多语言支持
28 0
在线将多张图片拼接起来图工具HTML源码
|
2月前
写一个HTML文件
【8月更文挑战第27天】写一个HTML文件。
25 1
|
2月前
|
存储 缓存 移动开发
不来看一看HTML请求后端性能优化的实战总结吗?
本文主要总结了在ICBU的核心沟通场景下服务端在此次性能优化过程中做的工作,供大家参考讨论。
|
2月前
|
Python
Python 下载 html 中的 图片
Python 下载 html 中的 图片
25 2
|
2月前
【Azure 应用服务】部署Azure Web App时,是否可以替换hostingstart.html文件呢?
【Azure 应用服务】部署Azure Web App时,是否可以替换hostingstart.html文件呢?
下一篇
无影云桌面