1.初识node.js
我们可以借助node.js这个环境来进行后端开发
浏览器中的api在运行环境中可以被调用来辅助代码运行
以下为node.js运行环境,但没有DOM,BOM,AJAX等API
node.js的作用
node.js的学习路径
2.在终端里操作node.js
在终端里输出node.js的内容方法:“node 路径”,node后面有空格。
console.log('初识node.js')
tip:有时候在终端里cd不好使,就写成cd /d来强制换盘符
简便方法:在代码目录下按住shift右键选择“在此处打开powershell窗口”,就可以直接转到本目录下来进行操作。
终端快捷键:
3.fs文件系统模块
fs.readFile()使用方法:
tip:node的设计模式是错误先行,所以回调函数中第一个参数为err
readFile是包含三个参数的
参数一:必选,为路径
参数二:可选,为编码方式
参数三:必选,为回调函数
//导入fs模块,用定义的'fs'来接收
const fs = require('fs')
//调用fs.readFile()方法读取文件
fs.readFile('123.txt', 'utf8', function (err, datastr) {
console.log(err);
console.log("-------");
console.log(datastr)
})
若成功:err为null,datastr为1.txt里的值
若失败:err的值为错误对象,datastr为undefined
fs.writeFile()使用方法:
readFile是包含四个参数的
参数一:必选,为路径
参数二:必选,为写入的内容(比readFile多了一个参数)
参数三:可选,为编码方式(默认为utf8)
参数四:必选,为回调函数
//导入fs模块,用定义的'fs'来接收
const fs = require('fs')
//调用fs.writeFile()方法读取文件
fs.writeFile('1.txt', 'abcd', 'utf8', function (err) {
console.log(err);
})
若成功:err为null
若失败:err的值为错误对象
与readFile()基本一样
tip:改变路径来写入,它会自动创建,所以不容易报错
练习:
更改文本中的数据格式并在终端输出
txt数据:
更改为:
实现代码:
//导入fs模块,用定义的'fs'来接收
const fs = require('fs')
//读取文件
fs.readFile('1.txt', 'utf8', function (err, datastr) {
if (err) {
return console.log('wrong' + err.messgae);//判断读取文件是否成功
}
const arrNew = [];
datastr.split(' ').forEach(item => {
arrNew.push(item.replace('=', ':'))
});
const newStr = arrNew.join('\r\n')
console.log(newStr)
})
fs常见问题的解决方法
1.路径动态拼接问题:
方法一:
缺点:移植性很差,不利于维护
fs.readFile('G:\\desk\\js_day\\node.js\\1.txt', 'utf8', function (err, datastr){}
//完整的路径:从盘符开始,记得把单斜线改为双斜线(单斜线默认为转义字符,会出错)
方法二:“__dirname”(⭐推荐)(两个下划线)
使用方法,在路径里 __dirname+‘1.txt’
fs.readFile(__dirname + '1.txt', 'utf8', function (err, datastr) {}
tip:+号容易出问题,用path.join()最好用
__dirname:输出文件目录。
D:\web-practice\node\before
__filename:输出文件绝对路径,包含文件名。
D:\web-practice\node\before\global.js
4.路径模块
引入方法:const path = require('path')
路径拼接:
fs.readFile(path.join(__dirname, '1.txt'), 'utf8', function (err, datastr) {}
得到路径的最后的文件:
const fpath = '/a/s/d/f/index.html';
console.log(path.basename(fpath, 'html'));//index
得到路径的最后的文件的拓展名:
console.log(path.basename(fpath));//html
5.http模块
通过ping+网址即可查看ip地址
DNS:ip与域名的转换的服务器
端口号80可以被省略
创建基本的web服务器4部曲
1.引入:
const http = require('http')
2.创建web服务器实例:
const server = http.createServer()
3.为服务器绑定request事件,监听客户端的请求on:
server.on('request', function (req, res) {
console.log("Someone visit our web server.")
})
//其中req为请求对象,包含了与客户端相关的数据与属性:req.url,req.method
//其中res为请求对象,包含了与服务器相关的数据与属性:req.end()
4.启动服务器listen:
server.listen(80, function () {
console.log('server running at http://127.0.0.1:80');
})
拓展:解决中文乱码问题
res.setHeader('Content-Type', 'text/html;charset=utf-8')