天时人事日相催,冬至阳生春又来。没有秀东和春雷的作者只身入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。