Node.js—基本知识
一、第一个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—基本知识的更多相关文章
- Node.js基础知识
Node.js入门 Node.js Node.js是一套用来编写高性能网络服务器的JavaScript工具包,一系列的变化由此开始.比较独特的是,Node.js会假设在POSIX环境下运行 ...
- NodeJs>------->>第三章:Node.js基础知识
第三章:Node.js基础知识 一:Node.js中的控制台 1:console.log.console.info 方法 console.log(" node app1.js 1> ...
- 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 ...
- Node.js基础知识普及
Node.js只支持单线程,故不会产生死锁,采用非阻塞I/O机制和事件环机制.非常适合与开发需要处理大量并发的输入/输出的应用程序. 一. Node.js的核心模块有很多,这里先写几个比较常用的( ...
- 零散的JS和node.js小知识
JS的连续赋值和曾经出现的怪异情况 let a=1; let b=a=3; 如上的真实赋值过程 => a=1 => a=3 => b=3 => 一般来说,等号是从右向左赋值的 ...
- Node.js入门-知识整理
目的:使用Node.js实现文件上传并将上传的文件显示到浏览器中 基本工具:Node.js,在windows下需要下载cygwin64来运行shell命令 文件:服务器模块.请求路由模块.请求处理程序 ...
- node.js 基础知识之 querystring.stringify querystring.escape
序列化 1. querystring.stringify({name:'chenshuai',ago:21,job:"web"}) 'name=chenshuai&am ...
- 001/Node.js(Mooc)--基础知识
一.Node.js基础知识 node.js用C++语言编写. 简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时 ...
- 24个很赞的 Node.js 免费教程和在线指南
JavaScript 最初是用来创建动态网站效果的的前端语言.而如今,这门脚本语言也可以用作后端开发,用于搭建 Web 服务器,开发接口,甚至创建博客.在下面这个列表中包括24个 Node.js 教程 ...
随机推荐
- sqlserver取字符串拼音首字母
sqlserver 使用函数获取一个字符串的拼音首字母 create function dbo.fn_getpinyin ( @str nvarchar(max) ) returns nvarchar ...
- 使用 TSPITR 恢复删除的表空间的步骤 (Doc ID 1277795.1)
Steps To Recover A Dropped Tablespace Using TSPITR (Doc ID 1277795.1) APPLIES TO: Oracle Database - ...
- Android Studio中无法找到android.os.SystemProperties解决办法
这个SystemProperties类主要是在这个jar包中layoutlib.jar,所以现在的办法就是让这个 jar包加载到 android studio中 下面讲解如何添加: 1.找到对应项目的 ...
- Java之封装性
封装概述 面向对象编程语言是对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作和修改. 封装可以被认为是一个保护屏障,防止该类的代码和数据被其他类随意访问.要访问该类的数据,必 ...
- Noip刷题计划
写在前面 去年也想刷10年NOIP来着..结果刷到13年就没动力了233... 今年一定要完成目标啊!! "愿你明日重生,醒时心存冬阳" 2018年 题目 首次得分 出错原因 考点 ...
- 函数基础实战之ATM和购物车系统
username_list = [] prize_dict = { '0': "芭比娃娃", '1': "变形金刚", '2': "psp游戏机&qu ...
- Docker的入门及常用命令
Docker入门及常用命令 1. 各个容器之间是相互隔离状态: 这样减少了我们软件之间的影响. 2. docker是os层虚拟化架构的一种产品体现, os层虚拟化架构出来的操作系统需要和宿主机操作系统 ...
- P站全新官方精选集Pixivision
P站是一个主要由日本艺术家所组成的虚拟社群,主打插画.漫画.二次元作品网上沟通. 不过好消息是,P站全新的精选网站Pixivision上线了,多种语言界面,国内用户访问毫无压力. 近期精选的一系列作品 ...
- 安装v2sora@y
v2r@y安装 1. 安装nginx 这儿使用tengine进行安装, 可以看以前的博客 1.1) 注意带 http_v2 编译 ./configure --with-http_v2_module 不 ...
- PHP判断设备访问来源
/** * 判断用户请求设备是否是移动设备 * @return bool */ function isMobile() { //如果有HTTP_X_WAP_PROFILE则一定是移动设备 if (is ...