Nodejs:不是js,但是语法和Javascript非常相似
目的:使用代码搭建一个服务器&文件系统
如何运行:
打开cmd输入:node回车,就可以开始敲“js”代码了
脚本/文件模式:
先创建xx.js里面书写自己的代码
打开cmd输入:node文件的绝对路径
安装插件,前提:至少前两个方法能成功,才能安装插件
vacode-插件:code runner,对着代码处右键,第一个选项就是 coderunner,或者右上角有一个开始按钮可以点击
js和node的区别
相同点:都可以使用一切的ECMAScript的东西,包括一切API都可以使用,在服务器端不存在任何浏览器,所以不必担心ES5/ES6的兼容性问题。
不同点:
JavaSrcipt:ES+BOM+DOM
node:一切的BOM+DOM都没有
模块(module):每个xx.js都可以称之为是一个模块
模块开发:
分工合作:每个模块交给对应的人完成,最后再由【主模块】进行引入
每个模块都有一个操作,可用于公开/暴露自己的成员:
Node.js自带一个预定义变量:exports可以直接使用,是一个对象,放在此函数里面的路径就是允许引入的模块文件
语法:
var X=require("./路径");
模块的分类:
官方模块
第三方模块
自定义模块
官方模块:不需要下载,在安装Node.js环境的时候,就已经带上了但是某的模块需要引入,某的模块不需要引入
Global模块:不需要引入的,可以直接使用的
提供了:
五个预定义变量。可以直接使用
__filename -- 获取当前文件的完整的绝对路径
__dirname -- 获取当前文件的完整的绝对路径,不包含文件的名字
exports --空对象,可以公开暴露自己的成员
require -- 函数,可以导入其他模块
module -- 指代当前模块本身,包含以上几个操作
querystring模块:解析查询字符串,使其变成一个对象,可以获取到前端传到后端的消息(请求消息)
需要引入:var qs=require("querystring")
url模块:
需要引入:url=require("url")
buffer模块:缓冲区,可以将数据变成一个16进制的数字,可以理解为是Node.js中的一种一新的数据类型,不手动使用看不懂
fs模块:
需要引入:var fs=require("fs")
http模块:搭建服务器&文件系统,需要引入的
var http=require("http")
var url=require("url")
var fs=require("fs")
var app=http.createServer()
app.listen(80)
app.on("request",(req,res)=>{
var objUrl=url.parse(req.url,true)
var router=objUrl.pathname
if(router=="/"){
fs.readFile("/public/html/index.html",(err,buf)=>{
res.end(buf)
})
}
})
ip查询:打开cmd 输入ipconfig回车,IPV4地址(局域网址)
强调:一切的src和herf和action都是一个请求都是一个路由,这个请求就需要后端来解析,根据不同的请求响应不同的内容
如何下载第三方模块:
npm工具
在项目中打开cmd
下载:npm i 包名
更新:npm up 包名
删除:npm un 包名
mongo:
是基于JSON的数据库:json就是javascriot object notation-js的一部分所以用法和js相似
bin文件夹有mongo.exe(客户端)+mongond.exe(服务器端)
如何启动:
在bin文件打开cmd,输入:.\mongod.exe --dbpath=你想要保存的绝对文件路径
千万不要关闭mongod服务器端的cmd
再打开一个cmd输入:.\mongo.exe -- 再在上一个cmd可以查看是否连接成功
mongo语法:
数据库的操作:
查询所有的数据库:show dbs
创建/切换数据库,没有就是创建,有了就是切换:use
查看当前选中的数据库:db
创建数据表:db.createCollection("表名")
删除数据库:db.dropDatabase()
数据表的操作:
查看目前所有的数据表:db.getCollection Names()
删除数据表:db.表名.drop()
数据的操作:
增:db.表名.save([{键值对,....},{键值对,....}]) 不加[]只能加一个条件
删:db.表名.remove({条件}) 不加条件删除所有
改:db.表名.update({条件},{$set:{新内容}})
查:db.表名.find({})
Node.js操作数据库
下载安装第三方模块:mongoose
使用步骤:
引入:var mongoose=require("mongoose")
连接数据库:mongoose.connect("mongodb://127.0.0.1/数据库名称")
防止用户乱输入:
var UserSchema=mongoose.Schema({
name:string
pwd:string
ega:number
email:string
vip:string
})
var User=mongoose.model("User",UserSchema,"数据表名")
增:
var x=new User({
name:
pwd:
age:
email:
vip:
})
储存到数据库之中:
X.save.then(()=>{
})
删:
User.deleteOne/deleteMany({条件}).then(()=>{
})
改:
User.updateOne/updateMany({条件},{新内容}).then(()=>{
})
查:
User.find({条件}).then((rs)=>{
rs->查询到的JSON数据
})
同步和异步的概念:
同步交互:用户向服务器端发起请求,直到服务器端进行响应的全过程,用户是不可以做其他事情的(等)
异步交互:用户向服务器端发起请求,知道服务器端进行响应的全过程,用户是可以做其他事情的(不等)
AJAX:Asynchronous JavaScript And XML -- 异步的js和xml
如何使用:固定步骤4步
创建ajax核心对象
var xhr=new XMLHttpRequest()
前端建立和服务器端的连接
xhr.open("GET/POST","/路由")
向服务器端发送请求消息
xhr.send("key=value&...&...")
特殊:
GET:send方法失效,但是还不能省略,必须写为null
xhr.open("GET","/路由?key=value&...")
xhr.send(null)
POST:send方法可用
xhr.open("POST","/路由")
绑定状态监听事件
xhr.onreadystatechange=()=>{
if(xhr.readyState==4&&xhr.status==200){
xhr.responseText;
}
}