• Node详细解释[带你快速入门Node](2)


    续上一篇node入门的补充.

    包和npm

    1.包概念

    在Nodejs中包由由包结构和包描述文件两个部分组成.

    包结构:用于组织包中的各种文件,例如:源代码文件、资源文件

    包描述文件:描述包的相关信息,例如:package.json、bin、lib等文件

    2.npm

    npm是随着Nodejs一起安装的一个包管理工具,它具有以下用途:

    • 允许用户从NPM服务器下载别人编写的第三方包到本地使用。

    • 允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。

    • 允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。

    3.npm常见命令

        1.npm init  初始化

    (会在根目录下生成一个package.json的文件)

            npm init -y (初始化走默认值,不需要在设置)

          难点:初始化的文件的父级文件夹名字不要取中文,要用英文

    2. npm install  安装      

     安装命令执行之后,会在项目的根目录下产生有一个node_modules的目录(以后所有下载的包都会安装到该目录)

    简写:npm i

     安装分为本地安装和全局安装:
                    本地安装:适用于绝大多数项目开发包
                    全局安装:一般用于安装命令类型包

    本地安装:将包安装到项目中
                        安装到项目/生产依赖:
                            npm install  包名                   新版nodejs的写法
                            npm install  包名   --save          旧版写法

                            简化为:
                                npm install 包名  -S                npm i 包名 -S
                        安装到开发依赖
                            npm install  包名   --save-dev
                                简化为:
                                    npm install 包名 -D             npm i 包名 -D
                        注意:修饰符可以在前、在后
                            npm i 包名 -D
                            npm i -D 包名
                全局安装:将包安装到计算机上(默认C盘)
                            npm i 包名 -g  


                区别:
                    生产依赖:包不仅在开发阶段要使用,在生产阶段也要使用
                    开发依赖:只在开发阶段使用

    安装指定的版本:

    一般安装包时,都是默认下载最新的包。

    但是可以用 npm i 包名@版本号 安装你需要的版本

    如果不知道版本号,也可以用 npm view 包名 versions 来查询npm服务器存在的包版本信息

    这里也有卸载的npm命令:

         npm uninstal 包名

         npm rm 包名

    events模块

    events模块是node.js内置的模块

    1. const e=require("node:events")
    2. const emitter= e.EventEmitter;

    常用方法:

    • on() 注册

    • off() 解绑

    • once() 一次

    • emit() 触发事件

    • addListener()

    • removeListener() 删除

    • removeAllListener(0) 删除所有

    文件系统(fs)

    Nodejs内置了用于操作文件的模块:fs

    常见的操作有文件操作、文件夹操作,操作的方案有同步和异步

    文件操作

    常见的方法(异步):

    • readFile() 读取   

    • writeFile() 写入

    • rename() 重命名

    • unlink() 删除

    1. const fs=require('fs');
    2. //注意:若文件不存在,则会先创建文件,再写入(不会创建文件夹)
    3. fs.writeFile("./info/info.txt","我好",err=>{
    4. if(err){
    5. console.log('写入失败:',err);
    6. return;
    7. }
    8. console.log("写入成功");
    9. })
    10. // fs.writeFile("./data.txt","我好",{flag:"a"},err=>{
    11. // if(err){
    12. // console.log('写入失败:',err);
    13. // return;
    14. // }
    15. // console.log("写入成功");
    16. // })
    17. // fs.writeFileSync("./data.txt","hello jack",{flag:"a"})
    18. //剪切
    19. // fs.rename("./msg.txt","../data.txt",err=>{
    20. // if(err){
    21. // console.log('写入失败:',err);
    22. // return
    23. // }
    24. // console.log('成功');
    25. // })
    26. // fs.renameSync("../data.txt","./data.txt")
    27. // console.log('成功');
    28. //删除文件
    29. // fs.unlink('./dat.txt',err=>{
    30. // if(err){
    31. // console.log('失败',err);
    32. // return
    33. // }
    34. // console.log('成功');
    35. // })
    36. // fs.unlinkSync("./dta.txt")
    37. //读取文件
    38. // fs.readFile("./data.txt",(err,data)=>{
    39. // if(err){
    40. // console.log('读取失败:',err);
    41. // return;
    42. // }
    43. // // console.log(data);//Buffer
    44. // console.log(data.toString());
    45. // })
    46. // let buf=fs.readFileSync("./1.html")
    47. // let buf=fs.readFileSync("./data/1.wmv")
    48. // console.log("读取成功");
    49. // console.log(buf);
    50. // console.log(buf.toString());//非文本类型文件,不可以toString()

    文件夹操作

    常见方法:

    • mkdir() 创建

    • rmdir() 删除空目录

    • readdir() 读取目录

    • stat() 读取文件的信息

      • stats对象

        • isDirectory() 是否为文件夹

        • isFile() 是否为文件

    1. const fs=require("fs");
    2. //创建文件夹
    3. // fs.mkdir("./mock",err=>{
    4. // if(!err){
    5. // console.log('成功');
    6. // return
    7. // }
    8. // console.log('失败:',err);
    9. // })
    10. // fs.mkdirSync("./route")
    11. //读取目录
    12. // fs.readdir("./data",(err,files)=>{
    13. // if(err){
    14. // console.log("失败;",err);
    15. // return
    16. // }
    17. // console.log(files);
    18. // })
    19. // let files=fs.readdirSync("./data")
    20. // console.log(files);
    21. //删除
    22. // //删除空目录
    23. // fs.rmdir("./data",err=>{
    24. // if(err){
    25. // console.log('失败',err);
    26. // return
    27. // }
    28. // console.log('成功');
    29. // })

  • 相关阅读:
    MySQL索引
    java毕业生设计高考志愿智能辅助填报系统计算机源码+系统+mysql+调试部署+lw
    数据挖掘知识点整理(期末复习版)
    深度学习之 12 循环神经网络RNN 3
    Java基础常见知识&面试题总结(下)
    自定义注解
    mybatis入门
    中科磐云题目——报错注入 解析(flag)
    单链表(2)
    华硕笔记本电脑的风扇转速正常是多少
  • 原文地址:https://blog.csdn.net/m0_62164658/article/details/132591641