从入门到深入Node.js开发实战--B站视频学习笔记 (视频01~08)

由于Node.js平台是在后端运行JavaScript代码,所以,必须首先在本机安装Node环境。没有服务器架构,没有根目录的概念。

安装完成后,在Windows环境下,打开命令提示符:window+R

Node.js特点:单线程、异步I/O特性、事件驱动

 

引用方式:   

 

$ cd c:\
$ node 1.js

在我们创建 Node.js 第一个 "Hello, World!" 应用前,让我们先了解下 Node.js 应用是由哪几部分组成的:

  1. 引入 required 模块:我们可以使用 require 指令来载入 Node.js 模块。

  2. 创建服务器:服务器可以监听客户端的请求,类似于 Apache 、Nginx 等 HTTP 服务器。

  3. 接收请求与响应请求 服务器很容易创建,客户端可以使用浏览器或终端发送 HTTP 请求,服务器接收请求后返回响应数据。

/*代码示例*/
//读取内置模块http,这个模块是开发服务器用的
var http = require('http');
//创建了一个 http 服务器
http.createServer(function (request, response) {

    // 发送 HTTP 头部 
    // HTTP 状态值: 200 : OK
    // 内容类型: text/plain
    response.writeHead(200, {'Content-Type': 'text/plain'});

    // 发送响应数据 "Hello World",通过listen() 方法绑定了 8888 端口
    response.end("Hello, Universe! I'm running on Cloud Studio!\n");
}).listen(8888);

// 终端打印如下信息
console.log('Server running at http://127.0.0.1:8888/');

$符号是Linux系统中命令行普通用户的表示符号。

检验是否安装成功node.js:  $ node -v

系统的环境变量,使得我们可以再CMD中的任何盘符使用node命令。

node命令,空格隔开一个js文件的名字,此时可以将文件拖拽进来,即可以去运行这个js文件。

严禁使用绝对路径拖拽,因为fs读取文件的时候,是相对于光标位置来读取的。

我们说,想要运行谁,就node谁,但要注意盘符路径。

CPU:中央处理器,CPU经常对磁盘/驱动器发出I/O命令

I:input数据的读取。O:output数据的写入。同步I/O时,CPU命令磁盘去做事情,此时CPU自己就闲置了。

用cd命令切换盘符。用cls清空历史。

在CMD中,按↑可以回溯命令历史。

如果要修改程序,此时刷新浏览器没用,必须ctrl+C打断之后重新运行。

Node.js中拥有JS的所有语言核心语法,甚至拥有ES2016的新语法。但是Node.js没有所有BOM的东西,比如window对象,window对象的一切函数也没有。

NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种:

  • 允许用户从NPM服务器下载别人编写的第三方包到本地使用。
  • 允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
  • 允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。

浏览器通过上行请求向服务器下达命令,node.js运行在服务器端,服务器通过node.js向浏览器传达扁平化的html下行相应。通过f12查看源代码是看不到运算过程的,即服务器自己计算后,直接把结果发给了浏览器。

CMD,按tab键,会自动补全

TypeError: First argument must be a string or Buffer

Node.js没有所有DOM对象,如没有window对象及window的一切函数

var http = require('http');  //用node.js引入html文件
var fs=require("fs");
var server=http.createServer(function (req,res) {
fs.readFile("2.html",function(err, filecontent){
   res.setHeader("Content-Type","text/html;charset=UTF-8");
    res.end(filecontent);
});
});
server.listen(8888);
console.log('http://127.0.0.1:8888/');

//同目录下的html文件:

<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style type="text/css">
div{
	width:200px;
	height:400px;
	background-color:#999;
}
</style>
</head>
<body><div></div></body>
</html>

Node.js 提供一组类似 UNIX(POSIX)标准的文件操作API。 Node 导入文件系统模块(fs)语法如下所示:

var fs = require("fs")
//读取内置模块,file system,文件系统
var fs = require("fs");

// 异步读取
fs.readFile('input.txt', function (err, data) {
//回调函数,读取文件之后做的事情
   if (err) {
       return console.error(err);
   }
   console.log("异步读取: " + data.toString());
});

// 同步读取
var data = fs.readFileSync('input.txt');
console.log("同步读取: " + data.toString());

console.log("程序执行完毕。");

我们使用JS开始开发服务器:GET请求的处理、POST请求参数的处理、数据库的增删改查、Cookie等。

res.setHeader相应头部要放在res.end之前

在CMD端显示:

如果此时加入计算,计算过程中CPU只能为某一个用户服务:

 

我们发现全班同学共享了一个a,每个人访问的时候都是看到别人已经刷过的a,a的值越来越高。

顶层路由设置:

此时我们就知道了req里面是用户的访问请求信息,请求的网址是req。res是服务器的响应信息。事实上,我们并不存在music文件夹,news文件夹,甚至我们可以伪装一个地址,实际上并不存在.html文件:

……
}
else if(req.url=="/music.html"){
       res.end("音乐频道");
}
……

 

简单了解一下事件驱动机制:

访问HTML时,请求可不止一个。同样的,访问一个页面时,路由也可以不止设置一个。要为CSS文件、js文件、图片设置路由。一个页面上的所有请求,都要设置路由。

我们要制作一个静态资源管理器,但需要储备知识,url模块和path模块。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值