麻烦渲染deno / oak视图

时间:2020-06-11 03:21:11

标签: deno oak

我正在使用deno,oak和view_engine。 这是我的文件结构:

server.ts
routes
  user.ts
view
  index.ejs
  /user
    index.ejs

在我的server.js上,此代码按预期工作:

router
  .get("/", (context: any) => {
    context.render("view/index.ejs");
  });

但是,在我的route / user.ts中,以下代码不起作用:

router
  .get("user/", (ctx: any) => {
    ctx.render("../view/user/index.ejs")
  });

在渲染器中,我尝试过:

${Deno.cwd}"/../view/student/index.ejs"
"/../view/user/index.ejs"

而绝望:

"/view/user/index.ejs"

我敢肯定,这里我缺少一个超级简单,最明显的东西。

1 个答案:

答案 0 :(得分:0)

这是解决方法,

import { Application, send, Router } from "https://deno.land/x/oak/mod.ts";
import { viewEngine, engineFactory, adapterFactory, ViewConfig } from 'https://deno.land/x/view_engine/mod.ts';

const ejsEngine = engineFactory.getEjsEngine();
const oakAdapter = adapterFactory.getOakAdapter();

const app = new Application();

app.use(viewEngine(oakAdapter, ejsEngine, {
    viewRoot: "./view",
    viewExt: ".ejs",
}));

const router = new Router();

app.use(router.routes());
app.use(router.allowedMethods());

router
    .get('/', async (ctx, next) => {
        ctx.render("index", { data: { name: "Nikhil" } });
    });

await app.listen({ port: 8000 });

在视图文件夹中,我有index.ejs

运行文件为

deno run --allow-net --allow-read server.ts

index.ejs

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <h1>EJS HOLA</h1>
    Hobbies of <%=data.name%>

</body>

</html>

要添加更多资源,请查看view_engine