nodeJs

node 路径

  • cd 切换命令

  • pwd 当前目录

  • cd ../ 返回上一级

  • 写入数据到文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    //引入内置模块
    const fs = require('fs');
    const path = require('path');
    //fs.writeFile(file,data[,options],callback) //4个参数
    // 1 把数据写入到哪里
    // 2 要写入什么数据
    // 3 编码:以什么编码写入 可选 "默认UTF-8"
    // 4 回调
    fs.writeFile(path.join(__dirname,"./data/data.json"),"str","编码",function(err){
    if(err){
    throw err ;//有错误 抛出错误
    }
    console.log("写入成功");
    });

    //读取数据
    //fs.readFile(path[,options],callback) 3个参数
    // 1 从哪里读取数据
    // 2 以什么解码格式解析数据 可选 默认“null”
    // 3 回调 err data
    fs.readFile(path.join(__dirname,"./data/data.json"),"utf-8",function(err,data){
    if(err){
    throw err;
    }
    console.log(data);
    });

buffer

  1. buffer 是一个缓冲,是一种二进制流的数据格式

  2. 类似一个数组,元素 2位16进制的字节

  3. 负责文件或数据的传输

  4. utf-8 中1个汉字= 3个字节

  5. GBK 中 1个汉字 = 2个字节

同步 :不常用

try…. catch()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// sync 同步
// aSync 异步
// a 否定的词根



//同步读取数据
//1 引入模块
const fs = require('fs');

//2 fs.readFileSync(path[,options])
// 参数1: 从哪里读取数据
// 参数2:以什么编码格式读取
console.log("我的博客啊");
// let data = fs.readFileSync("./data1.txt","utf-8");

try{
let data = fs.readFileSync("./data1.txt","utf-8");
}catch(err) {
console.log("出错了");
}

console.log("回不来了");

// 同步 有 错误 用try.....catch(){}
// 异步用 throw err

路径 :引入文件路径用 path.join(__dirname,”./data.js”);

如何快速创建一个简单服务器

1
2
3
4
5
6
7
8
9
//1 引入 http
const http = require('http');
//2 创建服务器 开启服务器 开始监听请求
http.createServer(function(req,res){
//结束响应
res.end("ok");
}).listen(8080,function(){
console.log("服务器开启");
})

加载静态资源(css/img)

解决方案

先把静态资源文件放到公共文件夹下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// 处理样式
// 先检查一下有没有package.json 如果没有 npm init -y 生成package.json
// 然后在安装包 npm i mime
const mime = require('mime');

if(req.url.startsWith("/public")){


console.log(mime.getType(req.url));
// /public/index.css
// 进来的: /public/7.jpg
const tempDir = "page/"+req.url
console.log("进来的:",tempDir);
fs.readFile(path.join(__dirname,tempDir),function (err,data) {
if(err){
throw err;
}
res.end(data);
})
}

npm 是什么?

官方解释:npm 为你和你的团队打开了连接整个 JavaScript 天才世界的一扇大门。它是世界上最大的软件注册表,每星期大约有 30 亿次的下载量,包含超过 600000 个 包(package) (即,代码模块)。来自各大洲的开源软件开发者使用 npm 互相分享和借鉴。包的结构使您能够轻松跟踪依赖项和版本。

个人理解 :

npm : 是一个 node 包管理器

作用:管理包 减少我们的负担,让我们专注于功能的开发。

安装与更新

安装去官网https://www.npmjs.com.cn

升级:

  • npm i npm -g ——> 全局安装 默认安装最新
  • npm i npm@latest -g 安装最新版本
  • npm i npm@6.9.0 -g 安装指定版本

降级;npm i npm@5.4.5 -g

常见命令

  • npm init(自定义) ——- npm init -y(自动生成) —— 生成npm的配置文件
  • package.json ——- 记录安装的包
  • 安装 npm i 包名 / npm install 包名
  • 卸载 npm un 包名 / npm uninstall 包名
  • _ / -s / -D / -SD
  • _ / -S —–> dependencies 发布阶段所依赖的包
  • -D / -SD ——>devDependencies :开发阶段所依赖的包

安装模式

  • 本地安装: npm i 包名 / -S / -D /-SD 安装到当前目录的node_modules
  • 全局安装: npm i 包名 -g 安装在C盘下的node_modules
  • 官方概念: npm 全局安装把一个”包”安装成一个命令行工具
  • 效果概念: 全局都可以使用

cnpm和yarn
安装 npm i cnpm -g
查看版本 cnpm -v
cnpm i 包名 -S/-D/-SD

yarn
安装 npm i yarn -g
查看版本 yarn -v
yarn add 包名 -S/-D/-SD

模块化
commonJS
加载:require()
导出:module.exports

exports
exports 和module.exports指向同一片空间
exports 就是module.exports的一个别名
最终导出的还是以module.exports 的为主

创建模块
导出模块
内容
参数—>函数
模块和函数
加载模块require()
使用模块