Egg.js项目EJS模块引擎

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

javascript 复制代码
'use strict';
 
const {Controller}= require('egg')

class EjsController extends Controller{
    async EjsIndex(){
        const {ctx}=this
        await ctx.render("index.html")
    }
}

module.exports=EjsController

5.roter.js

说明:配置路由。

javascript 复制代码
  //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层

javascript 复制代码
const {Controller}= require('egg')

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

service层

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

javascript 复制代码
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样式。

html 复制代码
<!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.展示

相关推荐
派小心.25 分钟前
A/B测试工具免费版够用吗?
前端·数据分析
前端snow1 小时前
ai agent --- redis 缓存
前端
duanshu_2 小时前
官网表单与下载异常怎么排查?五个环节定位故障
前端·自动化·flyweight
Zhou1411362 小时前
SpringBoot_03_Web开发
前端·spring boot·python
辻弋2012 小时前
【无标题】
大数据·服务器·前端·搜索引擎·开源软件
FluxArt3 小时前
GPT Image 2.5 中文提示词教程:Flux Art 可复用模板
前端·gpt·算法
搬砖的小码农_Sky4 小时前
AI Agent:Windows上Node.js安装后 npm -v报错
前端·npm·node.js·人机交互
计算机魔术师4 小时前
半年翻倍!OpenAI再融300亿,估值冲到1.4万亿
前端
研☆香4 小时前
jQuery + Swiper.js 实现动态渲染轮播图
前端·javascript·jquery
子兮曰5 小时前
Node.js 50个优势场景盘点:一个人单干,为啥我多数时候只用它
前端·后端