Node.js学习笔记1-基础入门

  • 注意: 撰写本文目的主要是为了给自己做一个备忘录,如果你学过Node.js并且希望从本文中找到一些忘记的知识点,那么你可以阅读本文章。由于文章内讲解并不是很多,因此此文章并不适合小白入门使用。

1.初识Node

1.1.HelloWorld

//require表示引包,引包就是引用自己的一个特殊功能
var http = require("http");

var server = http.createServer(function(req, res) {
  res.writeHead(200, { "Content-type": "text/html;charset=UTF-8" });
  res.end("哈哈哈哈,这是我的第一个Node页面");
});

//运行服务器,监听3000端口(端口号可以任意改动)
server.listen(3000, "127.0.0.1");

1.2.使用http

//HTTP模块
var http = require("http");

http.createServer(function(req, res) {
    res.writeHead(200, {
      "Content-Type": "text/html;charset=UTF-8"
    });
    res.write("<h1>我是主标题</h1>");
    res.write("<h2>我是2标题</h2>");
    res.write("<h3>我是3标题</h3>");
    res.end("访问结束");
  })
  .listen(3000, "127.0.0.1");

1.3.解析URL

//URL模块
var http = require("http");
var url = require("url");

var server = http.createServer(function (req, res) {
    res.writeHead(200, {
        "Content-Type": "text/html;charset=UTF-8"
    });
    var pathname = url.parse(req.url).pathname;
    var query = url.parse(req.url, true).query;
    var id = query.id;

    console.log(pathname);
    console.log(query);
    console.log("id=" + id);
    res.end("访问结束");
});
server.listen(3000, "127.0.0.1");

1.4.根据请求URL进行判断执行

  • 首先,列出这个例子是为了告诉读者有这种写法,这种根据URL进行判断执行的方法是非常低效的,不仅每个需要对每一个URL进行判断,还要对每一个选择的文件请求进行判断,试想一下,你的项目中需要显示几张图片,那么就需要分别对着几张图片进行URL判断并加载此图片。
//require表示引包,引包就是引用自己的一个特殊功能
var http = require("http");
var fs = require("fs");

//创建服务器,参数是一个回调函数,表示如果有请求进来,要做什么
var server = http.createServer(function (req, res) {
  if (req.url == "/yuan") {
    fs.readFile("./test.html", function (err, data) {
      //设置http头部,状态码是200,文件类型是html
      res.writeHead(200, {
        "Content-Type": "text/html;charset=UTF-8"
      });
      // res.end("哈哈哈哈,这是我的第一个Node页面");
      res.end(data);
    });
  } else if (req.url == "/bbb.css") { //html文件里涉及到访问文件
    fs.readFile("./css.css", function (err, data) {
      //设置http头部,状态码是200,文件类型是html
      res.writeHead(200, {
        "Content-Type": "text/css;charset=UTF-8"
      });
      // res.end("哈哈哈哈,这是我的第一个Node页面");
      res.end(data);
    });
  } else {
    res.writeHead(404, {
      "Content-Type": "text/html;charset=UTF-8"
    });
    res.end("找不到页面");
  }
});

//运行服务器,监听3000端口(端口号可以任意改动)
server.listen(3000, "127.0.0.1");

其中的test.html与test2.html文件

<!-- test.html文件省略了一些内容 -->
<head>
  <style>
    div {
      width: 200px;
      height: 200px;
      background-color: blue;
      border-radius: 50%;
    }
  </style>
  <link rel="stylesheet" type="text/css" href="bbb.css">
</head>
<body>
  <img src="abb.jpg" alt="">
  <div></div>
</body>

<!-- test2.html文件省略了一些内容 -->
<head>
  <style>
    div {
      width: 200px;
      height: 200px;
      background-color: yellow;
    }
  </style>
</head>
<body>
  <div></div>
</body>

请求结果:
/yuan以及图片请求结果

2.表单信息提交测试

  • 本小节主要是测试在网页中提交一些表单信息,并使用Node.js作为后端程序接收信息。

Node代码:

//信息提交测试
var http = require("http");
var url = require("url");

var server = http.createServer(function(req, res) {
  res.writeHead(200, {
    "Content-Type": "text/html;charset=UTF-8"
  });
  var queryObj = url.parse(req.url, true).query;
  var name = queryObj.name;
  var age = queryObj.age;
  var sex = queryObj.sex;

  res.write("姓名:" + name + " 年龄:" + age + " 性别:" + sex);

  console.log("姓名:" + name + " 年龄:" + age + " 性别:" + sex);
  res.end();
});
server.listen(3000, "127.0.0.1");

前端body文件:

<body>
  <form action="http://127.0.0.1:3000/" method="GET">
    姓名:<input name="name" type="text"></br>
    年龄:<input name="age" type="text"></br>
    性别:<input name="sex" type="radio" value=""><input name="sex" type="radio" value=""></br>
    <input type="submit">
  </form>
</body>

3.路由-router

  • 下面给出的示例代码只能起到帮助你理解路由的概念,使用这样的路由方式进行生产并不是一个好的选择,但这并不代表这段代码毫无意义,请浏览并理解这段代码。

路由-router示例:

var http = require("http");

var server = http.createServer(function (req, res) {
  //得到url
  var userurl = req.url;
  res.writeHead(200, {
    "Content-Type": "text/html;charset=UTF-8"
  });

  //substr函数来判断此时的开头
  if (userurl.substr(0, 9) == "/student/") {
    var studentid = userurl.substr(9);
    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("老师学号位数不对")
    }
  }
});
server.listen(3000, "127.0.0.1");

查询结果:
查询结果

猜你喜欢

转载自blog.csdn.net/affluent6/article/details/91526974