egg.js是不是node


这篇文章主要讲解了“egg.js是不是node”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“egg.js是不是node”吧! egg.js是node框架,是一个继承于Koa的node.js框架;egg.js框架不同于exporess、koa等基础框架,egg.js在应用级的提炼封装,使其更贴近业务场景,更快上手。了解 egg.jsEgg 是一个继承于 Koa 的 node.js 框架。不同于 exporess、koa 等基础框架,egg.js 在应用级的提炼封装,使其更贴近业务场景,更快上手。Egg 按照约定进行开发,奉行『约定优于配置』,团队协作成本低安装

npminitegg
npmi
npmrundev

一个基础的 API 大致由路由、获取请求参数、逻辑处理、返回响应数据几部分组成路由app/router.js 用于配置 URL 路由规则

router.get("/",controller.home.index);
//当访问GET'/',app/controller/home.js下的index方法会执行
router.post("/create",controller.user.create);
//当访问POST'/create',app/controller/user.js下的create方法会执行

获取请求参数this.ctx.query获取 URL 中 ? 后面的部分参数

//GET/posts?category=egg&language=node
//app/controller/post.js
classPostContr免费云主机域名ollerextendsController{
asynclistPosts(){
constquery=this.ctx.query;
//{
//category:'egg',
//language:'node',
//}
}
}

this.ctx.params获取路由中的动态参数

//app.get('/projects/:projectId/app/:appId',controller.app.listApp);
//GET/projects/1/app/2
classAppControllerextendsController{
asynclistApp(){
constparams=this.ctx.params;
//{
//projectId:'1',
//appId:'2'
//}
}
}

this.ctx.request.body获取 body 参数

//POST/api/postsHTTP/1.1
//Host:localhost:3000
//Content-Type:application/json;charset=UTF-8
//
//{"title":"controller","content":"whatiscontroller"}
classPostControllerextendsController{
asynclistPosts(){
constbody=this.ctx.request.body;
//{
//title:'controller',
//content:'whatiscontroller'
//}
}
}

返回响应数据this.ctx.body返回响应数据

classViewControllerextendsController{
asyncshow(){
//返回Content-Type为application/json的body
this.ctx.body={
name:"egg",
category:"framework",
language:"Node.js",
};
}
asyncpage(){
//返回Content-Type为text/html的body
this.ctx.body="

Hello

"; } }

使用 mysql 数据库安装 mysql 插件

npmiegg-mysql

配置

//config/plugin.js
exports.mysql={
enable:true,
package:"egg-mysql",
};
//config/config.${env}.js
exports.mysql={
//单数据库信息配置
client:{
//host
host:"localhost",
//端口号
port:"3306",
//用户名
user:"root",
//密码
password:"root",
//数据库名
database:"database",
},
};

使用

//查找id为${uid}的用户
awaitthis.app.mysql.get("users",{id:uid});

处理业务逻辑业务逻辑建议放在app/service中,当然也包括数据库的操作

//app/service/user.js
constService=require("egg").Service;
classUserServiceextendsService{
asyncfind(uid){
//假如我们拿到用户id从数据库获取用户详细信息
constuser=awaitthis.app.mysql.get("users",{id:uid});
returnuser;
}
}
module.exports=UserService;

之后可以通过 Controller 获取 Service 层拿到的数据。

//app/controller/user.js
classUserControllerextendsController{
asyncinfo(){
constctx=this.ctx;
constuserId=ctx.params.id;
//调用service层的user下的find方法
constuser=awaitctx.service.user.find(userId);
ctx.body=user;
}
}

基本 CURD 语句可以使用 create、get、select、update、delete 方法,直接执行 sql 语句可使用 query 方法。感谢各位的阅读,以上就是“egg.js是不是node”的内容了,经过本文的学习后,相信大家对egg.js是不是node这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是百云主机,小编将为大家推送更多相关知识点的文章,欢迎关注!

相关推荐: vue-router如何实现路由懒加载和权限控制

本篇内容主要讲解“vue-router如何实现路由懒加载和权限控制”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue-router如何实现路由懒加载和权限控制”吧!1、为什么要使用路由懒加载呢用vue.js写单页…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 03/03 12:34
下一篇 03/03 12:34

相关推荐