Node.js初探之实现能向前台返回东西的简单服务器
nodejs
nodejs文件就是一个简单的js文件。
在shell中运行
Step 1. 打开终端,进入这个js文件所在目#录
Step 2. 用 ‘node 文件名.js’
命令运行它即可。
用nodejs写服务器
后台是一直’被‘浏览器请求
request/response | 输入输出 | 内容 |
---|---|---|
请求 | 输入 | 请求的东西 |
响应 | 输出 | 响应的内容 |
实例
用到fs(filesystem),实现一个能够向前台返回东西的简单服务器。
const http = require('http');
const fs = require('fs'); //fs模块用于对系统文件及目录进行读写操作
var server = http.createServer(function(req,res){
var file_name = './www'+req.url;
fs.readFile(file_name,function(err,data){
if(err){
res.write("404");
}else{
res.write(data);
}
res.end();
});
});
server.listen(8080);
用到了res.write(),res.end(),fs.readFile()。
需要注意的是,res.end()的位置,如果放在括号外面
var server = http.createServer(function(req,res){
var file_name = './www'+req.url;
fs.readFile(file_name,function(err,data){
if(err){
res.write("404");
}else{
res.write(data);
}
});
res.end(); //放在括号外面,运行时会导致错误
});
会发生错误的原因是,Node.js支持异步操作(可以同时执行多个任务)。
上面的代码一共两个任务:一个是fs.readFile()读取文件,另一个是res.end()。读取文件的速度慢,还没读取完另一边res.end()就已经执行了(默认服务器端没有数据返回到客户端)。等fs.readFile()完事后回过头一看,天了噜,另一个哥们居然已经跑路了,而且自己也进不去做任务的房间了。
这一点需要注意。所以最后我们把res.end()放在readFile()函数内。
Node.js初探之实现能向前台返回东西的简单服务器的更多相关文章
- Node.js初探之GET方式传输
Node.js初探之GET方式传输 例子:form用GET方法向后台传东西 html文件: <form action="http://localhost:8080/aaa" ...
- Node.js 初探
概念 Node.js 是构建在Chrome javascript runtime之上的平台,能够很容易的构建快速的,可伸缩性的网络应用程序.Node.js使用事件驱动,非阻塞I/O 模式,这使它能够更 ...
- Node.js系列之node.js初探
官方介绍:Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable n ...
- Node.js初探之hello world
昨天公司内部培训,主讲人王老板对Node.js评价很高,连用几个“变态”来形容,恰好今天周末,有时间来认识下Node.js,对一门新语言最好的认识,是让其输出“hello world”,今天我就利用N ...
- Node.js初探之POST方式传输
小知识:POST比GET传输的数据量大很多 POST发数据--"分段" 实例: 准备一个form.html文件: <!DOCTYPE html> <html> ...
- Node.js初探
1, 设计高性能.Web服务器的几个要点:事件驱动.非阻塞I/O 2,常见Web服务器架构: Web服务器的功能: 接受HTTP请求(GET.POST.DELETE.PUT.PATCH) 处理HTTP ...
- Node.js 蚕食计划(二)—— 使用 http 模块搭建 Web 服务器
Node.js 开发的目的就是为了用 JavaScript 编写 Web 服务器程序 这次就来介绍用 http 模块搭建服务器 一.项目构建 每个 Node 程序都可以看作一个模块,而每个模块都应该有 ...
- 【重学Node.js 第5篇】部署项目到腾讯云服务器
课程介绍看这里:https://www.cnblogs.com/zhangran/p/11963616.html 项目github地址:https://github.com/hellozhangran ...
- Node.js进程内存使用查看方法及返回对象的含义
1 前言 使用process.memoryUsage() ,然后可以得到一个对象如下: var mem = process.memoryUsage(); console.log(mem); 结果: { ...
随机推荐
- springboot 整合 MongoDB 实现登录注册,html 页面获取后台参数的方法
springboot简介: Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不 ...
- Unity3D NGUI事件监听的综合管理
首先,将Event Listener挂在按钮上 Event Listener的源码很简单 就是利用C#的时间委托机制 注册了UI场景的事件而已 public class UIEventListener ...
- 特殊权限chattr的用法
1,只能对文件进行追加操作: [root@localhost tmp]# cat yum.log 22222222222222[root@localhost tmp]# chattr +a yum.l ...
- MySQL的奇怪的删表数据文件而表照样能打开
MySQL的奇怪的删表数据文件而表照样能打开 author:headsen chen 2017-11-02 17:57:17 现象:删除一个正在运行的mysql数据库的表的数据文件:* ...
- FMDatabaseQueue 如何保证线程安全
这篇文章原来在用 Github Pages 搭建的博客上,现在决定重新用回博客园,所以把文章搬回来. FMDB 是 OC 针对 sqlite 的封装.在其文档的线程安全部分这样讲:同时从多个线程使用同 ...
- 关于html文档的规范
1. <!DOCTYPE html> 告诉浏览器该文档使用哪种html或xhtml的规范 2. 元数据中的X-UA-Compatible <meta http-equiv=" ...
- react+redux+webpack+git技术栈
一.git bash here mdkr cnpm init -y ls -a ls -l ls -la隐藏的也可查看 cat package.json 二.npm npm i webpack-dev ...
- Redis TTL命令
Redis TTL 命令以秒为单位返回 key 的剩余过期时间. redis TTL 命令基本语法如下: redis 127.0.0.1:6379> TTL KEY_NAME 当 key 不存在 ...
- Nginx正向代理与反向代理
1.正向代理: 正向代理类似一个跳板机,代理访问外部资源. 典型应用:为在防火墙内的局域网客户端提供访问Internet的途径 如:IE例外设置代理服务器 正向代理配置实例:为不影响默认配置:添 ...
- 使用Listview控件显示数据
1.图像列表控件 ImageList是含有图像对象的集合,可以通过索引或关键字引用该集合中的每个对象. ImageList空间的属性 属性 说明 Images 存储在图像列表中的所有图像 ImageS ...