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)
})
/*
  
*/
//解决方法-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
})

你可能感兴趣的:(node.js是什么)