前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
  • React专栏

    • React组合式开发实战

      • 前端开发的四个时代
      • 企业管理系统的前世今生
      • 可视化页面搭建工具
      • 实战篇 01:开发前准备
      • 实战篇 02:项目脚手架
      • 实战篇 03:页面布局方案
      • 实战篇 04:权限管理机制
      • 实战篇 05:菜单匹配逻辑
      • 实战篇 06:消息通知设计
      • 实战篇 07:多语言支持
      • 继往开来:可视化页面搭建工具
    • React Hooks与Immutable实战

    • React SSR服务端渲染与同构实践

    • IM聊天系统前端开发实践

    • 微前端开发实战

    • React进阶实践

  • Vue专栏

  • 移动端专栏

  • Node专栏

  • 前端工程化专栏

  • 算法专栏

  • Typescript专栏

  • 其他专栏

完整面试题地址:
作者:程序员poetry
扫码关注作者公众号:「前端进阶之旅」 每天分享技术干货
前端进阶之旅公众号二维码

# 环境准备

  • 操作系统:支持 macOS,Linux,Windows
  • 运行环境:建议选择 LTS 版本,最低要求 8.x。

# 初始化

# 使用脚手架生成 Egg 项目

推荐直接使用脚手架,只需几条简单指令,即可快速生成项目(npm >=6.1.0):

$ mkdir egg-example && cd egg-example
$ npm init egg --type=simple
$ npm i
@前端进阶之旅: 代码已经复制到剪贴板

上面这种方式是 egg.js 官方推荐的创建简易项目, 而我们本小册使用 Typescript 开发, 所以我们换种方式:

TypeScript 初始化方式

$ npm init egg --type=ts
$ npm i
@前端进阶之旅: 代码已经复制到剪贴板

# 目录结构

egg-example

    |-- .autod.conf.js
    |-- .gitignore
    |-- .travis.yml
    |-- README.md
    |-- appveyor.yml
    |-- package-lock.json
    |-- package.json
    |-- tsconfig.json			# 指定了用来编译这个项目的根文件和编译选项
    |-- tslint.json				# 代码检查
    |-- app
    |   |-- router.ts			# 用于配置 URL 路由规则
    |   |-- controller			# 用于解析用户的输入,处理后返回相应的结果
    |   |   |-- home.ts
    |   |-- public				# 用于放置静态资源
    |   |-- service				# 用于编写业务逻辑层
    |       |-- Test.ts
    |-- config					# 用于编写配置文件
    |   |-- config.default.ts
    |   |-- config.local.ts
    |   |-- config.prod.ts
    |   |-- plugin.ts			# 用于配置需要加载的插件
    |-- test					# 用于单元测试
    |   |-- app
    |       |-- controller
    |       |   |-- home.test.ts
    |       |-- service
    |           |-- Test.test.ts
    |-- typings					# 目录用于放置 d.ts 文件
        |-- index.d.ts
@前端进阶之旅: 代码已经复制到剪贴板

gg API 项目中,一般都会包括这些功能项:路由文件、控制器目录、逻辑层目录。这些都在上述的代码结构中有列出,这是典型的 MVC 架构。新加功能时将代码放入对应功能的目录/文件中,可以使整个项目代码结构更加清晰,非常有利于后期的查找和维护。

# MVC

MVC 全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

# 安装插件

插件机制是Egg框架的一大特色,形成了egg 的繁荣的生态圈,接下来我们就来安装我们本次项目的第一个插件。

由于我们后续的实战是基于 TypeScript 的,所以在这里我选择了一个支持 TypeScript 的包 @switchdog/egg-graphql 。

$ npm i --save @switchdog/egg-graphql
@前端进阶之旅: 代码已经复制到剪贴板

# 开启插件

在 config/plugin.ts 下告诉 egg 开启哪些插件:

fe
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
  • React专栏

    • React组合式开发实战

      • 前端开发的四个时代
      • 企业管理系统的前世今生
      • 可视化页面搭建工具
      • 实战篇 01:开发前准备
      • 实战篇 02:项目脚手架
      • 实战篇 03:页面布局方案
      • 实战篇 04:权限管理机制
      • 实战篇 05:菜单匹配逻辑
      • 实战篇 06:消息通知设计
      • 实战篇 07:多语言支持
      • 继往开来:可视化页面搭建工具
    • React Hooks与Immutable实战

    • React SSR服务端渲染与同构实践

    • IM聊天系统前端开发实践

    • 微前端开发实战

    • React进阶实践

  • Vue专栏

  • 移动端专栏

  • Node专栏

  • 前端工程化专栏

  • 算法专栏

  • Typescript专栏

  • 其他专栏