一、http模块

//require表示引包,引包就是引用自己的一个特殊功能
var http = require("http");
//创建服务器,参数是一个回调函数,表示如果有请求进来,要做什么
var server = http.createServer(function(req,res){//req表示请求,request;  res表示响应,response//设置HTTP头部,状态码是200,文件类型是html,字符集是utf8res.writeHead(200,{"Content-type":"text/html;charset=UTF-8"});res.end("哈哈哈哈,我买了五个iPhone" + (1+2+3) + "s");
});//运行服务器,监听3000端口(端口号可以任改)
server.listen(3000,"127.0.0.1");

二、Node.js没有web容器的概念,呈递的静态文件和URL没有任何关系

//require表示引包,引包就是引用自己的一个特殊功能
var http = require("http");
var fs = require("fs");//创建服务器,参数是一个回调函数,表示如果有请求进来,要做什么
var server = http.createServer(function(req,res){if(req.url == "/fang"){fs.readFile("./test/xixi.html",function(err,data){//req表示请求,request;  res表示响应,response//设置HTTP头部,状态码是200,文件类型是html,字符集是utf8res.writeHead(200,{"Content-type":"text/html;charset=UTF-8"});res.end(data);});}else if(req.url == "/yuan"){fs.readFile("./test/haha.html",function(err,data){//req表示请求,request;  res表示响应,response//设置HTTP头部,状态码是200,文件类型是html,字符集是utf8res.writeHead(200,{"Content-type":"text/html;charset=UTF-8"});res.end(data);});}else if(req.url == "/0.jpg"){fs.readFile("./test/0.jpg",function(err,data){//req表示请求,request;  res表示响应,response//设置HTTP头部,状态码是200,文件类型是html,字符集是utf8res.writeHead(200,{"Content-type":"image/jpg"});res.end(data);});}else if(req.url == "/bbbbbb.css"){fs.readFile("./test/aaaaaa.css",function(err,data){//req表示请求,request;  res表示响应,response//设置HTTP头部,状态码是200,文件类型是html,字符集是utf8res.writeHead(200,{"Content-type":"text/css"});res.end(data);});}else{res.writeHead(404,{"Content-type":"text/html;charset=UTF-8"});res.end("嘻嘻,没有这个页面呦");}
});//运行服务器,监听3000端口(端口号可以任改)
server.listen(3000,"127.0.0.1");

访问127.0.0.1/fang实际显示的是test文件夹中的xixi.html页面
访问127.0.0.1/yuan实际显示的是test文件夹中的haha.html页面
相应的图片,都要有自己的路由

三、 req对象的end()方法、write()方法、writeHead()方法

//这个案例简单讲解http模块
//引用模块
var http = require("http");//创建一个服务器,回调函数表示接收到请求之后做的事情
var server = http.createServer(function(req,res){//req参数表示请求,res表示响应console.log("服务器接收到了请求" + req.url);//设置头部res.writeHead(200,{"Content-Type":"text/html;charset=UTF8"});res.write("<h1>我是主标题</h1>");res.write("<h2>我是2标题</h2>");res.write("<h2>我是2标题</h2>");res.write("<h2>我是2标题</h2>");res.write("<h3>我是3标题</h3>");res.end((1+2+3).toString());
});//监听端口
server.listen(3000,"127.0.0.1");

四、req.url的演示,能够得到用户的请求的地址

var http = require("http");var server = http.createServer(function(req,res){console.log(req.url);res.end();
});server.listen(3000,"127.0.0.1");

五、url模块:里面有url.parse()方法,能够将url拆分成为很多部分。

var http = require("http");
var url = require("url");var server = http.createServer(function(req,res){//url.parse()可以将一个完整的URL地址,分为很多部分://host、port、pathname、path、queryvar pathname = url.parse(req.url).pathname;//url.parse()如果第二个参数是true,那么就可以将所有的查询变为对象//就可以直接打点得到这个参数var query = url.parse(req.url,true).query;//直接打点得到这个参数var age = query.age;console.log("pathname:" + pathname);console.log("query:" + query);console.log("age:" + age);res.end();
});

六、接收表单GET提交的模拟,可以得到表单提交上来的name、age、sex。

表单是test文件夹中的form.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title>
</head>
<body><form action="http://127.0.0.1:3000/" method="GET"><input type="text" name="name" /> <br /><input type="text" name="age" /> <br /><input type="radio" name="sex" value="男"/> 男<input type="radio" name="sex" value="女"/> 女<br /><input type="submit"></form>
</body>

var http = require("http");
var url = require("url");var server = http.createServer(function(req,res){//得到查询部分,由于写了true,那么就是一个对象var queryObj = url.parse(req.url,true).query;var name = queryObj.name;var age = queryObj.age;var sex = queryObj.sex;res.end("服务器收到了表单请求" + name + age + sex);
});server.listen(3000,"127.0.0.1");

七、探求事件环机制

当用户访问/student/1234567890 的查询此学号的学生信息。
       当用户方位/teacher/645433 的时候,查询此老师的信息
       其他的,我们提示错误。如果位数不对,也是提示位数不对

var http = require("http");var server = http.createServer(function(req,res){//得到urlvar userurl = req.url;res.writeHead(200,{"Content-Type":"text/html;charset=UTF8"})//substr函数来判断此时的开头if(userurl.substr(0,9) == "/student/"){var studentid = userurl.substr(9);console.log(studentid);if(/^\d{10}$/.test(studentid)){res.end("您要查询学生信息,id为" + studentid);}else{res.end("学生学号位数不对");}}else if(userurl.substr(0,9) == "/teacher/"){var teacherid = userurl.substr(9);if(/^\d{6}$/.test(teacherid)){res.end("您要查询老师信息,id为" + teacherid);}else{res.end("老师学号位数不对");}}else{res.end("请检查url");}
});

转载于:https://www.cnblogs.com/15fj/p/7748025.html

node.js之第一天相关推荐

  1. 第一个实例-----我与node.js的第一步接触

    因为最近有东西需要用到node.js,所以我就在linux虚拟机上安装了node.js,对于javascript,也是第一次接触. 刚入门,就是一个实用的案例,毕竟这些东西都是实践出真知.这个案例就是 ...

  2. node.js学习-第一章节

    目录 前言 学习NodeJS的意义 01-nodejs入门 1.2-什么是nodejs 1.3-Node.js环境安装 1.3.1-如何确认当前电脑是否已经安装了Node环境 1.3.2-npm介绍与 ...

  3. Node.js实践第一天

    实践案例一 表单提交 demo.html 1 <!doctype html> 2 <html> 3 <head> 4 <title>表单提交</t ...

  4. node.js笔记第一天

    nodejs笔记 web服务器和服务端js的区别 1.js都是运行在浏览器的 ECMAScript:js语法 bom:浏览器对象模型,用js去操作浏览器窗口 Dom:文档对象模型,用js去操作dom树 ...

  5. 【Node.js】第一章 初识Node.js

    目录 1.1 浏览器中的javascript的运行环境 1.2 Node.js 简介 1.1 浏览器中的javascript的运行环境 1. 浏览器的组成部分 2.  javascript能在浏览器执 ...

  6. 从零开始创建一个个人博客前端Vue,后端node.js(第一天)

    一.前言(具体代码在尾页) 1.创建vue项目可以使用vue ui命令进行快速的搭建 2.由于我是一个新手所以说,前端使用的是element ui快速构造了一个网页(头秃,没有设计稿,ui空白一片), ...

  7. node.js是开源的吗_为开源做贡献并不难:我为Node.js项目做贡献的旅程

    node.js是开源的吗 As a developer, you should consider contributing to open source software. Many of your ...

  8. 理解Node.js的event loop

    为什么80%的码农都做不了架构师?>>>    关于Node.js的第一个基本概念是I/O操作开销是巨大的: 所以,当前变成技术中最大的浪费来自于等待I/O操作的完成.有几种方法可以 ...

  9. Deno 会取代 Node.js 吗?

    [CSDN 编者按]几天前,Node 之父 Ryan Dahl 及 Deno 团队为我们正式带来了 Deno 1.0,据官方介绍,这是一个 JavaScript/TypeScript 运行时,使用 V ...

最新文章

  1. mysql无法启动无法停止_Centos7以上的版本 mysql 无法启动,无法停止问题
  2. Dom4j和Xpath(转)
  3. Ureport2源码修改
  4. 从前序与中序遍历序列构造二叉树Python解法
  5. themleft模板库_Thymeleaf模板引擎常用总结
  6. docker java镜像_Springboot整合MongoDB的Docker开发,其它应用也类似
  7. 线性表顺序表---逆置所有元素
  8. Batch Normalization原理及pytorch的nn.BatchNorm2d函数
  9. 【计算机网络】计算机网络概述
  10. 股票软件开发中全推与点播的区别
  11. 集训8.21树状数组讲解
  12. IE8中动态改变伪元素样式不起作用BUG
  13. html5 逐帧播放 代码,html5-video – 使用媒体源扩展进行逐帧解码
  14. HTTP 415错误
  15. 医院病房监护系统和图书管理系统数据流图
  16. 网易云解析接口PHP源码,网易云音乐Web端的接口分析
  17. 《BPF( 伯克利数据包过滤器 ) Performance Tools》 第二章 技术背景
  18. 计算机内存容量影响游戏的吗,内存容量对整机游戏性能影响有多大?看完秒懂...
  19. 【数据分析】SQL面试题整理
  20. ZZULIOJ 2411: 摘柿子

热门文章

  1. [leetcode] 题型整理之排列组合
  2. STP状态切换详述(Cisco实现)
  3. 深度剖析CloudFoundry的架构设计
  4. SQL2005恢复只有mdf文件的数据库
  5. python对XML 操作
  6. [Python] L1-052 2018我们要赢-PAT团体程序设计天梯赛GPLT
  7. [Python] L1-018. 大笨钟-PAT团体程序设计天梯赛GPLT
  8. PAT 乙级 1014. 福尔摩斯的约会 (20) Java版
  9. 蓝桥杯 ALGO-29 算法训练 校门外的树(区间处理)
  10. Windows下Tuxedo的安装与配置-无数据库