热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Node.js之在服务端启动网页(一)

varhttprequire(http);创建服务器的varfsrequire(fs);引入进来的是模块,模块中有方法,下一步就是使用方法Node

var http = require('http');//创建服务器的
var fs = require('fs');
//引入进来的是模块,模块中有方法,下一步就是使用方法
//Node.js一个最主要的特点:执行的基本都是函数//创建服务
var myServer = http.createServer(function(req,res){//req->请求变量:客户端请求服务器的//res->响应变量:服务器要给客户端写回的变量//前端页面应该给客户端显示,即写回去//这之前应该先把文件内容读出来var html = fs.readFileSync('./view/index.html')res.write(html);//结束写的操作res.end();})//服务端等着客户端请求需要做一个监听。通过创建的服务。
//监听
myServer.listen('5050',function(err){if(err){console.log(err);throw err;}console.log("服务器已开启。端口号为:5050");
})//浏览器请求服务器。知道当前计算机的ip地址。例如,127.0.0.1:3000

代码如上。步骤:1.ctrl+shift+n ,启动node进行启动5050端口。端口具有唯一性。

                             2.在浏览器 url 中输入 127.0.0.1:5050  ,进行启动服务端。这样就读出了文件内容并显示。

 

客户端和服务端是分离的。

服务器在一台计算机上,浏览器在一台计算机上。要找到服务器上的文件,通过找到计算机IP地址(如127.0.0.1)找到计算机,找到计算机通过端口号(如5050)找到文件,运行的程序就是5050,程序的内容就是读取网页文件,并且写到浏览器上。

上述代码并没有添加逻辑,只是简单的代码。

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

现在呢,让我们尝试着添加逻辑进去。如果我们写这样,那就要跳转到info 页面了。

就上面这个图,我们在var myServer = http.createServer(function(req,res){}中进行如下尝试

//我们打印一下,出来的URL信息应该是info.htmlvar myurl = req.url;console.log(myurl);

如果我们只有 

那么打印出来的结果只有 /  

下图是在CMD中运行的结果,第一次有info.html,第二次没有

所以我们做出下面的优化:

//我们打印一下,出来的URL信息应该是info.htmlvar myurl = req.url=='/'?'./view/index.html':'./view'+req.url ;// console.log(myurl);

我们这时候应该把读写操作放在一起

//我们打印一下,出来的URL信息应该是info.htmlvar myurl = req.url=='/'?'./view/index.html':'./view'+req.url ;//console.log(myurl);//我们还得判断文件是否存在if(fs.existsSync(myurl)){var html = fs.readFileSync(myurl)res.write(html);}//结束写的操作res.end();

 

 PS:: 如果你按照上述步骤操作,在浏览器中打开的网页一直是index.html,不过页面url怎么刷新都不变化。

这时候应该关闭vscode,因为我一直在vscode中进行的查看,而不是cmd。这时候我猜测应该是5050端口被占用了,代码虽然有改动,但是已经被旧代码的端口占用了,他更新不上去。所以关闭vscode重新加载code。然后页面就自动刷新了。一切正常运行。

你输入一个不存在的url路由(如/1232.html),这时候他会返回一个空页面,我们这时候需要进行如下操作。

//我们还得判断文件是否存在if(fs.existsSync(myurl)){var html = fs.readFileSync(myurl)res.write(html);}else{//创建一个专门放错误的文件,当页面不存在的时候跳转过来var errhtml = fs.readFileSync('./view/err/404err.html');res.write(errhtml);}

----------------------------------------------------------------------------------------------------------------------------------------------

这个服务告一段落了,下面一篇文章呢,我们在学习一个服务。Node.js一个服务一个模块。

 

 

 


推荐阅读
  • 本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ... [详细]
  • 使用nodejs爬取b站番剧数据,计算最佳追番推荐
    本文介绍了如何使用nodejs爬取b站番剧数据,并通过计算得出最佳追番推荐。通过调用相关接口获取番剧数据和评分数据,以及使用相应的算法进行计算。该方法可以帮助用户找到适合自己的番剧进行观看。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • ASP.NET2.0数据教程之十四:使用FormView的模板
    本文介绍了在ASP.NET 2.0中使用FormView控件来实现自定义的显示外观,与GridView和DetailsView不同,FormView使用模板来呈现,可以实现不规则的外观呈现。同时还介绍了TemplateField的用法和FormView与DetailsView的区别。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • 在springmvc框架中,前台ajax调用方法,对图片批量下载,如何弹出提示保存位置选框?Controller方法 ... [详细]
author-avatar
愚木小三_563
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有