一、第一个Node代码

1. 运行Node.js

  通过node E:\Node代码\hello.js运行代码;Node.js是服务器的程序,写的js语句都将运行在服务器上。返回给客户的,都是已经处理好的纯HTML

// require表示引包,引包就是引用自己的一个特殊功能
var http = require("http")
// 创建服务器,参数是一个回调函数,表示有请求进来,要做什么
var server = http.createServer(function(req,res){
// req表示请求,request;res表示响应,response
// 设置HTTP头部,状态码是200,文件类型是html,字符集UTF8
res.writeHead(200,{"Content-type":"text/html;charset=UTF-8"});
res.end("Hello World")
}); // 运行服务器
server.listen(8088,"127.0.0.1");

2. Node.js执行HTML

  Node.js没有根目录的概念,因为它根本没有任何的web容器!所有静态资源都需要写入路由。URL和真实物理文件是没有关系的,URL是通过Node的顶层路由设计,呈递某一个静态文件。

// require表示引包,引包就是引用自己的一个特殊功能
var http = require("http");
// fs读取文件的
var fs = require("fs"); var server = http.createServer(function(req, res) {
if(req.url == "/fang"){
fs.readFile("./test.html", function(err, data) {
res.writeHead(200, {"Content-type": "text/html;charset=UTF-8"});
res.end(data);
});
}else if (req.url == "/yuan") {
fs.readFile("./test2.html", function(err, data) {
res.writeHead(200, {"Content-type": "text/html;charset=UTF-8"});
res.end(data);
});
}else if(req.url == "/img"){
fs.readFile("./img.jpg", function(err, data) {
res.writeHead(200, {'Content-Type':'image/jpg'});
res.end(data);
});
}else{
res.writeHead(404, {"Content-type": "text/html;charset=UTF-8"});
res.end("么有");
} });
// 运行服务器
server.listen(8088, "127.0.0.1");

二、HTTP模块

  我们知道传统的HTTP服务器是由Aphche、Nginx、IIS之类的软件来搭建的,但是Nodejs并不需要,Nodejs提供了http模块,自身就可以用来构建服务器。

//require引用模块
var http = require("http"); //创建一个服务器,回调函数表示接收到请求之后做的事情
var server = http.createServer(function(req,res){
res.writeHead(200,{"content-type":"text/html"});
//req参数表示请求,res表示响应;必须有一个res.end()
console.log("服务器接收到了请求" + req.url);
res.write("<h1>主标题1<h1>");
res.end("<h1>主标题2<h1>");
}); //监听端口
server.listen(3000,"127.0.0.1");

  http模块中封装了一个HTTP服务器和一个简易的HTTP客户端:http.Server()用于创建是一个基于事件的HTTP服务器,而http.request()和http.get()可以作为客户端向HTTP服务器发起请求。在这里使用的createServer()方法返回了一个http.Server对象,text/plain的意思是将文件设置为纯文本格式,浏览器在获取到这种文件时并不会对其进行处理,如果将content-type设置为text/html,浏览器在获取到这种文件时会自动调用HTML的解析器对文件进行相应的处理。另外,也可以用new http.Server()构造函数的方法创建http.Server对象。

  http.Server的事件,http.Server最常用的事件是"request",当接收到http请求时触发。在"request"事件中,传入回调函数的参数req和res分别是http.IncomingMessage和http.ServerResponse的实例:http.IncomingMessage类包含了从客户端发来的http请求信息,它可以用来访问响应状态、消息头、以及数据等;http.ServerResponse类是返回给客户端的信息,它有三个重要的方法,用于返回响应头、响应内容以及结束请求。

  writeHead(statusCode[, statusMessage][,headers]):向请求的客户端发送响应头,该函数在一个请求中最多调用一次,如果不调用,则会自动生成一个响应头

  write(chunk[,encoding][,callback]):向请求的客户端发送响应内容,chunk是一个buffer或者字符串,如果chunk是字符串,则需要指定编码方式,默认为utf-8,在end()方法调用之前可以多次调用

  end([data][,encoding][,callback]):结束响应,告知客户端所有发送已经结束,如果不调用这个函数,客户端将一直处于等待状态

Node.js—基本知识的更多相关文章

  1. Node.js基础知识

    Node.js入门   Node.js     Node.js是一套用来编写高性能网络服务器的JavaScript工具包,一系列的变化由此开始.比较独特的是,Node.js会假设在POSIX环境下运行 ...

  2. NodeJs>------->>第三章:Node.js基础知识

    第三章:Node.js基础知识 一:Node.js中的控制台 1:console.log.console.info  方法 console.log(" node app1.js 1> ...

  3. Node.js权威指南 (3) - Node.js基础知识

    3.1 Node.js中的控制台 / 19 3.1.1 console.log方法 / 19 3.1.2 console.error方法 / 20 3.1.3 console.dir方法 / 21 3 ...

  4. Node.js基础知识普及

    Node.js只支持单线程,故不会产生死锁,采用非阻塞I/O机制和事件环机制.非常适合与开发需要处理大量并发的输入/输出的应用程序.   一. Node.js的核心模块有很多,这里先写几个比较常用的( ...

  5. 零散的JS和node.js小知识

    JS的连续赋值和曾经出现的怪异情况 let a=1; let b=a=3; 如上的真实赋值过程 => a=1 => a=3 => b=3 => 一般来说,等号是从右向左赋值的 ...

  6. Node.js入门-知识整理

    目的:使用Node.js实现文件上传并将上传的文件显示到浏览器中 基本工具:Node.js,在windows下需要下载cygwin64来运行shell命令 文件:服务器模块.请求路由模块.请求处理程序 ...

  7. node.js 基础知识之 querystring.stringify querystring.escape

    序列化   1.  querystring.stringify({name:'chenshuai',ago:21,job:"web"})    'name=chenshuai&am ...

  8. 001/Node.js(Mooc)--基础知识

    一.Node.js基础知识 node.js用C++语言编写. 简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时 ...

  9. 24个很赞的 Node.js 免费教程和在线指南

    JavaScript 最初是用来创建动态网站效果的的前端语言.而如今,这门脚本语言也可以用作后端开发,用于搭建 Web 服务器,开发接口,甚至创建博客.在下面这个列表中包括24个 Node.js 教程 ...

随机推荐

  1. Python语法速查: 5. 运算符、math模块、表达式

    返回目录 (1)一些较容易搞错的运算符 一般简单的如加减乘除之类的运算符就不写了,这里主要列些一些容易搞错或忘记的运算符.运算符不仅仅只有号,有一些英文单词如 in, and 之类,也是运算符,并不是 ...

  2. POI2008 CLO-Toll

    [POI2008]CLO-Toll 题意描述 Byteotia城市有n个 towns m条双向roads. 每条 road 连接 两个不同的 towns ,没有重复的road. 你要把其中一些road ...

  3. WPF 精修篇 数据绑定到对象

    原文:WPF 精修篇 数据绑定到对象 数据绑定到对象 首先 我们需要一个对象 public class Preson { private string name; public string Name ...

  4. 深入Pytorch微分传参

    导数 这段代码揭示了多个变量的微分以及如何求解loss为向量的导数 m1 = Variable(torch.ones((3,2)), requires_grad=True) m2 = Variable ...

  5. ReactNative: 使用View组件创建九宫格

    一.简言 初学RN,一切皆新.View组件跟我们iOS中UIView类似,作为一个容器视图使用,它主要负责承载其他的子组件.View组件采用的是FlexBox伸缩盒子布局,通过对它的布局可以影响子组件 ...

  6. 分析Runtime的属性Property

    一.介绍 在OC中我们可以给任意的一个类以@property的格式声明属性,当然对于这个属性也会采用某一些属性关键字进行修饰,那么属性的真正的面目是啥样子的呢?其实,runtime源码中可以看到,pr ...

  7. 利器: Mac自带的图片工具Sips

    Sips是Mac提供的一个处理图片的命令行工具,与Photoshop这种重量级选手相比,自然功能上要差很多.不过话说回来如大小裁剪.图片翻转和旋转这些日常小功能其实也不必非得动用Photoshop这样 ...

  8. IT兄弟连 Java语法教程 算符运算符

    Java提供了丰富的运算符环境.可以将大部分Java运算符划分为4组:算术运算符.位运算符.关系运算符以及逻辑运算符.Java还定义了一些用于处理某些特定情况的附加运算符.本章将介绍除类型比较运算符i ...

  9. Appium+java ---- Intellij IDEA +genymotion安装配置

    引用文章:https://www.cnblogs.com/kaola8023/p/8442686.html Intellij IDEA 中配置Android SDK File-Project Stru ...

  10. 5.智能快递柜(通信篇-Server程序)

    1.智能快递柜(开篇) 2.智能快递柜(终端篇) 3.智能快递柜(通信篇-HTTP) 4.智能快递柜(通信篇-SOCKET) 5.智能快递柜(通信篇-Server程序) 6.智能快递柜(平台篇) 7. ...