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' ];
- 写一个中间件
- 配置引入
渐进式开发
渐进式开发是egg里面的一种非常重要的设计思想。
- 需要封装一些方法, 最早起的需求雏形
// app/extend/context.js 给ctx对象扩展属性或者方法 module.exports = {
get isIOS() {
return '我不是ios' }, };
- 插件的雏形
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'), };
- 抽成独立的插件, 通过npm包的形式引入
egg-ua ├── app │ └── extend │ └── context.js ├── test │ ├── fixtures │ │ └── test-app │ │ ├── app │ │ │ └── router.js │ │ └── package.json │ └── ua.test.js └── package.json
- 沉淀到框架
- oa-egg
- player-egg
- music-egg
总结
- 一般来说,当应用中有可能会复用到的代码时,直接放到
lib/plugin
目录去,如例子中的egg-ua
。 - 当该插件功能稳定后,即可独立出来作为一个
node module
。 - 如此以往,应用中相对复用性较强的代码都会逐渐独立为单独的插件。
- 当你的应用逐渐进化到针对某类业务场景的解决方案时,将其抽象为独立的 framework 进行发布。
- 当在新项目中抽象出的插件,下沉集成到框架后,其他项目只需要简单的重新
npm install
下就可以使用上,对整个团队的效率有极大的提升。
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/yd-ios/10742.html