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
})
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,874评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,102评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,676评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,911评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,937评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,935评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,860评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,660评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,113评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,363评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,506评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,238评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,861评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,486评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,674评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,513评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,426评论 2 352

推荐阅读更多精彩内容

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