我正在使用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"
我敢肯定,这里我缺少一个超级简单,最明显的东西。
答案 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