node.js基础
node js基础入门
1.什么是nodejs
node.js是基于Chrome v8引擎的javascript 运行时(运行环境)
node.js的规范:commonjs规范
2.如何进入node.js(两种方式)
1.js文件方式:通过 js文件的方式(浏览器f12)
2.交互式:(node+文件名)
3.退出:exit
3.什么是模块化?
1.一个js文件就是一个模块
2.每个模块都是一个独立的作用域,在这个文件中定义的变量、函数、对象都是私有的,对其他文件不可见。
作用:1.能够复用
2.防止命名冲突
4.如何导入和导出
导入:require
导出:module.exports
5.模块化的分类(3种)
内置模块:由node本身提供,不需要单独安装(npm),直接require(引入)即可
自定义模块:由我们自己创建,比如tools.js/user.js
第三方模块:由社区或者个人提供,需要npm安装
【5-1】内置模块:
核心模块(先引入在使用):
fs:文件操作模块,
http:网络操作模块
url:解析地址模块
path:路径操作模块
querystring:解析参数字符串的模块
【5-2】自定义模块:
由开发人员创建的模块(js文件)
1.基本使用:
【1-1】创建模块
【1-2】引入模块
注意:自定义模块的路径必须以./获取../开头
2.加载模块
【2-1】require('./a') // 推荐使用,省略.js后缀!
【2-2】require('./a.js')
【5-3】第三方模块:
【3-1】由社区或个人提供的
【3-2】比如chalk(是一款改变运行环境时改变代码颜色的第三方模块)
6.创建http服务器
http.createserver((req,res))=>{
//http状态值:200
//内容的类型(响应头,解决中文编码问题)
response.writeHead(200,{"content-type":text/html;charset:utf-8"})
res.send("创建服务器成功")
}).listen(3000)
1.require函数用来获取node.js提供的模块;
2.request参数是客户端发来的信息;
3.response参数是服务器即将发送至客户端的消息;
4.端口设为3000
5.接着浏览器 输入127.0.0.1:3000 || localhost:3000即可访问当前的http服务,返回值是"创建服务器成功"
7.有关URL的解释
http://localhost:3000/user?name="李四"&password =123456
【http://localhost:3000是服务器部分,user?name="李四"&password =123456是客户端请求的参数】
//引入http模块
const http = require('http');
//引入URL地址
const url = require('url');
//创建服务器
http.createServer((req, res)=>{
//内容的类型(响应头,解决中文编码问题)
res.writeHead(200, {'Content-Type': 'text/plain'});
// 解析url参数
var params = url.parse(req.url, true).query;
res.write("名字::" + params.name);
res.write("\n");
res.write("密码:" + params.city);
res.end();
}).listen(3000);
//查看参数
location.pathname()
8.关于node.js的结构方式引入
//结构的方式将文件引入
var {a,b}=require("文件")
//将a的名字改为aaa,并将此进行解构赋值
var({a:aaa,b})=require("文件名)
9.关于对象的浅拷贝
es6:
var obj2 = {...obj}
es5:将此对象 给到一个新对象
var obj2 = Object.assign({},obj)
10.关于node的操作命令
【10-1】.找回删除的node-module文件
1.会产生package.json包管理工具
npm init -y
2.根据package.json里的依赖重新下载
npm i或者yarn命令
3.找回node-module文件
11.文件操作模块
同步:sync
异步:async
流:stream
同步:
const fs = require("fs")
//追加文件,不覆盖
var str1 = fs..appendFileSync("文件路径",'追加内容',"utf-8")
//读取文件
var str2 = fs.readFileSync("./a.txt","utf-8")
//写入路径覆盖
var str3 = fs.writeFileSync("./a.txt","替换内容","utf-8")
异步:
const fs =require("fs")
fs.readFile("文件路径","utf-8",(err,data)=>{
if(!err){
console.log(data)
}
})
fs.writeFile("文件路径","utf-8",(err,data)=>{
if(!err){
console.log(data)
}
})
流:
var fs = fs.createReadstream("./a.txt")
var str=""
rs.on("data",(thunk)=>{
str+=thunk
})
rs.on("end",()=>{
console.log(str)
})
流的拷贝:
const fs = require('fs')
var rs=fs.createReadStream("./a.txt")
var ws=fs.createWriteStream("./b.txt")
rs.pipe(ws)
(以下内容可参考npm说明文档)
1.引入
const cheerio = require('cheerio')
方法1:
//解析字符串数据
cheerio.load()
//防止文字乱码
res.setEnnding('utf-8')
2.当前文件的文件名:
__firname
【join相当于当前文件目录加上了HTmL(前+后)拼接】
var url = path.join(__firname,'/one.html')
console.log(url)//绝对路径
3.当前模块的目录名:
__dirname
【resolve相对路径转绝对路径(类似于CD命令)】
var url1 = path.resolve(__dirname,'..',"/kt.txt")
console.log(url1)
4.取得当前文件扩展名
var path=require('path'); /*nodejs自带的模块*/
var extname=path.extname("123.html");//获取文件的后缀名
console.log(extname)