node.js是什么

node.js的安装和使用

安装:直接去官网下载稳定版本;node安装完会自动安装npm(包管理工具)。
查看版本号:通过node -v(注意空格)来查看是否安装完成和当前版本号。

服务端及客户端

创建服务的就是服务端;去访问的就是客户端。

模块化的概念

每个文件就是一个模块,都有自己独立的命名空间,模块化的好处就是不会有模块之间的变量污染。
node.js中的模块化,就是commonjs规范;js是没有模块的功能的,所以commonjs应运而生,他希望js可以在任何地方运行,不只是浏览器中。
1.引入模块

require("./文件夹名或者文件名")//必须加./
//第三方模块和内置模块不用加./

2.导出模块

module.exports={
  在这个对象里面可以放任何数据类型,用于从这个文件里面导出,在其他文件里面require导入的时候去使用
}
const obj=require("要引入的模块");//这行代码的意思是在引入模块的时候用一个变量或者常量去保存

node_modules
这个文件夹放的是我们项目依赖的第三方模块,因为就光node的内置模块是远远不够的,很多好的第三方模块都存在于npm这个包管理器里面。我们直接使用npm去下载第三方模块到我们的项目里面就可以直接去使用。

npm包管理器

1.npm 常用指令

  • npm install 模块的名字 -S或者--save;安装的是项目的运行时依赖;也就是说,从开发到项目上线运行过程中始终要依赖的模块,那么,我们就要通过这种方式去安装。会写入到package.json的dependencies
  • npm install 模块的名字 -D或者--save-dev ;安装的是项目的开发时依赖,在项目开发的过程中需要依赖的模块,项目上线之后就不需要该模块的依赖就使用这种方法。会写入到package.json的devDependencies
  • npm install 模块的名字 -g;全局安装
  • npm install 模块的名字 @1.0;安装指定的版本号
  • npm init 创建一个package,json文件

文件操作fs

fs是文件操作模块,所有文件操作都是有同步和异步之分,特点是同步会加上 "Sync" 如:异步读取文件 "readFile",同步读取文件 "readFileSync";
异步有回调函数
同步没有回调函数
异步文件写入

const fs=require("fs")
//a:追加写入;w:写入-默认;r:读取
fs.write("1.txt","我是写入的内容",{flag:"a"},function(err){
  if(err){
  return console.log(err)
  }
  console.log("写入成功")
}

异步文件读取

fs.readFile("1.txt","utf8",function(err,data){
    if(err){
        return console.log(err)
    }
    console.log(data)
})
//如果不加utf8读取的是buffer数据
fs.readFile("1.txt",function(err,data){
    if(err){
        return console.log(err)
    }
    console.log(data)
})
/*
  <Buffer e6 88 91 e6 98 af e5 86 99 e5 85 a5 e7 9a 84 e6 96 87 e5 ad 97 e6 88 91 e6 98 af e5 86 99 e5 85 a5 e7 9a 84 e6 96 87 
e5 ad 97 e6 88 91 e6 98 af e5 86 ... >
*/
//解决方法-toString()
fs.readFile("1.txt",function(err,data){
    if(err){
        return console.log(err)
    }
    console.log(data.toString())
})

同步读取文件

let data=fs.readSync("1.txt")
console.log(data.toString())

修改文件名称

fs.rename("1.txt","2.txt",err=>{
    if(err){
        return console.log(err)
    }
    console.log("修改成功")
})

删除文件

fs.unlink("2.txt",(err)=>{
    if(err){
        console.log(err)
    }
    console.log("删除成功")
})

复制文件

fs.copyFile("index.html","myindex.html",err=>{
    if(err){
        return console.log(err)
    }
    console.log("赋值成功")
})

目录操作

创建一个目录-新建一个文件夹

fs.mkdir("filename",err=>{
    if(err){
        return console.log(err)
    }
    console.log("创建目录成功")
})

**修改目录名称

fs.rename("filename","newfile",err=>{
    if(err){
        return console.log(err)
    }
    console.log("创建目录成功")
})
//将文件名filename修改为newfile

读取目录

fs.readdir("newfile",(err,data)=>{
    if(err){
        return console.log(err)
    }
    console.log(data)
})
//[ '1.html' ];读取到文件夹里面的文件,还是以目录的形式在数组中展示

删除目录

fs.rmdir("newfile",err=>{
    if(err){
        return console.log(err)
    }
    console.log("删除成功")
})
//删除的目录必须是一个空文件夹,有点鸡肋

判断文件或者目录是否存在

fs.exists("newfile",exists=>{
    console.log(exists)
})
//返回boolean值

获取文件或者目录的详细信息

fs.stat("newfile",(err,stat)=>{
    if(err){
        return console.log(err)
    }
    console.log(stat)
})
Stats {
  dev: 1485554439,
  mode: 16822,
  nlink: 1,
  uid: 0,
  gid: 0,
  rdev: 0,
  blksize: undefined,
  ino: 3096224744858300,
  size: 0,
  blocks: undefined,
  atimeMs: 1578223166685.2402,
  mtimeMs: 1578223166685.2402,
  ctimeMs: 1578223166685.2402,
  birthtimeMs: 1578222948185.005,
  atime: 2020-01-05T11:19:26.685Z,
  mtime: 2020-01-05T11:19:26.685Z,
  ctime: 2020-01-05T11:19:26.685Z,
  birthtime: 2020-01-05T11:15:48.185Z }
//这就是该文件夹的详细信息

//判断stat(这个参数代表newfile)是文件还是文件夹
fs.stat("newfile",(err,stat)=>{
    if(err){
        return console.log(err)
    }
    //判断文件是否是文件
    let res1=stat.isFile();
    console.log(res1);//false
    let res2=stat.isDirectory()
    console.log(res2);//true
})
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 2277-Nothing-5排3班 0926 day10 书名:《把时间当做朋友》 正文字数:779 01《没有捷...
    Nothingismore阅读 1,189评论 0 0
  • 了解它 在之前,我们需要明确的一个概念是, Web 程序中,用户的每次请求流程都是线性的,放在 ASP.NET C...
    米来MiLai阅读 4,596评论 0 0
  • (1)目前用户使用的手机软硬件性能和服务器相差甚远,尤其是Android手机,千元机以下的低端机占据很大份额,所以...
    xjbclz阅读 3,754评论 0 1
  • 爱情有时候就像水中化开的墨花,刚被晕染时多么唯美,但最终却化为一潭黑色的池水 01 已经很晚了,街道四处都陷入了模...
    午時風阅读 3,321评论 0 51
  • 祖国,我永远爱您 我时刻把您赞美 我不嫌弃您的贫困 祖国,我永远爱您 一片池塘、一棵草、一握土 我都觉得是那么可亲...
    湘中布衣秀才阅读 2,286评论 2 2

友情链接更多精彩内容