这篇文章主要讲解了“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举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。