Egg & Node.js 从⼩⼯坊⾛向企业级开发@liuyong25 @atian25 全景图 Koa 基于规范实现⼀一套框架 - Egg 基于上层框架开发的应⽤用 社区⽣生态 团队架构师 ⼀一线开发者 Node.js Plugin 插件⽣生态 适合特定团队业务场景的上层框架 Framework 蚂蚁 Chair UC Nut aliyun-egg … Specification ⼀一套规范和约定 Tool ⼯工具链 都能搞一套 插件机制 [5/8] ▸ 核⼼心要素 - 丰富的扩展点 ▸ 前⾯面提过 Middleware 局限性,不不适合⽤用于承载扩展的职责。 ▸ 插件机制 ▸ 就是⼀一个迷你的应⽤用,⼀一样有 Service / Config / Extend / Middleware / … ▸ 插件是围绕某个功能组织的扩展集合 ▸ 插件之间可以声明依赖关系 插件机制 代码君的演化之旅 pluginDir = path.join(__dirname, '../lib/plugin'); // 挂载内部路路径的插件 exports.ejs = { path: path.join(pluginDir, 'egg-view-ejs'), }; 0.2 时代 - 在应⽤用内部孵化的插件雏形 showcase ��� app � ��� controller � ��� service �0 码力 | 70 页 | 7.57 MB | 1 年前3
聊聊 Node.js 构建部署时我们要关心的数据蚂蚁金服 目录 CONTENTS ✦ 源起 ✦ 构建数据 ✦ 部署结果 ✦ 启动数据 ✦ 大盘 / 健康模型 1 源起 我是如何扎入这个坑位的。 Egg.js 插件开发者视角 400+ Node.js 应用 来自灵魂的拷问 我是谁? 我要做什么? 谁用了我? 初衷 egg-niubility 构建部署流程 构建任务 统一脚本 触发部署 应用节点 /run/agent_config.json ‣ ./run/agent_config_meta.json 插件启停情况 ‣ 插件名 ‣ 包名 ‣ 版本 ‣ 最新版本 ‣ 启动 / 禁用 ‣ 最终由谁启动 / 禁用 ‣ 插件作者 应用基线之插件搜索 插件特化信息上报 ‣ 全量配置上报不够结构化 / 清晰 ‣ 有需求的插件自行按规范合成结构化的上报信息 ๏更易消化的配置信息 ๏一些有用的元信息 启动时长0 码力 | 47 页 | 5.80 MB | 1 年前3
ThinkJS 2.2 中文文档与 express/koa 对比 express/koa 是 2 个比较简单的框架,框架本身提供的功能比较简单,项目中需要借助大量的第三 方插件才能完成项目的开发,所以灵活度比较高。但使用很多第三方组件一方面提高了项目的复 杂度,另一方面第三方插件质量参差不齐,也会带来内存泄漏等风险。 koa 1.x 使用 ES6 里的 */yield 解决了异步回调的问题,但 */yield 只会是个过渡解决方案,会 项目里的一些通用 middleware 也推荐发布到 npm 仓库中,middleware 名称推荐使用 think-xxx 。 第三方 middleware 列表 第三方 middleware 列表请见 插件 -> middleware。 CSRF ThinkJS 提供了 CSRF 处理的 middleware,但默认并没有开启。 开启 CSRF 配置 hook 文件 src/common/config/hook API -> controller.rest。 Babel ThinkJS 2.1 中,将依赖的 Babel 版本从 5 升级到 6。由于 Babel 6 是个彻底重构的版本,完全插件 化了,所以很多模块在不同的插件都会有依赖,这样会导致一些问题,如: 安装后的目录很大,并且首次运行很慢 目录层级过深,windows 可能会报错 推荐的解决方案为将 npm 升级到 3,可以通过下面的命令升级:0 码力 | 277 页 | 3.61 MB | 1 年前3
Egg.js 在阿里巴巴集团的的实践运用
(Use arrow keys) › simple - Simple egg app plugin - egg plugin 进程模型 渐进式开发 ✤ 最初是状态 ✤ 插件的雏形 ✤ 抽成独⽴插件 ✤ 沉淀到框架 Demo mkdir -p lib/plugin cd lib/plugin egg-init --type plugin egg-nodeparty-hello egg-scripts ✤ egg-doctools 阿⾥内部落地 Koa Egg 基于上层框架开发的应⽤用 社区⽣生态 团队架构师 ⼀一线开发者 Node.js Plugin 插件⽣生态 适合特定团队业务场景的上层框架 Framework 蚂蚁 Chair UC Nut 集团 Begg … Specification ⼀一套规范和约定 Tool ⼯工具链0 码力 | 29 页 | 2.39 MB | 1 年前3
全栈⼯程师之路 Node.js太弱。 开发⼤大型软件? • 测试相关 tdd / bdd 测试覆盖率 • 规范化 standard、各种 lint、hint • 构建相关 gulp、grunt、webpack,⼤大量插件 • ⽣生成器 yo 等 • 包管理⼯工具 npm ⾜足够简单易⽤用 架构 Node.js 1)在语⾔言层⾯面可以做,那语⾔言层⾯面做 2)如果语⾔言层⾯面搞不定,那就架构层⾯面做 3)实在不够,java补 从移动端转 从cordova(以前叫phonegap)开始做hybrid开发 • 只要关注www⺫⽬目录⾥里的h5即可,⽐比较简单 • 如果h5不⾜足以完成的情况下,可以编写cordova插件,即通过插件让js调⽤用原⽣生sdk⾥里功能 • cordova的cli可以通过npm安装,学习npm的好⽅方法 • 学习gulp构建⼯工具 只要⼊入了h5的坑,其实就⾮非常好办了 • 然后0 码力 | 50 页 | 1.35 MB | 1 年前3
Node.js Manual & Documentation不建议在`require.paths`中发入相对路径 Zero Isolation 零隔离 Addenda: Package Manager Tips 附录:包管理技巧 Addons 扩展插件 process 进程 o Event: 'exit' 事件:'exit' o Event: 'uncaughtException' 事件:'uncaughtException' 将尝试以追加扩展名.js 后的文件名读取文 件,如果还是没有找到则尝试追加扩展名.node。.js 文件被解释为 JavaScript 格式的纯文本文件,.node 文件被解释为编译后的 addon(插件) 模块,并使用 dlopen 来加载。 A module prefixed with '/' is an absolute path to the file. For example, req Addons 扩展插件 Addons are dynamically linked shared objects. They can provide glue to C and C++ libraries. The API (at the moment) is rather complex, involving knowledge of several libraries: 扩展插件(Addon0 码力 | 153 页 | 1.21 MB | 1 年前3
ThinkJS 3.0 中文文档是一款面向未来的 Node.js 开发框架,整合了很多最佳实践,让企业级开发变得更加简 单、高效。从 3.0 开始,ThinkJS 基于 koa 2.x,完全兼容 koa 里的 middleware 等插件。 同时,ThinkJS 支持 Extend 和 Adapter 等方式,方便扩展框架里的各种功能。 特性 支持 Middleware、Extend、Adapter 等扩展方式 基于 Koa 20 码力 | 129 页 | 2.12 MB | 1 年前3
共 7 条
- 1













