1.node操作

  • win+r+cmd 打开命令行终端
  • node -v 或者 node --version 检查版本号
  • node '文件名' _文件名不要写成_node.js
  • cd.. 返回上级目录
  • dir 查看目录
  • tree 查看偶有文件夹和子文件夹里的内容
  • cd 文件夹名称 进入那个文件夹
  • 盘符: 切换盘符
  • 创建文件夹
    • mkdir 你要创建的文件夹名称
    • md 你要创建的文件夹名称
  • 删除文件夹
    • rd 你要删除的文件夹的名称只能删除空文件夹
    • rd /s /q 你要删除的文件夹名称强制删除文件夹
  • xcopy 你要复制的文件夹名 复制以后的文件夹名 复制文件夹
  • echo 你要写入的内容>你指定的文件 向文件里写入一些内容,完全覆盖式的写入
  • echo 你要写入的内容>>你指定的文件 向文件里写入一些内容,追加
  • type 你要查看的文件名 查看文本里的内容化
  • ren 你要修改的文件 你要改成什么名字 给文本重命名
  • del 你要删除的文件名 删除文件
  • copy 你要复制的文件名 复制以后的文件名 复制文件
  • remove 你要移动的文件名 你要移动到哪一个目录 移动文件名
  • cls 清屏
  • ipconfig 查看电脑ip
  • ping www.baidu.com -t 测试网速
  • systeminfo 查看电脑信息
  • nodejs 的特点
    • 是一个基于V8引擎的JavaScript运行环境
    • 单线程
    • 非阻塞I/O 也就是异步,通过回调函数,
    • 事件驱动

2.node模块化

2.1.内置模块
  • (核心模块包括 os(操作系统)、fs(文件系统)、http(网络系统)),安装node这个环境的时候就自带有的模块(js文件),不需要下载,导入进来使用就好。
  • fs(文件系统)
    • 专门来读取写入文件内容的 ```javascript
  • 导入模块用require()方法
  1. 导入fs模块 const fs = require('fs')
  • fs 模块的几个方法
  1. fs.readFile() 专门用来异步读取文件的方式 语法:fs.readFile('你要读取的文件路径',读取文件格式(选填),读取文件成功的回调函数) `fs.readFile(‘./test.txt’,’utf-8’,function(err,data){ //函数是读取文件完成后执行的回调函数 //接受两个形参 err=>读取失败的时候的失败信息 data=>读取成功的时候的读取的内容
    1. ->读取的内容默认是buffer格式的字符串,我们看不懂,计算机看的懂
    2. ->如果想读取一个我们看的懂得文件,那么要在第二个参数设置'utf-8'
    if(err){ return console.log(err) } console.log(data) })`

2.fs.readFileSync() 专门用来同步读取文件的方式 语法:fs.readFile('你要读取的文件路径',读取文件格式(选填)) let data = fs.readFile('你要读取的文件路径','utf-8')

  1. fs.writeFile() 专门用来异步写入文件的方式,覆盖式的写入 语法:fs.writeFile('你要写入的文件路径',你要写入的内容,读取文件成功的回调函数) fs.writeFile('./test.txt',你要写入的内容,function(){ console.log('写入成功了') })
  2. fs.writeFileSync() 专门用来同步步写入文件的方式 语法:fs.writeFile('你要写入的文件路径',你要写入的内容) fs.writeFileSync('./test.txt',你要写入的内容console.log(‘写入成功了’)
  3. fs.appendFile() 专门用来异步写入文件的方式,追加式的写入 语法:fs.appendFile('你要写入的文件路径',你要写入的内容,读取文件成功的回调函数) fs.appendFile('./test.txt',你要写入的内容,function(){ console.log('写入成功了') }) ```

2.2.http内置模块
  • 这个模块是专门用来创建http服务的,只能支持http协议
  • 就是可以把电脑上的命令行窗口当成一个服务器来使用 ```javascript
  • 导入http模块 const http = require(‘http’) 导入fs模块 const fs = require(‘fs’)
  • 创建http服务 const server = http.createServer(function(req,res){ +这个函数是前端的每一个请求都会执行这个函数 +只有我在监听这个端口号有请求过来的时候,就会执行 +这个参数接收两个形参
    1. -req 表示每次请求的信息
    2. req.url 表示本次请求的地址
    3. -res 表示每次请求的响应
    4. res.end() 表示本次给回的响应
    5. +通过不同的url做不同的事情
    if(req.url===’./index.html’){ fs.readFile(‘./index.html’,’utf-8’,function(err,data){
    1. if(err) return console.log(err)
    2. //响应之前设置响应头
    3. res.setHeader('Content-Type','text/html;charset=utf-8')
    4. res.end(data)
    }) } console.log(‘我执行了,表示有请求进来了’) })
  • 监听一个端口号(端口号是0-65535,0-1023不推荐使用) server.listen(8080,function(){ console.log(‘监听8080端口成功’) })
  • 代码写完以后,当你在终端运行这个文件的时候 +你的那个终端就是一个服务器了 +你就可以打开浏览器去访问localhost:8080 ```

2.3.自定义模块
  • 自定义模块就是在一个js文件里写入一些方法,然后要把js文件里的方法导出,外部才能接收。
  • 每个js文件里自带 module对象,每个module对象里自带exports对象,module.exports就是这个文件向外导出的内容,我们向外暴露该对象内容就可以了
  1. funtion fn1(){
  2. console.log('我是a模块里的fn1方法')
  3. }
  4. function fn2(){
  5. console.log('我是a模块里的fn2方法')
  6. }
  7. module.exports.fn1 =fn1
  8. module.exports.fn2 =fn2
  • 模块导入的方法
    • ·导入模块用require()方法
    • 在b文件里导入我们自定义的模块 文件名
  • 为什么浏览器里面不需要导出直接导入就行
    • 之所以你浏览器不用导出,是我因为我们的浏览器里有一个顶级对象window
    • 你写在全局的变量都是挂在window上的
    • 在一个html文件里,多个js文件公用一个window对象
  • 在node环境下
  • 我们没有真正意义上的全局对象
  • 所以我们需要在一个文件导入,一个文件导出的时候才能使用
  • 我们每个js都是独立模块,都会独立模块作用限制着
  • 在你写a.js文件里的内容,再写b.js文件里是使用不了的
  • 第三方模块