egg入门指引,你绝对用得到
egg入门指引,你绝对用得到
较为熟悉的web开发框架如:express,koa作为经典的node技术应用,曾经是node开发的不二之选,但有没有更灵活更可靠的框架作为代替呢?答案就是egg .
阿里是最早一批使用Node.JS做基础技术支撑的公司,Node的出现让php/java的模式出现了被代替的可能,直到egg的1.0版本上线,这种模式变成了Node/java。作为一款定位为:『企业级的
web 基础框架』,他的出现坚决不是为了阿里的KPI,而是作为阿里 Node.js 应用的核心基础设施而诞生。
一、Egg与其他框架的对比:
与koa的对比:
Koa 由 Express 幕后的原班人马打造,设计初衷是抛掉express中不合时宜的回调以及引入更加强大的async/await机制和插件、中间件机制,目的是用更小的体积和更优雅的语法产生更快速的web服务端。
但对于面向企业级的应用框架来说,这还远远不够,多人协作的开发模式应以约定大于配置的形式来确保开发过程中产生更小的沟通成本,更高效的编码效率。而这也是egg最核心的东西。
egg带有一套自身的约定和规范,我们来看一下,用egg产生的工程目录。
这是一个非常简明的目录层级,app中包含了整个项目的业务逻辑和视图层,其中包括了如下:middleware、controller、model、router、service等,这些层级文件不会出现像其他框架那样让人头大的目录。相反这种结构用更清晰的方式为码农的世界增加了一丝清爽。
看一下app下的约定规范:
二、如何构建一个egg工程
1、安装node环境
运行环境:建议选择 LTS 版本,最低要求 8.x。
2、创建文件夹
可以手动创建,也可以使用命令行。
mkdir egg-example && cd egg-example
3、初始化egg工程
npm init egg --type=simple
然后可以看到:
4、执行依赖安装
npm i
5、启动项目
npm run dev
至此一个简单的egg工程就创建完毕了。
三、如何使用egg链接数据库
eggs链接数据库的方法,这里介绍两种:mongo和mysql。egg没有内置的数据库链接方法,我们需要引入第三方插件,而egg对于插件的支持也有非常强大的能力。
1、egg链接mongo数据库
mongo数据库在egg的链接中,用到的是:egg-mongo-native
使用方法:
- 安装
npm i egg-mongo-native --save
- 插件文件里面启用插件
找到{app_root}/config/plugin.js
exports.mongo = {
enable: true,
package: ‘egg-mongo-native’
};
- config.default.js 中配置数据库
// {app_root}/config/config.default.js
exports.mongo = {
client: { host: 'host',port: 'port',name: 'test',user: 'user', password: 'password', options: {}, }}
端口号和主机名需要根据实际情况自行配置;mongo的主机一般是localhost,端口号是27017
4. 简单介绍一下具体的应用:
查找:
let result=await this.app.mongo.find('order'); let result=await this.app.mongo.find('cate',{query:{"name":zhangsan"});
增加:
let result = await this.app.mongo.insertOne('cate', {doc:{"title":"分类"}});
修改:
const result = await this.app.mongo.findOneAndUpdate('cate', { filter:{"title":"分类"}, update:{$set:{"title":"11"} } });
删除:
const result = await this.app.mongo.findOneAndDelete('cate', {filter:{"title":"1111"}})
实际开发中我们会有一些工具,便捷的操作数据库和对数据进行增删改查。
比如 mongones.
2、egg链接mysql数据库
egg链接mysql的插件 egg-mysql
使用方法:
- 安装
npm i --save egg-mysql
- 插件文件里面启用插件
找到{app_root}/config/plugin.js
exports.mysql = {
enable: true,
package: ‘egg-mysql’,
};
- config.default.js 中配置数据库
// {app_root}/config/config.default.js > exports.mysql = { // 单数据库信息配置
> client: {> // host
> host: 'mysql.com',
> // 端口号
> port: '3306',
> // 用户名
> user: 'test_user',
> // 密码
> password: 'test_password',
> // 数据库名
> database: 'test', }, // 是否加载到 app 上,默认开启 app: true, // 是否加载到 agent 上,默认关闭 agent: false, };
- 简单介绍一下具体的应用:
查找:
const post = await this.app.mysql.get('posts', { id: 12 });
查找条件限制:
const results = await this.app.mysql.select('posts', { // 搜索 post 表where: { status: 'draft', author: ['author1', 'author2'] }, // WHERE 条件columns: ['author', 'title'], // 要查询的表字段orders: [['created_at','desc'], ['id','desc']], // 排序方式limit: 10, // 返回数据量offset: 0, // 数据偏移量
});
增加:
const result = await this.app.mysql.insert('posts', { title: 'Hello World' });
修改:
const result = await this.app.mysql.update('posts', ‘hi’);
删除:
const result = await this.app.mysql.delete('posts', {author: 'fengmk2',
});
egg入门指引,你绝对用得到相关推荐
- sklearn快速入门教程 -- 机器学习工具的快速入门指引
本系列教程旨在提供一个直观.快速的入门指引,从应用的角度进行阐述,提供框架性的理解方式. 全程共5篇教程.若抛开下载和安装的过程,应在2小时左右全部阅读和动手测试完成. (一)准备工作 (二)线性回归 ...
- Android 入门指引 从零基础学安卓怎么开始
android 如今是热门,无论是自学,培训班,大学,还是像我一样中年转行再学习的人,大有人在,需要一个入门指引的人,远比需要框架解 析源码分析的人多得多,我从csdn学了很多东西,比我上大学4年学的 ...
- 菜鸟零基础建站入门指引(仅供参考)
菜鸟零基础建站入门指引(仅供参考) 自主建站需要有域名.空间和网站备案 综合说明:参考https://help.aliyun.com/knowledge_detail/39784.html 大致流程: ...
- Flowable入门指引
Flowable入门指引 一.基本概念* 二.Flowable核心数据库表 三.集成绘制工作流插件 四.7大Service介绍 五.代码演示 六.总结与优化 一.基本概念* 工作流的重中之重就是先了解 ...
- iOS入门指引系列(零)
俗话说的是,万事开头难. 意思是开了头,再把一件事办下去就没有那么难了. 我相信每一个人当想入门一项新技能的时候都有这样的体会吧.特别是现在网络上各式各样的学习资料,文章,这些零星的资料反而让初学者迷 ...
- 微信开发学习总结(一)——微信公众号开发入门指引
本节要求: ①微信公众号申请 ②测试公众号的注册 ③准备微信公众号开发的环境 微信公众号开发入门指引 微信公众号的接入在微信公众平台-微信公众平台技术文档中有着详细的介绍.在进行微信开发前,建议先完整 ...
- 小学生python入门-写给中小学老师们的Python入门指引
最近Python十分火热,有很多地方教研部门都在大力推广Python编程教育,大多集中在小学和初中,至于python合不合适那个另外一个问题,我们来给教师们推荐一些入门的教育资料.作者:少儿创客帮 郎 ...
- VueJs学习入门指引
新产品开发决定要用到vuejs,总结一个vuejs学习指引. 1.安装一个Node环境 去Nodejs官网下载windows版本node 下载地址: https://nodejs.org/zh ...
- USBCAN-I使用说明书(入门指引)
第一部分 概述 用户使用我司的USBCAN/CANalyst-I分析仪主要为以下几种应用: CAN总线入门:学习CAN总线,了解CAN总线原理.数据格式. CAN总线进阶:调试CAN总线.调试开发板. ...
最新文章
- JAVA springboot ssm b2b2c多用户商城系统源码-SSO单点登录之OAuth2.0登录流程(2)
- 分布式任务队列 Celery — 深入 Task
- 字符串与byte[]之间的转换
- Androidstudio无法修改按钮颜色
- nodejs接收get请求参数
- 安卓UI测试(基于android studio环境 espresso框架)
- 米家电磁炉显示e10_米家电磁炉e10故障怎么回事
- Elasticsearch7.15.2 基础概念和基础语法
- python抓包代码_Python抓包并解析json爬虫的完整实例代码
- ppz css栅格框架
- dxf转nc代码软件_cad怎么转pdf?cad文件转换pdf文件的方法步骤
- tensorflow保存内容到相对文件路径下_如何添加自定义文件系统插件
- a small test by windows live writer 2011
- 实习成长之路:MySQL十:怎么给字符串字段加索引?
- 基于pytorch-openpose框架的的人体姿态检测
- cropper初始化_【jQuery插件分享】Cropper——一个简单方便的图片裁剪插件
- blender反选快捷键_【PS】常用操作及快捷键
- 这些年,这些ACM大佬-吴作凡访谈
- chapter html文件,chapter27_HTML解析(pyquery)
- 数据库学习笔记(进阶)
热门文章
- 服务器3389端口怎么修改,3389端口怎么修改 3389端口修改方法参考
- 读《臧圩人的Java面试题解惑系列》
- EMC Unisphere客户端连接EMC
- android system w,Android system.err
- CentOS使用yum命令安装软件失败,报错“Couldn‘t open file /data/ceph/ceph/repodata/repomd.xml“
- React集成中国地图
- 你需要掌握的 Koa 洋葱模型和中间件
- IDEA查看maven依赖关系的方法
- linux下c通过虚拟地址映射读写文件
- Win10系统通用串行总线(USB驱动损坏)的一种解决方法