在上一篇中,用了http模块和fs模块来让html页面呈现出来,但是这样做有缺点,比如我们来看一个例子,例如我现在手上有一个前端写好了的静态文件夹,我想吧它部署在node的静态服务上,你将会发现,如果用原生node,这会是一个十分麻烦和复杂的事情。话不多说,我们先来看一个简单的例子

看上述文件夹结构,test文件夹下面有xixi.html和haha.html ,我现在想让用户当输入127.0.0.1/xixi 的时候显示xixi.html 用户输入127.0.0.1:3000/haha的时候,页面展示haha.html的内容,这里就涉及到了路由的概念

我们在node demo文件夹下新建一个app.js文件,app.js是程序的入口文件

我们首先以file协议的方式在浏览器中浏览xixi.html 和 haha.html

好,我们就是要在node中也实现这样的效果,让用户可以以http的形式来访问这两个页面,话不多说,就是开干,上代码(app.js)

var http = require('http');
var fs = require('fs');var server = http.createServer(function(req,res){res.writeHead(200,{'Content-type':'text/html;charset=utf-8'});if(req.url=='/xixi'){//用户访问的是xixifs.readFile('./test/xixi.html',function(err,data){if(err){//读取失败res.end();return;}res.end(data);})}if(req.url == '/haha'){fs.readFile('./test/haha.html',function(err,data){if(err){res.end();return;}res.end(data);})}})server.listen(3000,'127.0.0.1',function(){console.log('127.0.0.1:3000 服务已开启');
})

 开启node,在浏览器中访问

 

访问xixi正常,因为xixi中没有去请求任何其他的外部文件,而访问haha的时候页面就一直不出来,最后图片也不出来,查看network发现它请求了一个图片文件127.0.0.0:3000/0.jpg

请求了127.0.0.1:3000/0.jpg  因为我们在app.js中没写对这个路由的处理,所以页面就出错了,解决办法

var http = require('http');
var fs = require('fs');var server = http.createServer(function(req,res){console.log(req.url)if(req.url=='/xixi'){//用户访问的是xixifs.readFile('./test/xixi.html',function(err,data){res.writeHead(200,{'Content-type':'text/html;charset=utf-8'});if(err){//读取失败res.end();return;}res.end(data);})}if(req.url == '/haha'){fs.readFile('./test/haha.html',function(err,data){res.writeHead(200,{'Content-type':'text/html;charset=utf-8'});if(err){res.end();return;}res.end(data);})}if(req.url == '/0.jpg'){fs.readFile('./test/0.jpg',function(err,data){res.writeHead(200,{'Content-type':'image/jpg'});if(err){res.end();return;}res.end(data);})}})server.listen(3000,'127.0.0.1',function(){console.log('127.0.0.1:3000 服务已开启');
})

  

这下访问就好了,从我们这 个很小的demo中可以看到,node如果想对静态文件进行处理,是一件很麻烦的事前,因为你要为这个写很多路由,而且你永远也不知道到底每个文件下面又去外链了多少文件,这样写下来,将是一个十分复杂的事前,而且你还要考虑返回文件的mime类型,还有包括缓存问题等,所以这将是一个非常头疼的是,我自己尝试写过一个静态服务的模块,发现虽然可以用,但是通用性不高,而且也没对缓存进行处理,所以node和IIS,appache不一样,哪些老派的服务器,自带静态资源的解析服务,那么在node中有没有非常nb的工具了,肯定是有的,node的社区这么活跃,有一个非常出名觉得框架 express大名鼎鼎,express和node的关系就如同jquery和原生js一样,当然,并不是很恰当,可以这么理解下,关于穿件静态服务在express中就很简单了,只需要一个中间件,一行代码就搞定 app.use(express.static('./test')),这样test下面的资源就可以被访问了,就创建了一个test文件夹下面的静态服务

转载于:https://www.cnblogs.com/fandaxia/p/8317223.html

node创建web静态服务相关推荐

  1. Zend Studio13.6.1创建web services服务

    Zend Studio13.6.1创建web services服务 一.开发环境 1.1 zendstudio13.6.1 1.2 apache httpd-2.4.46-o111j-x64-vc15 ...

  2. 用node搭一个静态服务

    如何搭一个静态服务 新建一个文件夹 初始化 npm init -y 所用到的模块 http-server 起服务 mime chalk debug ejs 所需模块 http fs util path ...

  3. axis idea 设置apache_利用IDEA创建Web Service服务端和客户端的详细过程

    创建服务端 一.file–>new–>project 二.点击next后输入服务端名,点击finish,生成目录如下 三.在 HelloWorld.Java 文件中右击,选 WebServ ...

  4. python网页制作web_使用python创建web静态网站

    建立Django项目 打开pyCharm企业版软件,创建一个Django项目,其中Django是一个Web框架,用于帮助开发交互式网站的工具.生成项目文件如下图所示: image.png 创建网站主页 ...

  5. php如何访问web api,如何在PHP中创建Web API服务?

    SOAP和REST API是广泛使用的API. 考虑存在一个名为manage.php的PHP类,该类有助于管理数据库中的条目.class manage { private $entryId; func ...

  6. node创建web服务器代码示例

  7. Node.js Web 模块(客户端 服务端实例)

    Node.js Web 模块 Web 应用架构 Client - 客户端,一般指浏览器,浏览器可以通过 HTTP 协议向服务器请求数据. Server - 服务端,一般指 Web 服务器,可以接收客户 ...

  8. Eclipse快速创建Bottom Up类型的Web Service服务端

    什么是Buttom 的Up Web Service 简言之就是从一个Java类创建Web Servcie服务(包括WSDL文件,部署描述文件等). 本篇演示环境配置 Eclipse Version: ...

  9. Node.js Web 模块

    Node.js Web 模块 什么是 Web 服务器? Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,Web服务器的基本功能就是提供Web信息浏览服务.它只需支持HTTP协议. ...

最新文章

  1. 用C#或JavaScript扩展XSLT
  2. 分层模型:OSI与TCP/IP
  3. 无人驾驶遇见人工智能 百度将推有“大脑”的汽车
  4. 常用MIME类型,解决IIS布署后字体文件、mp4视频文件等not found 的错误
  5. asp.net gridview 模板列 弹出窗口编辑_【线上课堂】中国(辽宁)国际贸易单一窗口企业资质系统业务操作...
  6. eclipse fat jar 打包插件
  7. 从远程库克隆(转载)
  8. 怎样安装Firebug和FirePath
  9. PDF虚拟打印机怎么虚拟打印
  10. 怎么判断目标点是否在指定地图版块上
  11. 【MyBatis基础】(09)- 逆向工程(代码自动生成)
  12. 前端项目如何使用svg矢量图
  13. Matlab肤色分割
  14. oracle中update,insert,delete的高级用法
  15. Inception神经网络
  16. HTML5游戏开发–第10课
  17. vba批量合并指定的sheet_Excel VBA 多个工作表合并方法
  18. 2021全球与中国智能音频SoC芯片市场现状及未来发展趋势
  19. Word学习笔记:P5-标尺和定位点要如何使用
  20. push button 与 tool button的用法_详解Vue的slot新用法

热门文章

  1. 取代C语言标准输入输出:cin 和 cout【C++标准输入输出】
  2. css入门教程 网页首字下沉,CSS制作首字下沉_CSS Inline Layout Module, initial-letter, CSS3 教程_w3cplus...
  3. matlab 十六进制数组,【MATLAB】MATLAB中读取二进制数据文件并加入到矩阵中
  4. MySQL通过两表避免回表_mysql利用覆盖索引避免回表优化查询
  5. 如何通过 Serverless 提高 Java 微服务治理效率?
  6. 从零开始入门 K8s | 理解 RuntimeClass 与使用多容器运行时
  7. oracle常用的监控,oracle常用性能监控及优化语句
  8. python找人,PythonOpenCV:查找未知人物
  9. vb6 判断打印机是否有效_智能收银机的热敏打印机打不出字怎么办?
  10. getbean方法找不到bean_和平精英:一直找不到敌人?5个方法,让你彻底摆脱“瞎子”...