# node **Repository Path**: halabs/node ## Basic Information - **Project Name**: node - **Description**: node学习过程 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-09-26 - **Last Updated**: 2021-09-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: Nodejs, JavaScript, Express ## README ## mvc 应用程序的设计模式 现在大部分都是前后端分离 ## 路由中间件 功能:定义路由 脱离 app这个对象 可以理解为一个小型的app 有get、post、use方法 ```js const router = express.Router(); router.get() router.post() router.use() ``` ## express中模板引擎 jade 侵入式 破坏式 div p 这是p内容 这是div文本内容 ejs 温和 ### 安装ejs ```js npm i ejs -S ``` ### 在express中使用 ```js app.set('views', path.join(__dirname,'views')) app.set('view engine', 'ejs') // 路由中 渲染 views目录中指定的ejs文件 res.render("模板名") ``` ### ejs做页面数据渲染 + render第二个参数 给 模板 传递数据 ```js res.render("模板名称", { }) /* 第二个对象参数,中的属性,会作为 ejs 变量在 ejs对应模板文件中拿到 渲染 */ ``` + ejs中渲染数据 - 输出 ```ejs <%= 变量名 %> ``` 1 必须有个值 要求是表达式 (变量 具体值 三目 短路) 2 js环境 3 变量 必须是 路由 render携带的变量 或者 ejs循环或者 if中声明变量 - 写任意js语句 ```ejs <% 任意js语句 %> eg 循环 <% for(var i=0;i
  • <%= arr[i] %>
  • <% } %> 判断 <% if(sign){ %> <%= sign %> <%}else{%> 这家伙很懒,什么都没有留下 <%}%> ``` - 渲染富文本 ```ejs <%- 富文本 %> ``` - 引入公共模板 ```ejs <%- include('模板名称') -%> ``` ## multer 文件上传中间件 ```js const router = require('express').Router(); const multer = require('multer') const path = require('path'); const storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, './public/uploads') }, filename: function (req, file, cb) { const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1E9) cb(null, file.fieldname + '-' + uniqueSuffix+ path.extname(file.originalname)) } }) const upload = multer({ storage: storage }) // 上传文件路由 router.post('/upload', upload.single('img'), function (req, res) { res.send({ code: 0, msg: '上传成功' }) }) module.exports = router; ``` ## mongodb安装 ignore 典型的 nosql 非关系型数据库 mongodb redis 关系型数据库 oracle mysql 关系型数据库 存储格式就是 表格 数据库 表 行 列 非关系型数据库 存储 就是 json 数据库 集合 collection document 文档 (json) key ## 启动mongodb mongodb不同mysql 需要手动指定 数据库 存储的目录 + 进入 安装目录启动 进入安装目录(bin所在目录)打开cmd - 手动指定 数据存储目录 推荐 ```js mongod --dbpath D:\软件\mongo\data ``` - 不指定 数据存储目录 mongodb 默认 盘符的 data/db是数据库存储目录 手动 去 盘符创建 data/db + 添加环境变量 可以在任意一个 path打开cmd运行 将 bin添加到环境变量中即可 ### mongodb原生sql 不重要(原生sql 语法 比较 灵活,没有做任何验证) 增删改查 看文档 查询三个修饰方法*** + limit(n) 查询的 数量 ```js db.stu.find().limit(2) // 只查询前两个条 ``` + skip(n) 跳过条数 ```js db.stu.find().limit(2).skip(2) ``` ### 利用 limit和skip做分页查询 ```js // page 第几页 pageSize 10一页多少条 1 10 0 2 10 10 3 10 20 。。。 db.stu.find().limit(pageSize).skip((page-1)*pageSize) ``` + sort 排序 ```js db.stu.find().sort({ _id: 1/-1 }) // 1升序 -1降序 ``` ### mongoose 在nodejs 操作 mongodb 对于数据库做验证