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.展示

相关推荐
excel1 小时前
如何解决 Nuxt DevTools 中关于 unstorage 包的报错
前端
Rust研习社2 小时前
使用 Axum 构建高性能异步 Web 服务
开发语言·前端·网络·后端·http·rust
C澒2 小时前
AI 生码 - API2Code:接口智能匹配与 API 自动化生码全链路设计
前端·低代码·ai编程
浔川python社2 小时前
HTML头部元信息避坑指南技术文章大纲
前端·html
IT_陈寒2 小时前
SpringBoot配置加载顺序把我坑惨了
前端·人工智能·后端
kyriewen2 小时前
Next.js部署:从本地跑得欢,到线上飞得稳
前端·react.js·next.js
Moment2 小时前
面试官:给 llm 传递上下文,有哪几个身份 role ❓❓❓
前端·后端·面试
跨境数据猎手2 小时前
跨境独立站系统技术拆解(附带源码)
服务器·前端·php
豹哥学前端3 小时前
用猜数字游戏,一口气掌握 JavaScript 核心知识点(附完整代码)
前端·javascript
忆往wu前3 小时前
从0到1一步步拆解搭建,梳理一个 Vue3 简易图书后台全开发流程
前端·javascript·vue.js