面试官:聊一聊Node.js的开发框架express,以及mongodb和mogoose

一,express

1.介绍

  • 基于 Node.js 平台,快速、开放、极简的 Web 开发框架

  • 提供web服务器 的功能 (路由,读取静态资源等)

  • html文件内容里含有变量或表达式,这样的html就叫模版 express常用 ejs模板
    ##2.名词解析

2.1反向代理

反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定

2.2 服务器端渲染(SSR)

简单理解是将组件或页面通过服务器生成html字符串,再发送到浏览器,最后将静态标记"混合"为客户端上完全交互的应用程序

  • 优势: 对seo友好 加载页面的速度快
  • 缺点: 占用服务器的资源

2.3 BSR 浏览器端渲染

  • 服务器只管提供数据(接口),渲染的工作是客户端来做
  • 接口 (接口文档)
    • 访问的接口地址
    • 访问的方式(get post)
    • 参数
    • 返回值 res.json

2.4 前后端分离

  • 服务器端只是提供数据(提供接口) res.json({key:value…})
  • 前端负责拿到数据,并且负责渲染到html页面上来 (fetch 语法 fetch(url).then(callback)

3.ejs模板引擎

  • 安装 npm i ejs --save

  • ejs模版默认是放在views的目录下 建立的模版文件 xxxx.ejs

  • 设置使用ejs 模板 app.set(“view engine”,“ejs”);

  • 更改模版的目录 app.set(“views”,“模版的目录”)

  • 渲染模版
    res.render(“views里的模版的文件名",{
    key就是模版里的变量: 值
    })

  • <%=变量%> 转义输出

  • <%-变量%> 不转义输出

  • <% js代码 %> 执行 js代码

4.中间件

  • 用户发送请求和返回结果中间执行的函数或方法

  • 中间件可以执行的功能很丰富,比如可以进行身份验证,参数的校验…

  • 使用中间件 app.use([请求字符串],路由中间件)

  • 提供的中间件,直接使用

    • express.static
    • express.Router
  • 自定义中间件

    • 拦截所有请求 app.use(function(){})
    • 拦截特定请求 router.get("/xxx",(req,res,next)=>{ })
  • 把express 的实例作为 http.createServer的中间件 http.createServer(app)

5.express生成器

  • 安装 npm i express-generator -g (express --version 如果能看到版本号就是安装好了)

  • 用生成器生成一个项目 express --view=ejs 项目的名字

  • 进入并启动项目

    cd 项目的目录   进入项目的目录
    npm install  安装依赖
    npm start  启动项目了
    在浏览器里 http://localhost:3000   3000是默认端口
    
    • bin/www 是启动文件
    • public 项目的静态资源目录
    • routes 路由中间件,帮我们处理用户的请求
    • views 模板目录
    • app.js 才是真正的项目执行的起点
    • package.json 包的配置文件
  • 获取用户提交的数据

    • 获取用户get提交的数据 req.query.变量
    • 获取用户post提交的数据 req.body.变量

二,mongodb

MongoDB是是非关系数据库当中功能最丰富数据库管理系统(文档数据库)

1.几个名词

  • 文档(document) {key:value,key1:value2,key2:value3…}
  • 集合(collection) 多个文档就构成了一个集合

2.安装

参数这个文档 https://www.cnblogs.com/keyi/p/10984514.html

  • 安装完以后, 找到 安装目录下的 C:\Program Files\MongoDB\Server\3.4\bin

    把这个路径设置到环境变量里(注意:千万不要删其他的环境变量)

3.启动

  • mongod --dbpath 路径 mongodb服务器的开启命令 能看到27017就表示启动成功
  • mongo 连接 mongodb服务器 ,并打开一个 数据库操作的命令行

4.常用命令

  1. 帮组命令
    • help 当前数据库系统相关的帮助信息
    • db.help() 数据库相关的帮组命令
    • db.集合.help() 集合相关的帮助信息

2.退出命令 exit
3.清屏命令 cls
4.数据库和集合的相关命令

  • show dbs 显示数据库的名字

  • show collections 显示当前的数据库的所有集合的名字

  • use 数据库名 如果不存在这个数据库,就建立一个,如果存在就切换到这个数据库

  • db 显示当前数据库的名字

  • db.集合.insert({key:value,key2:value2…})

    db.集合.save({key:value,key2:value2…})

  • 批量插入文档

    for(var i=0;i<10;i++){
           	   db.集合的名字.insert({key:value.....});
    }
    
  • 查询命令

    • db.集合.find() 显示当前集合的所有文档
    • db.集合.find().sort({key:-1}) -1 降序 1 升序 查询并排序
    • db.集合.find().count() 统计查询结果的文档数量
    • db.集合.find().limit(每页的文档个数).skip(略过的文档个数 (page-1)*pageSize) 分页
    • db.集合.findOne() 显示第一个文档
    • db.集合.find({key:{ g t : v a l u e , gt:value, gt:value,lt:value}}) 多个键值对是并且的关系( $gt > $gte >= $lt < $lte <=)
    • db.集合.find({$or:[key:value,key:value…]}) 多个键值对是或者的关系
  • 删除命令

    • db.集合.remove({key:value…}) {key:value…}表示条件
    • db.集合.remove({}) 删除集合里的所有文档
  • 修改命令

    • db.集合.update({条件},{$set:{key:value…}},不存在是否新增,是否修改多个文档)
    • db.集合.update({条件},{$inc:{key:value}}) 根据条件,增加(或减少) 满足条件文档的字段对应值

三,mongoose

Mongoose是在node.js异步环境下对mongodb进行便捷操作的对象模型工具

1.官网 http://www.mongoosejs.net/

2.安装 npm i mongoose --save

##3.常用的数据类型

  • String(http://www.mongoosejs.net/docs/api.html#schema-string-js)

  • Number

  • Date

  • Boolean

  • Array

4使用

  1. 引入mongoose var mongoose = require(‘mongoose’);

  2. 连接数据库 mongoose.connect(‘mongodb://localhost/test’);

  3. 建立模型 var Model = mongoose.model(“集合的名字”,Schema,[集合改后的名字])

  4. 用模型进行增删改查

    • 添加

      • 添加一个文档

        • var M = new Model({key:value}) Model 是存放模型的变量,不是固定的。

          M.save().then(callback)
          或 new Model({key:value,key1:value1……}).save().then(callback)

      • 一次添加多个文档

        • Model.insertMany([{key:value},{…}…]);
    • 删除 Model.remove…

    • 修改 Model.update…

    • Model.find({条件}).then((res)=>{}) res是数组类型

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值