Node.js
一.模块
1.公开暴露
exports
module.exports
笔试题:两者的区别
都是公开暴露,但exports={}写法错误,底层有exports=module.exports,如果用exports={},覆盖了module.exports,不再具有公开功能
二.官方模块
1.Globals模块-全局模块-全局变量在所有模块中都可以使用,不需要引入
_dirname-当前文件夹的绝对路径
_filename-当前文件夹完整的绝对路径
exports-一个空{}公开暴露自己的成员
module-指代当前模块本身
require()-一个函数,引入其他的模块
2.Url模块:网址模块-小重点
需要引入let url=require('url')
提供了一些实用函数,用于完整的URL解析
var objUrl=url.parse('完整的url网址',true)会将url网址各个部分解析出来
真正的重点:查询字符串:bojUrl.query.键名
objUrl.pathname-判断路由的不同,响应给不同的网页给用户看
3.fs模块FileSystem-文件系统-今天大重点
引入: var fs=require('fs')
提供了可以操作文件的API
异步读取文件
fs.readFile('绝对路径|文件路径',(err,buf)=>{
拿到BUF干嘛,写在这
})
异步写入文件:- 将原来的东西,替换掉
fs.writeFile("绝对路径|文件路径","写入的新内容",()=>{
console.log("写入完毕了,以后要做什么")
})
异步追加文件:- 保留原来的东西
fs.appendFile("绝对路径|文件路径","写入的新内容",()=>{
console.log("写入完毕了,以后要做什么")
})
4.Buffer模块:缓冲区,将数组变成一个16进制的数字,不需要引入,直接使用
5.Querystring模块:查询字符串
需要引入:let qs = require('querystring');
提供了解析url的查询字符串部分的功能
var obj=qs.parse("查询字符串部分");
想要获取前端传来的某一个部分:obj.键名;
6.http模块-超级重点
引入模块
var http=require('http')
var url=require('url')
var fs=require('fs')
创建服务器
var app=http.creatSever()
设置监听端口
app.listen(80)http默认80,https默认443
绑定请求事件
app.on(req,res)=>{
}
得到前端传来的路由部分
var objUrl=url.parse(req,url,true)
var rooter=objUrl.pathname
判断前端的路由是什么,给她返回不同点的页面
if(router=="/" || router=="/index.html"){
//res - response:保存响应对象,后端->前端,提供了一个方法res.end(你想要响应的东西)
fs.readFile("./public/index.html",(err,buf)=>{
res.end(buf);
})
}else if(router.match(/html/)!=null){
console.log(router);
fs.readFile("./public"+router,(err,buf)=>{
res.end(buf);
})
}else if(router.match(/css|js|jpg|png|gif|woff/)!=null){
fs.readFile("./public"+router,(err,buf)=>{
res.end(buf);
})
}
})
MongoDB
一.mongo语法
1.数据库操作
1.查询数据框show dbs
2.创建/切换数据库 use 数据库名称
3.查看当前的数据库 db
4.创建数据库 db,creatCollection('表名')
5.删除数据库 db.dropDatabase()
2.数据表操作
1.创建数据表 db.creatCollection('表名',{size:5242880,capped:true,max:5000}); - 第 个参数限制操作,最大存储空间为5M,最多为5000条数据 - 个人不推荐做限制
2、查看目前所有的数据表:db.getCollectionNames();
3、删除数据表:db.表名.drop();
3、数据操作:
1、增:db.表名.save({属性名:属性值,....}) - 一次只能插入一条数据 - 注册
举例:db.users.save({name:"hjf",age:18,pwd:"123123",email:"hjf@qq.com",vip:"0"})
db.表名.save([{},{},{},...]) - 一次只能插入一条数据
个人建议:键名要统一
2、删:db.表名.remove({键值对}) - 注销账号
举例: db.表名.remove({username:"lr"})
3、改:db.表名.update({条件},{要改的新内容}) - 修改密码
举例:db.表名.update({name:"paoge",pwd:"666666"},{age:17}) - 这句话会把名字为paoge和密码为666666的替换为只剩age为17
db.表名.update({name:"paoge",pwd:"666666"},{$set:{age:17}}) - 仅仅只修改了age
最难的:
4、查:db.表名.find({}) - 所有的
db.表名.find({age:18}) - 找到所有年龄为18的数据
db.表名.find({age:{$gte:18}}) - 找到所有年龄大于等于18的数据
db.表名.find({name:/正则/}) - 甚至可以写入正则来进行模糊查询
db.表名.find({},{name:1,age:1}) - 只需要name和age,其他的不要,1和0相当于是开关 - 我们登陆时只需要判断用户名和密码是否正确
db.表名.find().sort({age:1}) - 按照age升序排列,降序的话换为-1
db.表名.find().skip(0).limit(2) - 跳过前0条,再拿2条,可以理解为前两条;
db.表名.find().count() - 获取此表有多少条数据
二.Node.js如何与MongoDB关联起来
1.安装mongoose第三方模块
2.使用步骤
1.引入:const mongoose=require('mongoose')
2.连接数据库:mongoose.connect('mongodb://127.0.0.1/数据库名称')
3.创建出一个新的额数据库的同时,设置数据库类型的控制,防止用户恶意输入
var userSchema=mongoose.Schema({
name:String,
age:Number,
pwd:String,
email:String,
vip:String
})
var 模型名=mongoose.model('Users',userSchema,'users')
4.SQL语句
增:
var user=new 模型名({
name:'dy1'
age:'abc'
})
user.save((err)=>{
console.log(err)错误提示对象,null说明没有错误
插入完毕后要干什么在这写代码
})
删
模型名.deleteOne/deleteMany({条件},(err)=>{
删除完毕后干嘛写在这
})
改
模型名.updataOne/updataMany({条件},{新内容},(err)=>{
修改完毕后干嘛写在这
})
查
模型名.find({条件},(err,result)=>{
result;查询到数据库中的东西
})
ajax
一.概念:
同步交互:用户向服务器端发起请求的时候,直到服务器响应的全过程,用户是不可以做其他事情的
典型:网址请求,表单请求
异步交互:用户向服务端发起请求的时候,直到服务器进行响应的全过程,用户是可以做其他事情的
典型:ajax请求
ajax:asnchronous JavaScript XML;直译:异步的js和xml-前端技术
不严格的定义:页面不会完整的刷新,只会导致局部页面发送变化
早就见过异步技术了
1.定时器,定时器里面的内容再耗时也不会卡住后续代码-做特效
2.ajax,在不刷新页面的额情况下就可以与客户端交流,不用表单提交,也可以将服务器的数据放在前端
2.如何使用:固定四步
1.创建ajax核心对象XMLhttpRequest
var xhr=XMLhttpRequest
2.建立与服务器端的连接
xhr.open('GET','路由')
3.向服务器发起请求
xhr.send() 特殊,GET请求下,xhr.send()会失效,但是不能省略,xhr.send(null)
4.绑定状态监听时间
xhr.onreadystatechange=()=>{
if(xhr.readyState==4&&xhr.status==200){
xhr.responseText;--得到服务器响应的文本
}
}
1、XML数据格式:
1、面试题:HTML\XHTML\DHTML\XML分别是什么?
HTML - 网页
XHTML - 更严格的网页
DHTML - 动态的网页:D:Dynamic - 不是新技术、新概念,只是现有技术整合的统称,让我们的网页在离线版依然具有动态特效
DHTML:HTML+CSS+JS(dom)
XML - 配置文件|数据格式
其实保存数据有两种方式:
1、把数据放到数据库
2、把数据保存在一个文件之中.xml文件 - low
2、***JSON数据格式:JavaScript Object Notation:js对象表示法,本身就是js的一部分
作用:数据格式 类似 XML
优点:比XML 更简洁、更快、更容易解析 - 一个优秀的数据格式/结构能极大的提升我们程序员的开发效率
属于【字符串】数据表示法
1、后端的操作:哪些数据JSON字符串:后端把数据库的数据取出来,整理为一个JSON字符串:
1、先要认识哪些叫做JSON字符串:
1、'[1,2,3,4,5]'
2、'{"key":value}'
3、'[{},{},{},{},{}]'
4、'{"names":["代老师","冉老师","卢老师"]}'
2、怎么才能变为JSON字符串:
*JSON.stringify(x);
2、前端:依然使用ajax去获取数据,但是真正重要的是xhr.responseText;
拿到JSON字符串并不方便我们获取数据,怎么脱衣服?
1、eval("("+jsonTxt+")"); - 只要外层是{},优先级就会出现问题,导致脱衣服报错
2、*JSON.parse(jsonTxt);
本文详细介绍了Node.js中的模块系统,包括exports与module.exports的区别,以及官方模块如Url、fs、Buffer、Querystring和http模块的使用。特别强调了fs模块在文件读写中的异步操作。此外,还讲解了MongoDB的基础操作和Node.js通过mongoose与MongoDB的连接,包括增删改查的实现。最后,提到了JSON数据格式在前后端交互中的应用。
291

被折叠的 条评论
为什么被折叠?



