崔学社- 关于egg入门的体验--(第一天学习)

245 阅读4分钟

前端入门汉 天时人事日相催,冬至阳生春又来。没有秀东和春雷的作者只身入node

1.第一章

1.1 围炉氤氲诗团圆,冬至拜山门

仙宗地址 白雾埋阴壑,丹霞助晓光。身着灰亚麻布,口中吞吐着热气的少年蜷缩在山门石狮子旁,时不时还窜弄着藏在袖子里的生满冻疮的手。 “咚~ 咚 ~ 咚”,仙宗的开静钟声先打紧十三再打慢十四,亦三遍共合八十一下。可是在快冻僵的少年看来,这个什卵子的钟声像刀子一样一声又一声的割在他的心尖上,“恩娘个脚”这是少年待了一晚上说出的唯一一句话。 钟停,少年的血液才敢开始流动,扶身站起,“哎···呀”像极了累惨了伸懒腰的声音。左边的山门吱呀吱呀的打开了,拿着长条扫帚的小道士迈出了他的左脚出了门槛。“小道士,有斋饭吃吗?”,小道士闻声看去。少年斜着身子,半绺头发遮住了半边脸颊,属实一副落魄样子。“嗯~有,斋堂里的白粥馒头都差不多煮好了 ”小道士木讷的回答道。“那你赶紧带我去吃啊”少年一副看痴呆儿的表情说到,估计也是饿的丢了脑子。 半晌后,粥足馍馍饱的少年,一只脚放在板凳上,一只手不知道从哪顺来的狗尾巴草剔着牙,“小道士听说你们这里收人啊,包吃包住吗?”,小道士摸了摸发髻,答道:“招,我师兄就是招生人,我可以带你去见他”,话还没说完,少年啪的一脚把板凳归位了,抓住小道士的袖子。“走啊,还愣着干嘛呢”,小道士哪里见过这种刁民,只好带着他走向师兄的招生办。

1.2 少年负壮气,奋烈自有时

“名字”,“李二狗”。“籍贯”“泑山人士”。“年庚”“十五”。“好了你可以跟着小师弟去领衣服,先去安顿后,宗门后面会给你安排”,国字脸皮肤有些黝黑的道士说完给了少年一个包裹,和一张手牌上面写着零幺幺 。说完便被小道士领着去了他的住处,少年迫不及待的打开了包裹,里面只有一本名叫egg的功法,翻开此书的第一页写着几个大字Egg.js 为企业级框架和应用而生

2.1.2 三更灯火五更鸡,正是男儿读书时。

Egg.js的特点j介绍

  • 提供基于Egg定制上层框架的能力
  • 高度可扩展的插件机制
  • 内置多进程管理(Node是单进程,无法使用多核CPU的能力)
  • 基于Koa开发,性能优异
  • 框架稳定,测试覆盖率高
  • 渐进式开发,逐步模块化模式 少年被上面的文字深深的吸引到了,随即按照教学在体内运行
$ mkdir egg-example && cd egg-example
$ npm init egg --type=simple
$ npm i

启动项目:

$ npm run dev $ open http://localhost:7001

2.1.3 egg功法的目录介绍

目录结构

egg-project ├── package.json ├── app.js (可选) ├── agent.js (可选) ├── app |   ├── router.js │   ├── controller │   |   └── home.js │   ├── service (可选) │   |   └── user.js │   ├── middleware (可选) │   |   └── response_time.js │   ├── schedule (可选) │   |   └── my_task.js │   ├── public (可选) │   |   └── reset.css │   ├── view (可选) │   |   └── home.tpl │   └── extend (可选) │       ├── helper.js (可选) │       ├── request.js (可选) │       ├── response.js (可选) │       ├── context.js (可选) │       ├── application.js (可选) │       └── agent.js (可选) ├── config |   ├── plugin.js |   ├── config.default.js │   ├── config.prod.js |   ├── config.test.js (可选) |   ├── config.local.js (可选) |   └── config.unittest.js (可选) └── test     ├── middleware     |   └── response_time.test.js     └── controller         └── home.test.js 

如上,由框架约定的目录:

  • app/router.js 用于配置 URL 路由规则,具体参见 Router
  • app/controller/** 用于解析用户的输入,处理后返回相应的结果,具体参见 Controller
  • app/service/** 用于编写业务逻辑层,可选,建议使用,具体参见 Service
  • app/middleware/** 用于编写中间件,可选,具体参见 Middleware
  • app/public/** 用于放置静态资源,可选,具体参见内置插件 egg-static
  • app/extend/** 用于框架的扩展,可选,具体参见框架扩展
  • config/config.{env}.js 用于编写配置文件,具体参见配置
  • config/plugin.js 用于配置需要加载的插件,具体参见插件
  • test/** 用于单元测试,具体参见单元测试
  • app.js 和 agent.js 用于自定义启动时的初始化工作,可选,具体参见启动自定义。关于agent.js的作用参见Agent机制

由内置插件约定的目录:

  • app/public/** 用于放置静态资源,可选,具体参见内置插件 egg-static
  • app/schedule/** 用于定时任务,可选,具体参见定时任务

若需自定义自己的目录规范,参见 Loader API

  • app/view/** 用于放置模板文件,可选,由模板插件约定,具体参见模板渲染
  • app/model/** 用于放置领域模型,可选,由领域类相关插件约定,如 egg-sequelize