1.说明
客户端到服务器发送的请求取决于用户的网速
服务器到客户端的响应速度可以提升服务器的带宽
服务器的代码逻辑精简可以提升客户端的响应速度
致命在于服务器读写数据库的速度(IO)
node是单线程
目的用Js编写高性能服务器
2.安装及运行
在nodejs.org下载完node之后 在自己的盘符里新建一个js文件(里面可以输入console.log(123)),然后打开同级命令行窗口
运行 node 文件.js
3.初始化项目
npm init
然后填写一些配置信息,然后会生成一个package.json配置文件
4.安装插件
npm install jquery
5.卸载插件
npm uninstall jquery
6.查看环境变量
开发环境
process.env
生产环境
process.dev
7.Node中的模块
7.1全局模块:
任何时候都能访问,不需要引用
process.env
process.argv
2
3
7.2系统模块
7.2.1定义:要引用
let path = require("path")
7.2.2path:用于处理文件路径和目录路径的实用工具
第一个打印到最后的目录,第二个打印到1.jpg,最后一个打印出文件的后缀名
想获取一个文件的绝对路径,打印
path.resolve(__dirname,"文件名")
7.2.3 fs用于文件读写操作
语法:
let fs = require("fs");
读
fs.readFile("读取的文件的相对路径",(err,data)=>{
//回调方法体
})
2
3
4
5
在同级目录下新建文件 b.text
写
追加内容
7.3自定义模块
定义:require自己封装的模块
exports
module.exports
require
前两个为导出,第三个是引用
7.3.1exports单个导出
7.3.2module.exports以对象的形式多个导出,也可以导出方法
调用方法
7.3.3require
1.如果有路径就访问路径的内容
2.如果没有指定路径,就默认访问node_modules文件夹
最后再去node的安装目录里找
7.3.4 http模块
服务器对象:
http.createServer()
可以快速搭建服务器
例子:
先引用http对象,再调用createServer方法,并且要给出监听的自定义端口号
let http = require('http')
http.createServer(() => {
console.log("我来了");
}).listen(8089)
2
3
4
在相同目录下运行 node 对应的脚本文件
打开浏览器访问端口
http://localhost:8089/
此时在终端就会看到打印的内容
createServer中函数的参数(require,response)
request 是请求时携带的参数
response是请求后返回的数据
别忘了在结尾加上end()方法表示请求的内容结束了
let http = require('http')
//request 是请求时携带的参数
//response是请求后返回的数据
http.createServer((request, response) => {
// console.log("我来了");
response.write('index');
response.end()
}).listen(8089)
2
3
4
5
6
7
8
搭建简易服务器并访问
response.writeHead访问后返回的状态码
response.end('404')
//就等于
response.write('404');
response.end()
2
3
4
let http = require('http')
//request 是请求时携带的参数
//response是请求后返回的数据
let fs = require('fs')
http.createServer((request, response) => {
// console.log("我来了");
// response.write('index');
// response.end()
fs.readFile(`./${request.url}`, (err, data) => {
if (err) {
console.log(err);
response.writeHead(404)
response.end('404')
} else {
// console.log(data);
response.writeHead(200)
response.end(data)
}
})
console.log(request.url);
}).listen(8089)
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
8.get与post
js中
let http = require('http')
http.createServer((req, res) => {
console.log(req.url);
///aa?username=12312&pwd=123
}).listen(8899)
2
3
4
5
html页面
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form action="http://localhost:8899/aa" method="GET">
用户名:<input type="text" name="username">
密 码:<input type="password" name="pwd">
<input type="submit" value="提交">
</form>
</body>
</html>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
运行node index
手动打开h5页面 输入账密后得出结果
aa?username=12312&pwd=123
如果要获取这一长串中的url或者想要别的部分,在node中可以不用split方法这么麻烦
只需要导入url 模块
let url = require('url')
然后将请求的url作为第一个参数给url.parse来解析,就能得到表单请求时获取的url对象
let http = require('http')
let url = require('url')
http.createServer((req, res) => {
console.log(url.parse(req.url));
}).listen(8899)
2
3
4
5
查看打印效果
LinvKey@DESKTOP-TKPLAEN MINGW64 /d/study/node03
$ node index
Url {
protocol: null,
slashes: null,
auth: null,
host: null,
port: null,
hostname: null,
hash: null,
search: '?username=vcxx5otc&pwd=123',
query: 'username=vcxx5otc&pwd=123',
pathname: '/aa',
path: '/aa?username=vcxx5otc&pwd=123',
href: '/aa?username=vcxx5otc&pwd=123'
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
url.parse()的第二个参数 为布尔值,作用是将query属性的值变成对象,方便取值
LinvKey@DESKTOP-TKPLAEN MINGW64 /d/study/node03
$ node index
Url {
protocol: null,
slashes: null,
auth: null,
host: null,
port: null,
hostname: null,
hash: null,
search: '?username=admin&pwd=admin',
query: [Object: null prototype] { username: 'admin', pwd: 'admin' },
pathname: '/aa',
path: '/aa?username=admin&pwd=admin',
href: '/aa?username=admin&pwd=admin'
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16