node创建web静态服务
在上一篇中,用了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静态服务相关推荐
- 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 ...
- 用node搭一个静态服务
如何搭一个静态服务 新建一个文件夹 初始化 npm init -y 所用到的模块 http-server 起服务 mime chalk debug ejs 所需模块 http fs util path ...
- axis idea 设置apache_利用IDEA创建Web Service服务端和客户端的详细过程
创建服务端 一.file–>new–>project 二.点击next后输入服务端名,点击finish,生成目录如下 三.在 HelloWorld.Java 文件中右击,选 WebServ ...
- python网页制作web_使用python创建web静态网站
建立Django项目 打开pyCharm企业版软件,创建一个Django项目,其中Django是一个Web框架,用于帮助开发交互式网站的工具.生成项目文件如下图所示: image.png 创建网站主页 ...
- php如何访问web api,如何在PHP中创建Web API服务?
SOAP和REST API是广泛使用的API. 考虑存在一个名为manage.php的PHP类,该类有助于管理数据库中的条目.class manage { private $entryId; func ...
- node创建web服务器代码示例
- Node.js Web 模块(客户端 服务端实例)
Node.js Web 模块 Web 应用架构 Client - 客户端,一般指浏览器,浏览器可以通过 HTTP 协议向服务器请求数据. Server - 服务端,一般指 Web 服务器,可以接收客户 ...
- Eclipse快速创建Bottom Up类型的Web Service服务端
什么是Buttom 的Up Web Service 简言之就是从一个Java类创建Web Servcie服务(包括WSDL文件,部署描述文件等). 本篇演示环境配置 Eclipse Version: ...
- Node.js Web 模块
Node.js Web 模块 什么是 Web 服务器? Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,Web服务器的基本功能就是提供Web信息浏览服务.它只需支持HTTP协议. ...
最新文章
- 用C#或JavaScript扩展XSLT
- 分层模型:OSI与TCP/IP
- 无人驾驶遇见人工智能 百度将推有“大脑”的汽车
- 常用MIME类型,解决IIS布署后字体文件、mp4视频文件等not found 的错误
- asp.net gridview 模板列 弹出窗口编辑_【线上课堂】中国(辽宁)国际贸易单一窗口企业资质系统业务操作...
- eclipse fat jar 打包插件
- 从远程库克隆(转载)
- 怎样安装Firebug和FirePath
- PDF虚拟打印机怎么虚拟打印
- 怎么判断目标点是否在指定地图版块上
- 【MyBatis基础】(09)- 逆向工程(代码自动生成)
- 前端项目如何使用svg矢量图
- Matlab肤色分割
- oracle中update,insert,delete的高级用法
- Inception神经网络
- HTML5游戏开发–第10课
- vba批量合并指定的sheet_Excel VBA 多个工作表合并方法
- 2021全球与中国智能音频SoC芯片市场现状及未来发展趋势
- Word学习笔记:P5-标尺和定位点要如何使用
- push button 与 tool button的用法_详解Vue的slot新用法
热门文章
- 取代C语言标准输入输出:cin 和 cout【C++标准输入输出】
- css入门教程 网页首字下沉,CSS制作首字下沉_CSS Inline Layout Module, initial-letter, CSS3 教程_w3cplus...
- matlab 十六进制数组,【MATLAB】MATLAB中读取二进制数据文件并加入到矩阵中
- MySQL通过两表避免回表_mysql利用覆盖索引避免回表优化查询
- 如何通过 Serverless 提高 Java 微服务治理效率?
- 从零开始入门 K8s | 理解 RuntimeClass 与使用多容器运行时
- oracle常用的监控,oracle常用性能监控及优化语句
- python找人,PythonOpenCV:查找未知人物
- vb6 判断打印机是否有效_智能收银机的热敏打印机打不出字怎么办?
- getbean方法找不到bean_和平精英:一直找不到敌人?5个方法,让你彻底摆脱“瞎子”...