最近开始学了Node.js,初体验就是感觉对于有后端开发经验和js基础的话,还是比较简单可以理解的。这里主要记录一下自己的学习笔记。
1:node的基础 首先思考两个问题:首先JavaScript为什么可以在浏览器中被执行?其次是为什么JavaScript可以操作BOM和DOM对象?
第一个问题是因为我们所使用的的浏览器中都有着Javascript的解析引擎,不同的浏览器解析引擎也不同,目前最常用的是Chrome浏览器的V8 引擎。
第二个问题是因为浏览器中内置了DOM、BOM这样的API函数,所有js可以去调用他们去执行一些操作。
可以这样理解:浏览器是JavaScript的前端运行环境,而Node.js是JavaScript的后端运行环境,由于没有浏览器,所有Node.js中无法调用DOM和BOM等浏览器内置的API函数;但其内部提供了一系列内置的API,如fs、path、http等;
2:node.js可以做什么
(1)可以基于Express框架。快速构建Web应用 (2)可以基于Electron框架,构建跨平台的桌面应用 (3)可以给予restify框架,快速构建API接口项目 (4)可以读写和操作数据库、读写文件等
3:node.js中的内置模块 (1)fs模块 读写文件的模块,读取语法格式如下
fs.reafFile(path,[options,](error,data)=>{})
第一个参数是读取文件的路径;第二个是可选参数,指定文件的编码方式(默认utf-8);第三个参数为一个函数,包含两个参数,第一个参数是读取失败返回的信息,第二个参数是读取成果是拿到的数据;
写入文件的语法格式如下
fs.writeFile(path,data,[options,],(error)=>{})
第一个参数为路径,第二个是写入的数据,第三个是写入的文件类型(可选参数,默认utf-8),第四个参数为回调函数。
(2)path模块 用于处理路径的模块,包括三个方法
path.join(__dirname,'./file11.js')
用于拼接路径,一般搭配__dirname使用,可识别 '../'和'./'
path.basename(path[,ext])
用于获取文件的文件名,注意:ext 值为扩展值,写的话 会去掉扩展名输出
path.extname(path)
用于获取文件的扩展名。
(3)http模块 用于创建一个最基本的web服务器 包括四个步骤
//导入http模块
const http = require('http')
//创建web服务器实例
const server = http.createServer();
//为实例绑定request事件
server.on('request',(req,res)=>{
//req是请求对象,包括请求的相关数据与属性
//req.url
//req.method
let str = `您请求的方法是 ${req.url},method is ${req.method}`
console.log(str)
//调用res.setHeader方法设置中文编码格式
//调用res.end方法,像服务端响应
res.setHeader('Content-Type','text/html; charset=utf-8')
res.end(str)
})
//启动服务器
server.listen(80,()=>{
console.log('server running on localhost')
})