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初探之实现能向前台返回东西的简单服务器的更多相关文章

  1. Node.js初探之GET方式传输

    Node.js初探之GET方式传输 例子:form用GET方法向后台传东西 html文件: <form action="http://localhost:8080/aaa" ...

  2. Node.js 初探

    概念 Node.js 是构建在Chrome javascript runtime之上的平台,能够很容易的构建快速的,可伸缩性的网络应用程序.Node.js使用事件驱动,非阻塞I/O 模式,这使它能够更 ...

  3. Node.js系列之node.js初探

    官方介绍:Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable n ...

  4. Node.js初探之hello world

    昨天公司内部培训,主讲人王老板对Node.js评价很高,连用几个“变态”来形容,恰好今天周末,有时间来认识下Node.js,对一门新语言最好的认识,是让其输出“hello world”,今天我就利用N ...

  5. Node.js初探之POST方式传输

    小知识:POST比GET传输的数据量大很多 POST发数据--"分段" 实例: 准备一个form.html文件: <!DOCTYPE html> <html> ...

  6. Node.js初探

    1, 设计高性能.Web服务器的几个要点:事件驱动.非阻塞I/O 2,常见Web服务器架构: Web服务器的功能: 接受HTTP请求(GET.POST.DELETE.PUT.PATCH) 处理HTTP ...

  7. Node.js 蚕食计划(二)—— 使用 http 模块搭建 Web 服务器

    Node.js 开发的目的就是为了用 JavaScript 编写 Web 服务器程序 这次就来介绍用 http 模块搭建服务器 一.项目构建 每个 Node 程序都可以看作一个模块,而每个模块都应该有 ...

  8. 【重学Node.js 第5篇】部署项目到腾讯云服务器

    课程介绍看这里:https://www.cnblogs.com/zhangran/p/11963616.html 项目github地址:https://github.com/hellozhangran ...

  9. Node.js进程内存使用查看方法及返回对象的含义

    1 前言 使用process.memoryUsage() ,然后可以得到一个对象如下: var mem = process.memoryUsage(); console.log(mem); 结果: { ...

随机推荐

  1. WordPress菜单“显示选项”无法显示的解决办法

    比较新版本的WordPress会出现点击“外观”——“菜单”右上角的“显示选项”无法打开的问题,而老版本的就没有这个问题,后台的其他页面中的这个 功能都可以正常使用,看来问题是因为中文版WordPre ...

  2. 【前端单元测试入门03】Sinon

    前端测试存在的问题 在讲Sinon之前,我们得先讲一下在学习了Mocha.chai以及enzyme之后,我们的前端测试还存在的一些问题. 比如前台测试需要与后台交互,获取后台数据后再根据相应数据进行测 ...

  3. openlayers渲染mapbox gl的vector tile

    准备条件 https://openlayers.org/en/v4.6.5/build/ol.js https://cdn.polyfill.io/v2/polyfill.min.js DEMO &l ...

  4. 关于 Touchjs 手势识别事件库 this 关键字与选择器不对称情况

    Touchjs 版本 v0.2.14 废话不多,直接看代码,一个拖动实例 <div id="touch-drag"></div> <script ty ...

  5. 《Linux命令行与shell脚本编程大全》- 读书笔记1 - 基本的bash shell 命令

    这本书买了好久了,除了刚到手的那几天翻看了一下以外,竟然到今天都没有看过.突然想要写一个shell脚本,发现什么也不会,是时候开始学习了,今天先把最简单的一章再看一遍顺便做一些笔记,明天继续后面的! ...

  6. 【阿里聚安全·安全周刊】500万台Android设备受感染|YouTube封杀枪支组装视频

    本周的七个关键词:  500万Android 设备受感染丨 黑客将矛头指向无线传输协议 丨  YouTube封杀枪支视频 丨 AMD将发布补丁 丨 Gooligan Android 僵尸网络 丨  N ...

  7. git记录(给老婆找的地址)

    ssh配置 https://blog.igevin.info/posts/generate-ssh-key-for-git/ git 查看某个文件的修改历史 1. git log -p filenam ...

  8. 【Python】 更多数据类型collections&简易数据文件shelve

    ■collections collections在python内建的数据类型基础上新增一些实用的数据类型,其目的在于增加代码的可读性?(虽然我自己没怎么用过..) ① deque 双端队列 q = d ...

  9. 设计模式 --> (9)代理模式

    代理模式 为其他对象提供一种代理以控制对这个对象的访问. 主要解决的问题是:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上.在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大 ...

  10. ava集合---ArrayList的实现原理

    一.ArrayList概述 ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存 ArrayList不是线程安全的,只能用在单线程环境下,多 ...