Egg.js入门

前言

本文首发公众号 【一名打字员】前端

众所周知 JavaScript 的生态圈出了名的好,配套设施完善,因此使用起来特别的顺手。前几回咱们介绍了使用 express 来进行简单的微信公众号开发,相信你们都已经了解到使用 node 能够方便快捷的进行开发 web 应用。可是因为阿里系的 egg 框架近期完成了 2.2.0 版本的迭代,让咱们看到了他们努力打造的框架中有不少值得学习以及参考的地方,因此【小谱君】团队也在使用 egg 进行整个系统的重构,包括参考 egg 的代码格式规范等等,进行一系列深层次的改造。node

今天来安利一下 egg ,经过 egg 快速选择适合对应业务模型的脚手架,快速启动项目的开发。git

简介

熟悉的打字员应该知道, egg 如今在社区特别的火爆,官方对它本身的定义是github

为企业级框架和应用而生,但愿由 Egg.js 孕育出更多上层框架,帮助开发团队和开发人员下降开发和维护成本。

由于 egg 是基于koa 2x开发的,因此官方还特别强调了与其它两个社区框架 ExpressSails 的差别点web

  • Express 是 Node.js 社区普遍使用的框架,简单且扩展性强,很是适合作我的项目。但框架自己缺乏约定,标准的 MVC 模型会有各类千奇百怪的写法。Egg 按照约定进行开发,奉行『约定优于配置』,团队协做成本低。
  • Sails 是和 Egg 同样奉行『约定优于配置』的框架,扩展性也很是好。可是相比 Egg,Sails 支持 Blueprint REST API、WaterLine 这样可扩展的 ORM、前端集成、WebSocket 等,但这些功能都是由 Sails 提供的。而 Egg 不直接提供功能,只是集成各类功能插件,好比实现 egg-blueprint,egg-waterline 等这样的插件,再使用 sails-egg 框架整合这些插件就能够替代 Sails 了。

特性

  • 提供基于 Egg 定制上层框架的能力
  • 高度可扩展的插件机制
  • 内置多进程管理
  • 基于 Koa 开发,性能优异
  • 框架稳定,测试覆盖率高
  • 渐进式开发

我的比较喜欢的地方就是其可扩展性特别高,并且做为特别喜欢渐进式开发的打字员来讲,不要太友好唷。并且是熟悉 Web 开发或 MVC 模式开发的童鞋的福音,由于在这里你能看到本身熟悉的controller和service,开发起来棒棒哒。express

快速开始

怎么快速的用 egg 快速的进行开发呢,咱们选择使用其官方提供的内置脚手架,推荐egg-initnpm

  • 建立项目

首先安装 eggnpm i egg-init -g), 而后初始化项目 egg-init egg-example --type=simplejson

  • 目录结构

    进入生成的 egg-example 目录,其结构以下:后端

egg-example
├── package.json(配置文件)
├── app
|   ├── router.js(路由文件)
│   ├── controller
│   |   └── home.js(用户控制层)
├── config
|   ├── plugin.js(插件配置)
|   ├── config.default.js(默认配置)
└── test
    └── app
        └── controller
            └── home.test.js(测试文件)

安装依赖以后咱们就可以运行 npm run dev 在本地查看了。微信

clipboard.png

在图中咱们能够看到,程序已经正常的在本地跑了起来,打印出当前使用的版本以及当前的 agent_worker 并监听了7001这个端口。关于 agentworker以及 master 的详细不在这里具体介绍,有兴趣的童鞋能够移步官网。

  • 编写程序

接下来咱们就能在 controller 编写本身的业务逻辑代码了,为了保持 Controller` 中的逻辑更加简洁,官方推荐增长 service 层,什么是 Service 呢,相信不少同窗对它还很陌生,简单来讲,
Service 就是在复杂业务场景下用于作业务逻辑封装的一个抽象层。同时把业务逻辑进行封装以后还能够保持业务逻辑的独立性,抽象出来的 Service 能够被多个 Controller 重复调用。而且将逻辑和展示分离,更容易编写测试用例。

这样一来,是否能够将以前写的微信公众号系统进行重构呢,在代码和整个架构上进行一个规范,赶忙动动手吧。

结语

国内前端优秀的开发团队还有不少,可是阿里算是作的比较好的,至少他家的文档让我总体看来很舒服,并且逐渐把前端的一些概念开始扩展,融入了一些后端的思想。想一想还有特别火热的 RxJs 系列,看来将来前端依旧会走在时尚的前流。

另外在学习的过程当中发现问题咱们能够给 egg 团队提 issue 的哇,或者有更好的解决方案能够提交 PR ,万一被合并了,这牛也能够吹半辈子了哈。

传送门

相关文章
相关标签/搜索