node.js 入门(低阶版)
前言:
一、什么是node.js?
Node.js 是建立在chrome的JavaScript的web应用框架
二、node.js有什么优点?
比较一下node.js和传统web服务器的request-response流程:
PHP&ASP:
- 发送请求
- 等待服务端解析请求
- 返回响应
- 准备下一个请求
Node.js
- 发送请求
- 准备下一个请求
- 当服务端处理好请求,返回响应
作为一个单线程,非阻塞,异步编程的框架,它高度可扩展,比传统服务器请求的服务数量大得多。
三、node.js中basic knowledge
-
npm
节点程序包管理器,类似python的pip,可以通过该指令安装所需包
npm install package
相应的卸载命令
npm uninstall package
通过该指令安装的包会在当前目录下生成一个node_modules文件夹,所有安装的包都在该目录下 -
REPL
一个类似shell的东西,可以运行 读取,计算,打印,循环 的环境 -
Package.json
存在于任何Node应用程序/模块的根目录,并应用于定义一个包的属性,具有下列属性:name/ version/ description/ homepage/ author/ contributors/keywords
dependencies: 依赖列表,支持该包所需的包全部列在这
repository: 包的储存类型和URL
main: 包的入口点
从简单入手:
假设你有一台主机,并且已经成功按照https://nodejs.org完成了node的安装
你在某目录下新建了一个文件夹,然后又在该文件夹新建了一个js文件,输入了以下代码
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.end('Hello World!');
}).listen(8080);
-
var http = require('http')
这个第一行的var http = require('http')
类似于python的import numpy as np
, 通过require来导入所需包,并且赋给变量http,之后通过http来使用包内的相关函数,这一刻我又想起了被np支配的恐惧。 -
http.createServer(function (req, res) {})
通过http的函数createServer函数来创建一个HTTP服务器,req,res顾名思义request and response,res.writeHead(200, {'Content-Type': 'text/html'})
:当开启一个服务器后,这个服务器干了什么呢,res等于response,服务器给了反应,它写了个header,然后给了个res.end('Hello World!');
,相当于写了个hello world给你,就结束了。listen(8080);
意思是听8080端口,可以任意使用现在没在用的端口。
好了,接下来就是运行了,假设你的js文件名为 a.js, 打开终端输入node a.js
, 你就能看到终端显示....不,终端什么也没显示,这个时候你打开浏览器,输入localhost:8080
,就能看到页面上写着 Hello World!
,你在该js里文件添加任何console.log()
语句,都能在控制台看到输出。我们将上述js代码添加一句
console.log("HTTP Server now is listening on port 8080");
你就能看到终端提示一模一样的话了。
包包包:
了解python,或者c++的人都知道,一个main函数写不了什么东西,我们把需要的部分都写在其他文件里,然后主函数需要什么我们就把该文件引用进来就可以使用。
A.py
def functionA():
return 10
B.py
from A import functionA
print(functionA())
>>>python B.py
>>>10
在B中导入A,便可以使用A的函数了
同理在node.js中,我们也可以把写好的js文件封装成一个包,在其他文件中require这个包。
还是刚才那个工程,我们创建一个新的js文件,就叫它b.js,我们在文件里写入
exports.myDateTime = function () {
return Date();
};
然后在a.js中require这个文件
var http = require('http');
var dt = require('./b');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write("The date and time are currently: " + dt.myDateTime());
res.end();
}).listen(8080);
再运行a.js文件,便能看见页面显示时间,这个时间就是从b.js获取到的。