Node.js
知识了解
- 不同的游览器使用不同的javaScript解析引擎
- chrome游览器-v8
- firefox游览器-OdinMonkey(奥丁猴)
- safri游览器-JScode
- IE游览器-Chakra(查克拉)
为什么javascript可以操作DOM和BOM
- 游览器提供内置DOM APi和BOM ApI和AJaxAPI
- 程序员根据这些API编写出待执行的js代码
- 然后交给游览器的解析引擎
游览器中的javaScript运行环境
- 运行环境指的是代码正常运行所需的环境
- v8引擎负责解析和执行js接口
- 内置API是由运行环境提供的特殊接口,只在所属的环境中被调用
Node.js
node.js是一个基于chromeV8引擎的javascript运行环境
- 提供内置API供程序员编写待执行的js代码
- 游览器是javascript的前端运行环境
- Node.js是javascript的后端运行环境
- Node.js无法调用DOM和BOM等游览器内置API
Node.js可以做什么
- Node.js作为一个javaScript的运行环境,仅仅提供了基础的功能和APi。但是基于Node.js提供的这些基础,就可以使用更多的强大工具和框架
- 例如:基于Express框架,可以快速构建Web应用
- 基于ELEtron框架,可以构建跨平台的桌面应用
- 基于restify框架,可以快速构建API接口项目
- 简单说,node.js是大前端时代的,“大宝剑”,相当于前端buff
node.js的学习路径
- js基础语法——node.js内置Api模块(fs,path.,http等)——第三方api模块(express,mysql等)
Node.js环境安装
https://nodejs.org/zh-cn/
终端的概念
- 终端是专门为开发人员设计的,用于实现人机交互的一种方式
在Node.js环境下执行js代码
- 打开cmd终端
- 输入node要执行的js文件的存放路径
- 我建立记事本1.js存放在了nodeday,然后cd/d到当前目录,然后执行1.js文件,输出1.js里的内容
- shift+右键,打开的powershell终端直接在当前目录
终端的快捷键
- 上箭头,快速定位上一次命令
- 使用tab,快速补全路径,打出首字母。使用tab键即可
- esc键,快速清空当前已输入命令
- 输入cls命令,清空终端
fs文件系统模块
fs模块是Node.js官方提供的,用来操作文件的模块,它提供了一系列的方法和属性,用来满足用户对文件的操作需求
- fs.readFile()方法,用来读取指定文件中的内容
- fs.whiteFile()方法,用来向指定的文件写入内容
- 如果要在js代码中,使用fs模块操作文件,则先需要使用require导入
const fs = require('fs')
读取:fs.readFile()
fs.readFile(path,[options],callback)
fs.readFile("/index/1.js",'utf-8',function(err,datastr){
//err代表失败之后
//datastr代表成功之后
})
//中括号代表可选参数
- 参数1,必选参数,字符串,表示读取文件的存放路径
- 参数2,可选参数,表示以什么编码格式来读取文件,类似utf-8
- 参数3,必选参数,回调函数,文件读取完成后,通过拿到读取成功,err为null,datastr为成功的返回值,失败的结果datastr为undefined
判断文件是否读取成功
- 可以判断err对象是否为null
写入: fs.whiteFile(file,data,options,callback)
- 参数1,必选参数,字符串,表示指定一个文件路径的字符串,也就是文件的存放路径
- 参数2,必选参数,表示要写入的内容
- 参数3,可选参数,表示以什么格式写入文件内容,默认是utf-8
- 参数4,必须参数,文件写入完成后的回调函数,写入成功,err为null
判断文件是否写入成功
- 可以判断err对象是否为null
fs模块,路径动态拼接问题
当fs模块操作文件的时候,提供的路径是以./或者…/开头的相对路径,就容易出现操作失败,动态拼接错误的问题
原因:代码在运行的时候,会执行node命令所处的目录,动态拼接出操作文件的完整路径
- 解决方法
- 提供路径的时候,提供绝对路径,注意,\两个斜线算一个,但移植性差,且容错率低
- __dirname表示当前目录,前面是双下划线,打印的值就是当前目录的绝对路径
l例如:
fs.readFile("/index/1.js",'utf-8',function(err,datastr){
//err代表失败之后
//datastr代表成功之后
})
//变成
fs.readFile(__dirname+"/index/1.js",'utf-8',function(err,datastr){
//err代表失败之后
//datastr代表成功之后
})
path路径模块简介
path模块是Node.js官方提供的,用来处理路径的模块,提供了一系列的方法和属性,用来满足对路径的处理需求
- 步骤一,想要使用path的方法,就得先导入它
const path = require('path')
path.join([…paths])方法
用来将多个路径片段拼接成一个完整的路径字符串
const pathstr = path.join('/a','/a','/b','../','/c')
console.log(pathstr)//输出,/a/a/c
//因为/b和../相互抵消了,../意味返回上一层
path.bacename(path,ext)方法
用来从路径字符串中,将文件名解析出来,经常通过这个方法获取路径中的文件名
- 参数1,string必选参数,表示一个路径的字符串
- 参数2,可选参数,表示文件扩展名
- 返回值是路径中的最后一部分
const pathstr = path.bacename('/a/b/index.html')
consle.log(pathstr) //输出index.html
const pathstr1 = path.bacename('/a/b/index.html','.html')
consle.log(pathstr1) //输出index
path.extname(path)方法
可以获取路径中的扩展名部分
- 参数,一个路径的字符串
const pathstr = path.extname('/a/b/index.html')
consle.log(pathstr) //输出.html