• 【Node】核心模块


    Node的使用过程中需要很多核心模块的引入:

    1. const http = require("http");
    2. const {URL} = require("url");
    3. const fs = require('fs');
    4. const path = require('path');

    有了这些模块,能更好的让我们体验Node的使用。模块中的操作包括了异步操作和同步操作

    fs模块

    1.读取文件

    1. //异步
    2. fs.readFile("./yes.txt","utf8",function(err,data){
    3. if(err){ //回调函数是实现异步的基本操作
    4. console.log("文件读取失败,原因是" + err);
    5. return;
    6. }
    7. console.log(data);
    8. })
    1. //同步
    2. const data = fs.readFileSync("./yes.txt","utf8");
    3. console.log(data);
    4. console.log("Number:"); //打印结果与上边程序结果相反,因为前边代码不完成,后边无法执行。

    2.写文件,会把原文件内容覆盖掉

    1. //异步
    2. var text = "four"
    3. fs.writeFile("./yes.txt",text,function(err){
    4. if(err){
    5. console.log("文件写入失败,原因是" + error);
    6. return;
    7. }
    8. console.log("文件写入成功");
    9. })
    1. //同步
    2. var text = "123456"
    3. fs.writeFile("./ok.txt",text,function(err){ //如果没有就会生成,只能同级操作
    4. if(err){
    5. console.log("文件写入失败,原因是" + error);
    6. return;
    7. }
    8. console.log("文件写入成功");
    9. })

    3.追加内容,在文档后直接加上新内容

    1. //追加内容
    2. var text = " four"
    3. fs.appendFile("./yes.txt",text,function(err){
    4. if(err){
    5. console.log("文件追加失败,原因是" + error);
    6. return;
    7. }
    8. console.log("文件追加成功");
    9. })

    4.拷贝操作,把ok的内容拷贝进yes 会覆盖原内容

    1. //拷贝内容
    2. var text = "123456"
    3. fs.copyFile("./ok.txt","./yes.txt",function(err){ //如果没有就会生成,只能同级操作
    4. if(err){
    5. console.log("文件拷贝失败,原因是" + error);
    6. return;
    7. }
    8. console.log("文件拷贝成功");
    9. })

     对大文件进行流操作

    1.读取流

    1. //流操作
    2. const rs = fs.createReadStream("./ohyes.txt",{encoding:"utf-8"});
    3. rs.on("open",function(){
    4. console.log("读取流打开");
    5. })
    6. let text = '';
    7. rs.on("data",function(chunk){ //chunk是一个buffer,是当前读取的数据片段,本质是一个二进制数据流
    8. text += chunk;
    9. // console.log(count);
    10. })
    11. rs.on("end",function(){
    12. console.log("文件读取完成");
    13. console.log(text);
    14. })
    15. rs.on("close",function(){
    16. console.log("读取流关闭");
    17. })

    2.写入流

    1. //写入流
    2. const ws = fs.createWriteStream("./ok.txt");
    3. ws.write("66666");
    4. ws.end();
    5. ws.on("open",function(){
    6. console.log("写入流开启");
    7. })
    8. ws.on("close",function(){
    9. console.log("写入流关闭");
    10. })

    执行路径会影响结果,不建议使用相对路径,建议使用绝对路径


    path模块

    path方法:

    basename():文件名+后缀
    dirname() :路径名
    extname():后缀名
    join():拼接路径
    parse():将路径解析成对象
    format():将对象整合成路径字符串
    isAbsolute():是否是一个绝对路径(返回布尔值)

    1. let p = "C://Users/DELL/Desktop/10_Node/node-1.html"
    2. console.log(path.basename(p));//文件名+后缀
    3. console.log(path.dirname(p));//路径名
    4. console.log(path.extname(p));//后缀名
    5. console.log(path.join("/a","/b/c","../d"));//拼接路径 不同于字符串拼接,可以对内容(../)进行转义
    6. console.log("/a"+"/b/c"+"../d");
    7. console.log(path.parse(p));//将路径解析成对象
    8. console.log(path.format(
    9. {
    10. root: 'C:/',
    11. dir: 'C://Users/DELL/Desktop/10_Node',
    12. base: 'node-1.html',
    13. ext: '.html',
    14. name: 'node-1'
    15. }
    16. ));//将对象整合成路径字符串
    17. console.log(path.isAbsolute(p));//是否是一个绝对路径

    url模块

    1. const {URL} = require("url")
    2. const url = newURL("http://localhost:8080/index.html?a=1&b=2");

    结果:
    URL {
      href: 'http://192.168.0.3:3000/soul/users/hb/sjz/xh.json?sex=1&age=[18,26]',
      origin: 'http://192.168.0.3:3000',
      protocol: 'http:',
      username: '',
      password: '',
      host: '192.168.0.3:3000',
      hostname: '192.168.0.3',
      port: '3000',
      pathname: '/soul/users/hb/sjz/xh.json',
      search: '?sex=1&age=[18,26]',
      searchParams: URLSearchParams { 'sex' => '1', 'age' => '[18,26]' },   
      hash: ''
    }


     http模块

     IP地址

    每一台计算机在互联网的地址唯一,使用点分十进制表示,在终端可以使用 ping + 网址查看IP,127.0.0.1是计算机的本地地址(localhost)。

    域名&端口号

    域名具有唯一性。一台计算机可以开启多个web服务,但是每个web服务对应唯一的端口,80端口是默认的,可省略不写。

    http模块的使用

    1. const http = require('http'); //引入核心模块 http
    2. const fs = require('fs');
    3. //createServer() 创建服务
    4. //listen(port) 监听端口并开启服务
    5. //req:请求体
    6. //res:响应体
    7. const server = http.createServer((req,res) =>{ //req:前端给的信息 res:给前端的信息
    8. if(req.url === '/myapp/index.html' || req.url === '/'){
    9. // __dirname:当前文件所在文件夹的绝对路径
    10. fs.readFile(__dirname + '/myapp/index.html',(err,data)=>{
    11. if(err) throw err;
    12. res.end(data); //向前端返回内容
    13. });
    14. }else{
    15. res.end('');
    16. }
    17. })
    18. server.listen(8080,()=>{ //监听成功就服务启动
    19. ("http server is running on port 8080");
    20. }); //监听端口号

    在终端输入“node + 文件名.js”,待打印"http server is running on port 8080"之后,即可在网页运行。

  • 相关阅读:
    React + TypeScript + Taro前端开发小结
    EMQ(MQTT)安装部署简介
    【8. 4位数码管TM1637】转载记录
    HTML模板 宽屏大气的企业官网网站模板
    如何配置多个ssh
    SpringBoot Seata 死锁问题排查
    String类相关面试题
    Google Earth Engine(GEE)—— NDVI的CannyEdgeDetector边缘检测适用性分析
    Android12源码编译报错ninja: build stopped: subcommand failed.解决
    设计模式学习(四):建造者模式
  • 原文地址:https://blog.csdn.net/m0_50947589/article/details/125431191