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

相关推荐
福兮说5 小时前
设计稿是 #4A7C6F,页面量出来是 #4B7C6F:HEX、HSL、透明度、canvas 来回转的七个坑
前端·javascript·css·canvas
郑州光合科技余经理5 小时前
海外版外卖加盟:总站与分站配送规则怎么分开管
java·开发语言·前端·后端·uni-app·php·ai编程
小呆呆6666 小时前
副业搞起来,小说,漫画,漫剧的成本优化思路
前端·后端·面试
凤城老人6 小时前
从 PyQt6 到 Electron:给 Edge TTS 做一个“多角色配音机“的踩坑手记
javascript·typescript·electron
Dovis(誓平步青云)6 小时前
浇水提醒刚弹出又消失,植物状态别只存一个百分比
开发语言·前端·javascript·pdf·ecmascript·电脑
码艺-Alimjan7 小时前
Vben Admin 新增维吾尔语 Vben-Modal的关键坑之一
前端·javascript·vue.js
可乐鸡翅yeah_7 小时前
hls.js 手动自定义 http 请求 loader,修改请求头实战
开发语言·前端·javascript·网络协议·http·ecmascript·m3u8在线
IT_陈寒8 小时前
Vite静态资源导入这个坑我帮你们踩过了
前端·人工智能·后端
广州华水科技8 小时前
大坝安全监测解决方案:单北斗GNSS形变监测系统应用与维护
前端
yivifu9 小时前
中文古籍电子书注释集成
前端·javascript·python·beautifulsoup·epub