Node.js开发手册(二)

简介: 一、静态文件服务 如果我们想把磁盘上的文件作为Web内容对外提供服务,那么怎么用Node来实现呢?答案是使用fs模块。我们可以使用fs即filesystem模块载入文件的内容,并把内容通过createServer回调函数传递出去。

一、静态文件服务

如果我们想把磁盘上的文件作为Web内容对外提供服务,那么怎么用Node来实现呢?答案是使用fs模块。
我们可以使用fs即filesystem模块载入文件的内容,并把内容通过createServer回调函数传递出去。提供静态文件服务是Node.js的核心基础功能,应该掌握它。

二、Demo

下面我们创建三个文件,这些文件都会由NodeJS提供静态文件服务。

1. index.html

内容如下:
[html]   view plain copy print ?
  1. html>  
  2.     head>  
  3.         title>Yay Node!title>  
  4.         link rel="stylesheet" href="styles.css" type="text/css" />  
  5.         script src="script.js" type="text/javascript">script>  
  6.     head>  
  7.     body>  
  8.         span id="yay">Yay!span>  
  9.     body>  
  10. html>  

2. script.js

内容如下:
[javascript]   view plain copy print ?
  1. // script.js  
  2. window.onload=function(){  
  3.     alert('Yay Node!');  
  4. };  

3. styles.css

内容如下:
[css]   view plain copy print ?
  1. #yay{  
  2.     font-size5em;  
  3.     backgroundblue;  
  4.     color: yellow;  
  5.     padding0.5em;  
  6. }  

将上面的三个文件放入content目录下。

4. 编写Node程序

创建名为server.js的脚本文件,内容如下:
[javascript]   view plain copy print ?
  1. var http = require('http');  
  2. var path = require('path');  
  3. var fs = require('fs');  
  4.   
  5. http.createServer(function(req, res){  
  6.     var lookup = path.basename(decodeURI(req.url)) || 'index.html',  
  7.     f = 'content/' + lookup;  
  8.     fs.exists(f, function(exists){  
  9.         console.log(exists ? lookup + " is there" : lookup + " doesn't exist");  
  10.     });  
  11. }).listen(8080);  

用supervisor热部署工具执行以上程序:
$ supervisor server.js

在浏览器访问地址:http://localhost:8080/foo
终端显示:
DEBUG: Starting child process with 'node server.js'
foo doesn't exist

在浏览器访问地址:http://localhost:8080/index.html
终端显示:
DEBUG: Starting child process with 'node server.js'
DEBUG: Watching directory '/home/chszs/tmp' for changes.
index.html is there

三、进阶

假定我们想让客户端知道文件的类型,可以通过扩展名进行判断。
修改server.js文件,内容为:
[javascript]   view plain copy print ?
  1. // server.js  
  2. var http = require('http');  
  3. var path = require('path');  
  4. var fs = require('fs');  
  5.   
  6. var mimeTypes = {  
  7.     '.js''text/javascript',  
  8.     '.html''text/html',  
  9.     '.css''text/css'  
  10. };  
  11.   
  12. http.createServer(function(req, res){  
  13.     var lookup = path.basename(decodeURI(req.url)) || 'index.html',  
  14.     f = 'content/' + lookup;  
  15.     fs.exists(f, function(exists){  
  16.         if(exists){  
  17.             fs.readFile(f, function(err, data){  
  18.                 if(err){  
  19.                     res.writeHead(500);  
  20.                     res.end('Server Error!');  
  21.                     return;  
  22.                 }  
  23.                 var headers = {'Content-type': mimeTypes[path.extname]};  
  24.                 res.writeHead(200, headers);  
  25.                 res.end(data);  
  26.             });  
  27.             return;  
  28.         }  
  29.         res.writeHead(404);  
  30.         res.end();  
  31.     });  
  32. }).listen(8080);  

在浏览器地址栏输入
http://localhost:8080/styles.css

http://localhost:8080/script.js
都会在网页上显示文件的内容。

在浏览器地址栏输入
http://localhost:8080/index.html
如图所示:


目录
相关文章
|
NoSQL JavaScript 数据库
Node.js开发手册(四)-Redis数据库访问
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/17660179 Node.js开发手册(四)-Redis数据库访问 作者:chszs,转载需注明。
932 0
|
NoSQL JavaScript 数据库
Node.js开发手册(四)-Redis数据库访问
Node.js开发手册(四)-Redis数据库访问 因工作太忙,本系列的文章中断了很久,现在有机会继续了。 大家要记住,Node.js主要用于构建高性能、高可伸缩性的服务器和客户端应用,它面向的是“实时Web”。
1156 0
|
JavaScript 前端开发 网络架构
Node.js开发手册(一)
一、Node.js简介 Node.js由于其简洁性而受到广泛关注。与PHP或ASP不同,后者在Web服务器和代码间没有间隔,也不需要自定义大量的配置文件。使用Node.js,我们可以创建服务器,自定义它,在代码层交付所有的内容。
1128 0
|
JavaScript 前端开发
Node.js开发手册(二)
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/8981859 Node.js开发手册(二) 作者:chszs,转载需注明。
1099 0
|
JavaScript 网络架构 开发工具
Node.js开发手册(一)
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/8915944 Node.js开发手册(一) 作者:chszs,转载需注明。
1091 0
|
2月前
|
JavaScript Unix Linux
nvm与node.js的安装指南
通过以上步骤,你可以在各种操作系统上成功安装NVM和Node.js,从而在不同的项目中灵活切换Node.js版本。这种灵活性对于管理不同项目的环境依赖而言是非常重要的。
684 11
|
7月前
|
弹性计算 JavaScript 前端开发
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
Node.js 是一种高效的 JavaScript 运行环境,基于 Chrome V8 引擎,支持在服务器端运行 JavaScript 代码。本文介绍如何在阿里云上一键部署 Node.js 环境,无需繁琐配置,轻松上手。前提条件包括 ECS 实例运行中且操作系统为 CentOS、Ubuntu 等。功能特点为一键安装和稳定性好,支持常用 LTS 版本。安装步骤简单:登录阿里云控制台,选择扩展程序管理页面,安装 Node.js 扩展,选择实例和版本,等待创建完成并验证安装成功。通过阿里云的公共扩展,初学者和经验丰富的开发者都能快速进入开发状态,开启高效开发之旅。
|
6月前
|
资源调度 JavaScript 前端开发
前端开发必备!Node.js 18.x LTS保姆级安装教程(附国内镜像源配置)
本文详细介绍了Node.js的安装与配置流程,涵盖环境准备、版本选择(推荐LTS版v18.x)、安装步骤(路径设置、组件选择)、环境验证(命令测试、镜像加速)及常见问题解决方法。同时推荐开发工具链,如VS Code、Yarn等,并提供常用全局包安装指南,帮助开发者快速搭建高效稳定的JavaScript开发环境。内容基于官方正版软件,确保合规性与安全性。
5083 24
|
7月前
|
JavaScript 前端开发 数据可视化
【01】Cocos游戏开发引擎从0开发一款游戏-cocos环境搭建以及配置-Cocos Creator软件系统下载安装-node环境-优雅草卓伊凡
【01】Cocos游戏开发引擎从0开发一款游戏-cocos环境搭建以及配置-Cocos Creator软件系统下载安装-node环境-优雅草卓伊凡
374 2
【01】Cocos游戏开发引擎从0开发一款游戏-cocos环境搭建以及配置-Cocos Creator软件系统下载安装-node环境-优雅草卓伊凡
|
7月前
|
弹性计算 JavaScript 前端开发
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!