当前位置:网站首页 > iOS应用开发 > 正文

Web应用开发框架-egg(二)——快速入门之模板渲染、编写helper扩展、编写Middleware、渐进式开发 & egg总结

Web应用开发框架-egg(二)——快速入门之模板渲染、编写helper扩展、编写Middleware、渐进式开发 & egg总结

模板渲染
$ npm i egg-view-nunjucks --save 

开启插件:

// config/plugin.js exports.nunjucks = { 
    enable: true, package: 'egg-view-nunjucks' }; 
// config/config.default.js // 添加 view 配置 exports.view = { 
    defaultViewEngine: 'nunjucks', mapping: { 
    '.nj': 'nunjucks', }, }; 
<html> <head> <title>Hacker News</title> </head> <body> <ul class="news-view view"> hello world </ul> <h1>hello world</h1> </body> </html> 
编写helper扩展
// app/extend/helper.js exports.getData = () => { 
    return '我是处理后的时间' } 

模板引擎和ctx都可以获取helper对象

编写Middleware

类似koa中的中间件

// app/middleware/log.js module.exports = (options, app) => { 
    // egg约定 1. 可以定制化配置, 2.传入 app的实例 return async function log(ctx, next) { 
    // 和koa写法完全一样 console.log('我是日志!!!!!'); await next(); } } 
// config/config.default.js config.middleware = [ 'log' ]; 
  1. 写一个中间件
  2. 配置引入

渐进式开发

渐进式开发是egg里面的一种非常重要的设计思想。

  1. 需要封装一些方法, 最早起的需求雏形
// app/extend/context.js 给ctx对象扩展属性或者方法 module.exports = { 
    get isIOS() { 
    return '我不是ios' }, }; 
  1. 插件的雏形
example-app ├── app │ └── router.js ├── config │ └── plugin.js ├── lib │ └── plugin │ └── egg-ua │ ├── app │ │ └── extend │ │ └── context.js │ └── package.json ├── test │ └── index.test.js └── package.json 

lib/plugin/egg-ua/package.json 声明插件。

{ 
    "eggPlugin": { 
    "name": "ua" } } 

config/plugin.js 中通过 path 来挂载插件。

// config/plugin.js const path = require('path'); exports.ua = { 
    enable: true, path: path.join(__dirname, '../lib/plugin/egg-ua'), }; 
  1. 抽成独立的插件, 通过npm包的形式引入
egg-ua ├── app │ └── extend │ └── context.js ├── test │ ├── fixtures │ │ └── test-app │ │ ├── app │ │ │ └── router.js │ │ └── package.json │ └── ua.test.js └── package.json 
  1. 沉淀到框架
  • oa-egg
  • player-egg
  • music-egg
总结
  • 一般来说,当应用中有可能会复用到的代码时,直接放到 lib/plugin 目录去,如例子中的 egg-ua
  • 当该插件功能稳定后,即可独立出来作为一个 node module
  • 如此以往,应用中相对复用性较强的代码都会逐渐独立为单独的插件。
  • 当你的应用逐渐进化到针对某类业务场景的解决方案时,将其抽象为独立的 framework 进行发布。
  • 当在新项目中抽象出的插件,下沉集成到框架后,其他项目只需要简单的重新 npm install 下就可以使用上,对整个团队的效率有极大的提升。
到此这篇Web应用开发框架-egg(二)——快速入门之模板渲染、编写helper扩展、编写Middleware、渐进式开发 & egg总结的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • Web应用开发框架-egg(三)01-基础功能——目录结构的约定之框架规定的目录、内置插件约定的目录 & 内置对象之Application、context、Request & Response等2024-11-27 15:27:08
  • Web应用开发框架-egg(三)02-基础功能——运行环境 & Config配置之多环境配置、配置写法、配置加载顺序、合并规则、配置结果2024-11-27 15:27:08
  • Web应用开发框架-egg(三)03-基础功能——中间件之编写中间件、中间件的配置、使用中间件、在框架和插件中使用中间件 & 中间件的通用配置项2024-11-27 15:27:08
  • Web应用开发框架-egg(三)04-基础功能——路由之定义Router、restful风格的URL定义、获取路由参数2024-11-27 15:27:08
  • Web应用开发框架-egg(三)06-基础功能——插件之定义插件、编写插件 & 定时任务 & 自定义启动app2024-11-27 15:27:08
  • Web应用开发框架-egg(一)——Egg入门、Egg与Koa的关系 & 快速入门之编写Controller、静态资源2024-11-27 15:27:08
  • Web应用开发框架-koa(五)——koa总结之koa特点、koa-route路由 & 中间件之洋葱模型、异步中间件、中间件的合成 & 错误处理之http状态码、koa抛出错误、错误处理中间件2024-11-27 15:27:08
  • Web应用开发框架-koa(四)——koa错误处理之状态码 & koa抛错两种方式-try和catch、ctx.app.emit() & koa-body模块处理错误 & koa-body处理文件上传2024-11-27 15:27:08
  • Web应用开发框架-koa(三)——koa中间件之概念、洋葱模型-执行顺序、异步中间件、koa-compose中间件合成-compsoe函数2024-11-27 15:27:08
  • Web应用开发框架-koa(一)——koa入门与使用、context对象 & 读取并返回html片段之response把读取的内容返回给客户端2024-11-27 15:27:08
  • 全屏图片