关于node的基础学习

关于node的基础学习

最后修改时间:6 months ago

1.说明

客户端到服务器发送的请求取决于用户的网速

服务器到客户端的响应速度可以提升服务器的带宽

服务器的代码逻辑精简可以提升客户端的响应速度

致命在于服务器读写数据库的速度(IO)

node是单线程

目的用Js编写高性能服务器

2.安装及运行

在nodejs.org下载完node之后 在自己的盘符里新建一个js文件(里面可以输入console.log(123)),然后打开同级命令行窗口

运行 node 文件.js

3.初始化项目

npm init 
1

然后填写一些配置信息,然后会生成一个package.json配置文件

4.安装插件

npm install jquery 
1

5.卸载插件

npm uninstall jquery 
1

6.查看环境变量

开发环境

process.env 
1

生产环境

process.dev 
1

7.Node中的模块

7.1全局模块:

任何时候都能访问,不需要引用

process.env 

process.argv 
1
2
3

7.2系统模块

7.2.1定义:要引用

 let path = require("path")
1

7.2.2path:用于处理文件路径和目录路径的实用工具

第一个打印到最后的目录,第二个打印到1.jpg,最后一个打印出文件的后缀名

想获取一个文件的绝对路径,打印

path.resolve(__dirname,"文件名")

7.2.3 fs用于文件读写操作

语法:

let fs = require("fs");
读
fs.readFile("读取的文件的相对路径",(err,data)=>{	
//回调方法体
})
1
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()
1

可以快速搭建服务器

例子:

先引用http对象,再调用createServer方法,并且要给出监听的自定义端口号

let http = require('http')
http.createServer(() => {
    console.log("我来了");
}).listen(8089)
1
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)
1
2
3
4
5
6
7
8

搭建简易服务器并访问

response.writeHead访问后返回的状态码

response.end('404')  
 //就等于
response.write('404');
response.end()
1
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)
1
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)
1
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>
1
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
1

如果要获取这一长串中的url或者想要别的部分,在node中可以不用split方法这么麻烦

只需要导入url 模块

 let url = require('url') 
1

然后将请求的url作为第一个参数给url.parse来解析,就能得到表单请求时获取的url对象

let http = require('http')
let url = require('url')
http.createServer((req, res) => {
    console.log(url.parse(req.url));
}).listen(8899)
1
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'
}
1
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'
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
- 全文完 -

留下一条留言?
默认颜色

主题颜色

标准颜色

更多颜色...