Eggjs 从放弃到开始使用

2023-11-13

原文:codesky.me/archives/eg…

用掘金刊登虽然分流了但是主要是!现在分享的曝光率实在太低了!!所以…………↑支持的请点下原博收藏下关注下以及我的微博。

咦,这篇文章标题为什么反了?

实际上这是个人走过的心路历程,最初看到 eggjs 的时候,我就觉得 Egg 很明显不符合我的审美——我选择 koa 的理由就是小巧精致,all in middleware. 而 eggjs 不是画蛇添足吗?

这次新项目用到了公司自改版 egg,不过其实也就是 egg 多封装了几个 service。

——一开始我是拒绝的。

egg 与 koa

egg 底层用了 koa,从开发体验上来说,有种求同存异的感觉,因为 koa 是自己一个个包找来的,所以我仿佛从 0 开始知道了为什么世界这么转,而封装好的世界就没有这种快感,同时,它扩展了一些概念:service / model / middleware / controller 都会进行自动注册,在 koa 的世界里,你可能需要自己写一段代码来实现自动注册。

此外,在 koa 的基础上,它免于了一些选择困难症,也就是说,只要开启它的插件,你就遵守 egg 的规定就可以了。

当然,这种时候也带来了另一种纠结,这类企业开发的框架规定了一种开发的标准语法和规范,你没法按照自己喜欢的方式来,只能遵守它的规定,没有 koa 那种爱怎么写怎么写的自由感——不过从另一个角度来看,可能是为了长期维护的可行性做出的牺牲。

配置

和我们平时用的配置库差不多,都是根据 env 区分文件名,值得一提的是,单元测试时,环境变量为变更为 unittest,所以可以定制测试环境时的配置。如果没有找到的配置会降级到 config.default.js 中取寻找。

测试

如果我这篇文章只是简单的把官方文档压缩压缩再灌输给大家,大家肯定也读的不(hen)开心。主要想说的还是 egg 给我们在测试环节带来的便利。

测试时往往我会思考以下问题:测些什么,mock 些什么,选择啥库,这三个问题往往会阻碍我行进的步伐,尤其是 mock 步骤太多的时候——SSO 要不要 mock,某些服务要不要 mock。调用了其他外部服务要不要 mock。这样一来一去可能就更不想测试了。

在 egg 中封装好的 Service 或者是 context 的属性是可以直接 mock 配置的,使得整个过程非常的流畅,流畅的另一个原因当然是不用想如同「今天吃什么」一样的问题——「今天挑什么库用」。

文档

剩下的就是 koa 和 egg 的文档了,koa 概念很少,基本是用到什么查什么就行了,而 egg 相比之下引入的新概念和内置的 API 就比较多了,按照我们的尿性,字太长不看,很有可能会错过什么,这里已经把某些我曾经错过的部分抽出来介绍了(逃)。

在 egg API 文档的阅读时,请记住,如果写着 the same as 或者 alias,请到指定位置查看接口信息;点击源代码也可能有意外之喜。

总之

如果你期待被规范,egg 还是一个值得选择的框架,于此同时,也可以定制自己的 egg 版本,封装一些常用 Service 给自己用,不过另一方面,由于封装的太齐全,我也遇到了:egg 是照着这个来的 -> 点击进入这个东西的文档 -> 这一部分请看这个文档 -> 又进入了另一个文档的深层窘境,这种深化带来的问题是,出了 Bug,如果定位到不是你——接下来甩锅给谁好呢?

总的来说,虽然有些蛋疼,还不算太惨不忍睹,某些场景下还是比较棒的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Eggjs 从放弃到开始使用 的相关文章

随机推荐

  • TFIDF算法Hadoop实现

    程序说明 利用MapReduce计算框架 计算一组英文文档中各个单词的TFIDF 某单词在某文档的TFIDF 该单词中该文档的TF 该单词IDF 其中 TF i j 单词i在文档j中出现的频率 Term Frequency TF i j N
  • MySQL之数据备份和恢复

    参考资料 关于备份的一些概念 http www open open com lib view open1382152331946 html 关于备份和数据恢复的简介 http wenku baidu com link url eVm3 9f
  • 初识C语言之数据类型,生命周期&作用域

    首先 C语言大致分为七种基础的数据类型 分别是char 字符数据类型 short 短整形 int 整形 long 长整形 long long 更长的整形 float 单精度浮点数 double 双精度浮点数 其中 char是描述字符的 sh
  • 金融行业的密钥及加密机制

    金融行业的密钥及加密机制 一 秘钥的标准体系 二 秘钥实现 三 常见术语 四 参考文档 一 秘钥的标准体系 目前金融行业的秘钥体系主要有两个 一是 Q CUP 006 4 2015 中国银联股份有限公司企业标准 中国银联银行卡交换系统技术规
  • PaddleOCR手写体训练摸索

    手写OCR识别 一 官方支持的数据格式 1 官方文档 1 1 PaddleOCR 支持两种数据格式 1 2 训练数据的默认存储路径 1 3 自定义数据集的准备 1 3 1 通用数据集 1 3 2 lmdb数据集 1 3 2 1 lmdb基本
  • LED为何通过电流控制?

    前段时间 散热部的同事咨询我关于手机的闪光灯输出电压值 说实话 一时间把我问住了 关于闪光灯 以往我们关注电流值 电压值很少关注 虽说手机的闪光灯驱动IC输出为BOOST电路 但是输出电压到多少 我还真未了解过 因闪光灯本身属于电流控制 所
  • 安装包制作工具 Inno Setup 6.0.2 汉化版-BY 胡萝卜周博客

    nno Setup 是一个免费的安装制作软件 小巧 简便 精美是其最大特点 支持pascal脚本 能快速制作出标准 Windows2000 风格的安装界面 足以完成一般安装任务 该软件用Delphi写成 其官方网站同时也提供源程序免费下载
  • mongdb 建立地图索引,删除,查询

    方式一 创建 db shop ensureIndex loc 2dsphere 2Dsphere索引 用于存储和查找球面上的点 db shop ensureIndex loc 2d 2D索引 用于存储和查找平面上的点 本人项目用的这种 查询
  • 阿里最新秋招面经,腾讯/美团/字节1万道Java中高级面试题

    又是一年过去了 职场的积雪还没有消融 又迎来了一次大考 疫情还没完全过去 大家强打起精神 相互问好致意 眼角却满是疲惫 企业调薪 裁员 组织架构调整等等 坏消息只多不少 最近也有很多来咨询跳槽的朋友 都是因为之前的公司出现了比较大的薪资和组
  • tomcat中间件的默认端口号_tomcat默认端口号(三个tomcat端口号)

    tomcat默认端口号 三个tomcat端口号 2020 05 08 10 43 21 共10个回答 Tomcat的默认端口号是多少 您好 提问者 Tomcat的默认端口号是 8080 weblogic的默认端口号是 7001 tomcat
  • 【机器学习笔记1】一元线性回归模型及预测

    目录 什么是线性回归模型 一元线性回归模型 问题引入 问题解析 代价函数 损失函数 代价函数的图像 为什么不是最小而是极小值 梯度下降算法 梯度下降算法公式 对于一元线性回归模型 学习率a的选择 关于梯度下降每一步的变化 补充 代码部分 案
  • SpringBoot整合邮箱验证(典中典)

    大体思路 先生成一个六位随机验证码并存起来 调用邮箱接口发送验证码 将用户输入的验证码和之前保存的验证码进行比对 目录 大体思路 第一步 开启SMTP服务 简单邮件传输协议 第二步 在项目中导入相关依赖 第三步 在配置文件里进行相关配置 第
  • CVE-2022-30190 MSDT远程代码执行漏洞复现

    目录 0x01 声明 0x02 简介 0x03 漏洞概述 0x04 影响版本 0x05 环境搭建 0x06 漏洞复现 是否存在利用点 CMD执行 生成docx文件利用 0x07 CS上线 启动CS服务端 CS客户端连接 设置监听 生成攻击e
  • JAVA 关于static中静态代码块的使用

    与一般静态方法的比较 一般情况下 如果有些代码必须在项目启动的时候就执行的时候 需要使用静态代码块 这种代码是主动执行的 需要在项目启动的时候就初始化 两者的区别就是 静态代码块是自动执行的 静态方法是被调用的时候才执行的 静态方法可以用类
  • 【多线程】ThreadLocal

    目录 简介 底层 set get 回收 简介 线程变量 以ThreadLocal为键 任意对象为值的结构 这个结构被附带在线程上 一个线程根据一个ThreadLocal对象查询到绑定在这个线程上的一个值 本地线程 线程的局部变量 只有当前线
  • 学习少儿编程成为一种必然趋势

    AI人工智能和少儿编程一直是大家热议的话题 在政策引领下 一些城市把人工智能带入中小学教材当中 格物斯坦小坦克认为从编程思维入手 让孩子养成清晰明朗的逻辑思维 在学习 做事各个方面 孩子将来都会得心应手 Scratch编程与其他代码编程 最
  • DS静态查找之折半查找

    题目描述 给出一个队列和要查找的数值 找出数值在队列中的位置 队列位置从1开始 要求使用折半查找算法 输入 第一行输入n 表示队列有n个数据 第二行输入n个数据 都是正整数 用空格隔开 第三行输入t 表示有t个要查找的数值 第四行起 输入t
  • 抓包基本命令

    一 概述 在一个A应用程序内数据有不同的格式如 Integer String等 但是通过网络将数据传输给B应用程序 那么在到达B应用程序之前 数据都将统一解析成数据包 也就是二进制串在网络中传输 在B应用程序前布置一个 网 在这个数据包到达
  • Linux: USB Gadget 驱动简介

    文章目录 1 前言 2 背景 3 USB Gadget 驱动 3 1 什么是 USB Gadget 驱动 3 2 USB Gadget 驱动框架 3 3 USB 设备控制器 UDC 驱动 3 3 1 USB 设备控制器 UDC 驱动 概述
  • Eggjs 从放弃到开始使用

    原文 codesky me archives eg 用掘金刊登虽然分流了但是主要是 现在分享的曝光率实在太低了 所以 支持的请点下原博收藏下关注下以及我的微博 咦 这篇文章标题为什么反了 实际上这是个人走过的心路历程 最初看到 eggjs