转自:http://blog.csdn.net/zxsrendong/article/details/16804867
在开始之前,应该好好规划一下项目的文件目录了。我的目录结构如下:
assets放置网站的静态文件css,js,img等;common存放项目的配置文件和一些通用文件;server存放服务处理文件,将要创建的静态文件服务就是放在此目录中; tpl放置的是模板文件也就是网页文件。
文件的下载格式主要是由'Content-Type'的值决定的,要想下载的文件能够正常工作就应该正确的设置不同文件的'Content-Type'值。mime.js文件存放了一些常用mime值:
- exports.mime = {
- "html" : "text/html",
- "css" : "text/css",
- "js" : "text/javascript",
- "json" : "application/json",
- "ico" : "image/x-icon",
- "gif" : "image/gif",
- "jpeg" : "image/jpeg",
- "jpg" : "image/jpeg",
- "png" : "image/png",
- "pdf" : "application/pdf",
- "svg" : "image/svg+xml",
- "swf" : "application/x-shockwave-flash",
- "tiff" : "image/tiff",
- "txt" : "text/plain",
- "wav" : "audio/x-wav",
- "wma" : "audio/x-ms-wma",
- "wmv" : "video/x-ms-wmv",
- "xml" : "text/xml"
- };
先来看server.js和FServer.js的类容:
- // server.js
- var config = require('./common/config');
- var http = require('http');
- var fs = require('fs');
- var url = require('url');
- var path = require('path');
- var FServer = require('./server/FServer');
- function index(){
- var indexPath = config.ui + '/index.html';
- fs.exists(indexPath, function(exists){
- if( !exists ) {
- throw err;
- } else {
- fs.readFile(indexPath, function(err, data){
- if (err) {
- throw err;
- } else {
- function onRequest(req, res){
- // 取得文件路径
- var pathname = url.parse(req.url).pathname;
- // 获取文件扩展名(包含前置.)
- var extname = path.extname( pathname );
- var type = extname.slice(1);
- // 获取下载文件在磁盘上的路径,
- var realPath = config.root + pathname;
- if ( extname === '' ) {
- res.writeHead(200, {'Content-Type':'text/html'});
- res.write(data);
- res.end();
- } else {
- FServer.filesLoad(realPath, type, req, res);
- }
- }
- http.createServer(onRequest).listen(config.port);
- }
- })
- }
- })
- }
- exports.index = index;
- // FServer.js
- var fs = require('fs');
- var mime = require('../common/mime').mime;
- function filesLoad(filePath, type, req, res){
- fs.exists(filePath, function(exists){
- if ( !exists ) {
- res.writeHead(404, {'Content-Type': 'text/plain'});
- // res.write();
- res.end();
- } else {
- fs.readFile(filePath, 'binary', function(err, file){
- if ( err ) {
- res.writeHead(500, {'Content-Type': 'text/plain'});
- // res.write();
- res.end();
- } else {
- res.writeHead(200, {'Content-Type': mime[type]});
- res.write(file, 'binary');
- res.end();
- }
- });
- }
- })
- }
- exports.filesLoad = filesLoad;
上面引入了nodejs的内置模块http、fs、url、path,config和FServer是自定义模块,要读取文件首先要知道文件在磁盘上是否存在,还应当知道文件的类型才能达到想要的效果。运行程序可以发现css和javascript都下载正确,并且css效果在页面上正确渲染(javascript还没有写效果)
相关推荐
在本文中,我们将深入探讨如何使用Node.js和ES6语法实现一个简单的静态文件服务器。Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它允许我们在服务器端使用JavaScript编写高性能的应用程序。而ES6...
例如,可以使用 NodeJs 的核心模块 http 和 fs 来创建一个静态文件服务器。该服务器可以监听客户端的请求,并将相应的静态文件返回给客户端。 路由是 NodeJs 中的一个重要概念,它是由一个 URI 和一个特定的 HTTP ...
通过结合`index.html`和`server.js`,我们可以实现一个简单的静态文件服务器,用户可以通过浏览器访问`http://localhost:3000`来查看`index.html`内容。如果`server.js`被扩展以处理动态请求或提供API服务,那么它还...
四、处理静态文件 1. 使用 `express`:对于更复杂的 Web 应用,推荐使用 Express 框架。安装 `express`:`npm install express`,然后修改代码为: ```javascript const express = require('express'); const app = ...
总结起来,本课程涵盖了Node.js开发WEB服务器的基础知识,包括静态文件的托管、动态路由的设定、EJS模板引擎的使用以及GET和POST请求的处理。通过学习这些内容,你可以构建出能够处理复杂交互的WEB应用程序,并为...
每找到一个文件,就创建一个对象,包含文件的大小、文件名和文件路径,然后将这个对象推入`filesList`数组中。对于文件夹,递归地调用`readFile`函数,以确保目录下所有文件都被遍历到。 在完成文件遍历和大小统计...
总结:通过这个示例,我们学习了如何使用Node.js创建一个静态Web服务器,读取文件系统中的文件,并根据文件类型发送相应的HTTP响应。这个过程涉及到Node.js的核心模块`http`和`fs`,以及MIME类型的使用。这为构建更...
在Windows操作系统上使用Node.js搭建静态文件服务器是一个常见的需求,特别是在开发阶段,它能帮助我们快速地测试网页项目。Node.js作为一个轻量级、高性能的JavaScript运行环境,提供了丰富的库来实现这一功能。本...
在本文中,我们将探讨如何使用Node.js创建一个简单的文件服务器。Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它允许开发者使用JavaScript进行服务器端编程。通过Node.js,我们可以快速地搭建一个能读取和...
在本文中,我们将深入探讨如何使用Node.js搭建一个简单的静态资源Web服务。Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它允许开发者在服务器端使用JavaScript进行编程。`http`模块是Node.js的核心模块之...
在`express`中,我们可以使用`express.static()`中间件来提供静态文件服务: ```javascript app.use(express.static('public')); ``` 假设你的HTML文件位于`public`目录下,用户现在可以通过访问`...
**NodeJS + Express + MongoDB 简单博客系统** 这个项目是一个基于Node.js、Express.js框架和MongoDB数据库构建的简单博客系统。它为初学者提供了一个很好的平台,以了解和实践Web开发中的服务器端编程、路由处理...
这通常包括设置静态文件目录和解析表单数据。以下是如何配置这些部分的示例: ```javascript const express = require('express'); const formidable = require('formidable'); const router = require('./router')...
它涵盖了Node.js的基础知识,包括创建服务器、处理HTTP请求以及静态文件服务等核心概念。 项目的目标是实现一个基础的静态页面引擎和请求引擎,这通常涉及到以下几个关键知识点: 1. **Express框架**:Node.js中...
节点-html-服务器这是一个简单的 nodejs http 服务器,用于提供静态 html 或 JSON 文件脚步: 创建一个新目录npm install serve-static --save (此 --save 将在 package.json 中保存条目以备将来安装) 创建一个新...
本教程将通过一个简单的Node.js项目——"nodejs简单搭建前端后端网站demo",来讲解如何利用Node.js创建一个基本的前后端交互的Web应用。 一、准备工作 在开始之前,确保已经安装了Node.js和npm(Node包管理器)。这...
2. **生成代码**:使用`protoc`工具将`.proto`文件编译为Node.js代码,这将生成`example_pb.js`和`example_grpc_pb.js`文件。 3. **实现服务**:在Node.js中,我们可以创建一个服务实现类,并注册到gRPC服务器: ...
作者通过逐层深入,帮助新手理解使用Node.js搭建静态资源服务器的每一个细节,包括基本的HTTP服务器搭建、文件检查、静态文件映射和路由处理。这些知识对于想要深入了解Web开发和Node.js内部工作原理的人来说非常有...
- 静态文件服务:Node.js应用可能会配置服务静态文件,如HTML、CSS、JS等。 通过分析这个项目,我们可以学习到如何在Node.js环境中搭建一个功能完备的Web应用,包括数据库交互、用户认证、使用NoSQL数据库和反向...
在IT行业中,Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它允许开发者在服务器端使用JavaScript进行开发。Express则是Node.js的一个轻量级Web应用框架,它简化了构建Web服务的过程,使得开发者能够快速...