Egg 的基本知识点
2019-08-09 本文已影响3人
望穿秋水小作坊
1、Egg.js 是什么?
- Egg.js 是《阿里旗下产品》基于 Node.js 和 Koa 是一个 Nodejs 的企业级应用开发框架。可以帮助开发团队和开发人员降低开发和维护成本。
- Express 和 Koa 是 Nodejs 社区广泛使用的框架,简单且扩展性强,非常适合做个人项目。但是框架本身缺少约定,标准的 MVC 模型会有各种千奇百怪的写法。Egg 按照约定进行开发,奉行【约定优于配置】,团队协作成本低。
2、Egg.js 的特性:
- 提供基于 Egg 定制上层框架的能力
- 高度可扩展的插件机制
- 内置多进程管理
- 基于 Koa 开发,性能优异
- 框架稳定, 测试覆盖率高
- 渐进式开发
3、Egg 是一个 mvc 的框架
- view 视图 模板 页面的展示
- controller 控制器 负责处理一些业务逻辑的处理
- model 模型 和数据打交道(查询数据库 请求数据)
4、Egg 获取 get 传值
// 访问地址:
http://127.0.0.1:7001/newscontent?aid=22244
// router 配置
router.get('/newscontent', controller.news.content);
//controller 代码
async content(){
const {ctx} = this;
// egg.js 里面获取 get 传值
let query = ctx.query;
console.log(query)
ctx.body = '新闻详情';
}
5、Egg 获取动态路由参数
// 访问地址:
http://127.0.0.1:7001/newslist/life
// router 配置
router.get('/newslist/:id', controller.news.list);
//controller 代码
async list(){
const {ctx} = this;
// egg.js 里面获取动态路由参数
let params = ctx.params;
console.log(params)
ctx.body = '新闻列表';
}
6、Egg 使用 ejs 模板渲染页面
async ejs(){
const {ctx} = this;
// 要注意 render 方法是异步方法,要用 await。ejs 的配置从 github 里面有说明(egg-ejs)
let msg = '我是传值标题';
let list = [1,2,3,4,5];
await ctx.render('news',{msg,list})
}
7、Egg 使用静态资源css 或者 image
// 首先在 app/public 目录下创建 css 目录和 images 目录
// css
<link rel="stylesheet" href="/public/css/basic.css">
// images
<img src="/public/images/1.jpg" alt="" srcset="">
8、Egg 中 service定义以及使用
// controller 中调用 service 主要注意异步调用。
let msg = await this.service.news.getNewsTitle();
// service 定义
const Service = require('egg').Service;
class NewsService extends Service {
async getNewsTitle() {
return 'service 标题:福建新闻'
}
}
module.exports = NewsService;
9、Cookie 简介
cookie 是存储于访问者的计算机中的变量。可以让我们用同一个浏览器访问同一个域名的时候共享数据。
HTTP 是无状态协议。简单地说,当你浏览了一个页面,然后转到同一个网站的另一个页面,服务器无法认识到这是同一个浏览器在访问同一个网站。每次访问都是没有任何关系的。
10、Cookie 作用
- 可以实现 同一个浏览器访问同一个域的时候,不同页面之间的数据共享
- 实现数据的持久化 (关闭浏览器重新打开后数据还存在)
11、Cookie 的常用属性
maxAge:1000*3600*24 // cookie 存储一天, 关闭浏览重新打开不消失,除非过期了。
httpOnly:true // 只允许在 js 里面访问,不允许客户端页面直接访问。
signed:true // 对 cookie 进行签名 防止用户修改 cookie
encrypt:true // 是否对 cookie 进行加密 (需要解密,并且可以用中文 cookie)
12、session 简介
session 是另一种记录客户状态的机制,不同的是 cookie 保存在客户端浏览器中,而 session 保存在服务器上。
13、session 的工作流程
当浏览器访问服务器并发送第一次请求时,服务端会创建一个 session 对象,生成一个类似于 Key,Value 的键值对,然后将 key(cookie)返回到浏览器(客户)端,浏览器下次再访问时,携带 key(cookie),找到对应的 session(value).
11、Session 的常用属性
maxAge:1000*3600*24 // cookie 存储一天, 关闭浏览重新打开不消失,除非过期了。
httpOnly:true // 只允许在 js 里面访问,不允许客户端页面直接访问。
signed:true // 对 cookie 进行签名 防止用户修改 cookie
encrypt:true // 是否对 cookie 进行加密 (需要解密,并且可以用中文 cookie)
renew:true // 每次刷新页面的时候 session 都会被延期。