Egg.js项目EJS模块引擎

news/2024/12/22 20:03:08/

1.介绍

  • 灵活的视图渲染:使用 egg-view-ejs 插件,你可以轻松地在 Egg.js 项目中使用 EJS 模板引擎进行视图渲染。EJS 是一种简洁、灵活的模板语言,可以帮助你构建动态的 HTML 页面。

  • 内置模板缓存:egg-view-ejs 插件内置了模板缓存功能,可以提高渲染的速度。在开发环境中,每次访问时会动态加载模板并进行渲染。而在生产环境中,模板会被缓存起来,提高性能。

  • 可配置的模板文件扩展名:egg-view-ejs 插件允许你自定义模板文件的扩展名,以适应不同的项目需求。默认情况下,EJS 模板文件的扩展名是 .ejs,但你可以根据需要进行设置。

  • 模板变量和局部变量:egg-view-ejs 插件支持向模板传递变量,并且可以使用局部变量进行模板渲染。你可以通过 ctx.render() 方法传递模板变量和局部变量,以便在模板中进行引用和渲染。

2.安装

说明:  npm i egg-view-ejs --save

3.配置

说明:配置plugin.js

  ejs:{

    enable:true,

    package:'egg-view-ejs'

  }

 说明:配置config.default.js

  config.view={

    mapping:{

      '.html': 'ejs'

    }

  }

 4.Controller

说明:建立ejs.js

'use strict';const {Controller}= require('egg')class EjsController extends Controller{async EjsIndex(){const {ctx}=thisawait ctx.render("index.html")}
}module.exports=EjsController

5.roter.js

说明:配置路由。 

  //ejs路由模块router.get("/ejsIndex",controller.ejs.EjsIndex)

6.创建响应的页面

说明: 在app里面创建页面(index.html)。因为 Egg.js 默认的视图文件存放位置是 app/view 文件夹,所以它会自动在该文件夹下寻找名为 "index.html" 的模板文件。

解释:这种自动寻找模板文件的机制是通过 Egg.js 的约定优于配置的设计理念实现的。它假设了在默认的视图文件夹内会有与路由相对应的同名模板文件。当你调用 ctx.render() 方法时,Egg.js 会自动根据路由和模板文件名进行匹配,找到对应的模板文件进行渲染。

 7.传递query参数

说明:controller层

const {Controller}= require('egg')class EjsController extends Controller{async EjsIndex(){const {ctx}=this// 获取数据const {name,age}=ctx.queryconst data=await ctx.service.new.getNewInfo(name,age)await ctx.render("index.html",data)}
}

service层

说明:service 是一种属于业务逻辑层的组织方式。它在整个应用程序的架构中属于服务层(service layer)。服务层主要用于封装处理业务逻辑、数据操作、外部接口调用等功能的代码。

const { Service } = require("egg");class NewService extends Service {async getNewInfo(name, age) {console.log("name" === name, "age" === age);return {name,age,id: 1,arr:["java","javascript","vue","node"]};}
}
module.exports = NewService;

说明:view文件夹下面的页面 。<%-  include  () %>引入非转义页面,原来的html页面。当中还添加了css样式。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><link rel="stylesheet" href="public/common.css">
</head>
<body><!--在 <%- %> 中的 - 符号是用于输出非转义内容的,即可以在引入的模板文件中保留原始的 HTML 标签等内容。  --><%- include ("header.html") %><h1>我使用了ejs插件</h1><h1><%=id %></h1><h1><%=name %></h1><h1><%=age %></h1><ul><% for (var i=0;i<arr.length;i++){%><li><%=arr[i]%></li><% }%></ul>
</body>
</html>

8.展示


http://www.ppmy.cn/news/1170177.html

相关文章

FPGA设计时序约束六、设置最大/最小时延

目录 一、背景 二、Max/Min_delay约束 2.1 约束设置参数 2.2 约束说明 三、工程示例 3.1 工程代码 3.2 时序报告 四、参考资料 一、背景 在设计中&#xff0c;有时需要限定路径的最大时延和最小时延&#xff0c;如没有特定时钟关系的异步信号&#xff0c;但需要限制最大…

开源博客项目Blog .NET Core源码学习(5:mapster使用浅析)

开源博客项目Blog使用mapster框架映射对象&#xff0c;主要是在数据库表对象及前端数据对象之间进行映射&#xff0c;本文学习并记录项目中mapster的使用方式。   App.Hosting项目的program文件中调用builder.Services.AddMapper函数进行对象模型自动映射&#xff0c;而该函数…

【读书笔记】《软技能》

句子摘抄&#xff1a; 软技能-代码之外的生存指南 “自强不息 孜孜不倦” 强调了坚持不懈、不断奋斗和追求进步的精神。无论遇到多少困难和挫折&#xff0c;都要坚持努力&#xff0c;不断提高自己&#xff0c;不知疲倦地追求目标。这句谚语鼓励人们积极进取&#xff0c;不轻言…

Unity中Shader的ShadowMapping的原理(阴影)

文章目录 前言一、阴影的作用1、阴影可以增加真实度2、阴影可以提升空间感 二、阴影的生成1、现实中阴影的生成2、Unity中阴影的生成 ShadowMapping 三、ShadowMapping原理1、在 光源处添加一个相机&#xff0c;同时打开深度测试 与 写入&#xff0c;并生成ShadowMap&#xff0…

Kotlin函数作为参数指向不同逻辑(二)

Kotlin函数作为参数指向不同逻辑&#xff08;二&#xff09; fun sum(): (Int, Int) -> Int {return { a, b -> (a b) } }fun multiplication(): (Int, Int) -> Int {return { a, b -> (a * b) } }fun math(a: Int, b: Int, foo: (Int, Int) -> Int): Int {ret…

UE4 AI群集实现

逻辑就不用说了&#xff0c;就是计算对应图形位置让每个Pawn移动到该位置 因为有时候AI与AI会卡住 所以加上这个Bool为true&#xff0c;以及设置两个AI之间至少隔的距离&#xff0c;设置在一个合理的参数即可 有时候AI群集&#xff0c;AI与AI会比较紧密&#xff0c;可以将Caps…

QMediaPlaylist 类使用教程

文章目录 1、简介2 、公共类型3、属性4、functions4.1、访问属性相关 function4.2、公共槽4.3、Signal4.4、其他方法 QT 官方文档参考地址&#xff1a;https://doc.qt.io/qt-5/qmediaplaylist.html 1、简介 moudleclass说明PyQt5.QtCore其他模块使用的核心非图形类QUrl用于处理…

Python高级技巧

十三、Python高级技巧 1. 闭包 解决全局变量问题&#xff1a; 代码在命名空间上&#xff08;变量定义&#xff09;不够干净、整洁全局变量又被修改的风险 定义&#xff1a; ​ 在函数嵌套的前提下&#xff0c;内部函数使用了外部函数的变量&#xff0c;并且外部函数返回了内部…