CNode

egg.js 必须要用模板引擎 才能渲染在view下的html文件吗?

问答
Sshenjianzch发布于9 年前最后回复7 年前10 回复15160 浏览0 收藏

本人刚学习接触egg.js 现在尝试自己写 暂时没找到怎么配置下能够直接访问view下的html文件。配了官方例子中的模板应该可以 但是我现在就是想知道不安装任何模板引擎是否也能访问到view下的html文件@atian25

查看回复

回复 (10)

A
atian25#1·9 年前

自己写个 egg-view-simple,或者在 app/extend/context.js 直接覆盖掉 context.render

S
shenjianzch#2·9 年前
引用 atian25自己写个 egg view simple,或者在 app/extend/context.js 直接覆盖掉 context.render

@atian25 好滴 谢谢 还以为有现成的 我尝试下 实在实现不了我再来取经

A
AnzerWall#3·9 年前

我想你应该是想提供静态文件吧。。 egg-static

https://eggjs.org/zh-cn/plugins/static.html

T
tczhangzhi#4·8 年前

正常读取文件返回字符流就行了呀,设置好 Content-Type 就不会触发下载了。

class HomeController extends Controller {
  async index() {
    const file = path.resolve(this.app.config.static.dir, 'index.html');
    this.ctx.set('Content-Type', 'text/html');
    this.ctx.body = await fs.readFileSync(file);
  }
}
T
tczhangzhi#6·8 年前
引用 atian25@tczhangzhi 不要 sync... 而且还需要 cache

@atian25 这样(逃

const file = path.resolve(__dirname, '../public/index.html');
let index;
fs.readFile(file, (err, data) => {
  index = data;
});

class HomeController extends Controller {
  async index() {
    this.ctx.set('Content-Type', 'text/html');
    this.ctx.body = index;
  }
}
A
atian25#7·8 年前
引用 tczhangzhi@atian25 这样(逃

@tczhangzhi 重启那一刻,文件还没读完,用户就有一定概率进来了。

其实就算是单页应用,把 index.html 放到 view 下用模板渲染出来就好了啊,又没啥损耗

T
tczhangzhi#8·8 年前
引用 atian25@tczhangzhi 重启那一刻,文件还没读完,用户就有一定概率进来了。 其实就算是单页应用,把 index.html 放到 view 下用模板渲染出来就好了啊,又没啥损耗

@atian25 ( ̄(エ) ̄) 是吼~ 但是感觉 html 被其他模板过一遍有些不和谐呀~ 再改改,233

// app/lib/plugin/egg-view-html/lib/view.js
'use strict';

const fs = require('fs');
const cache = {};

module.exports = class HtmlView {
  async render(filename) {
    if (!cache[filename]) {
      cache[filename] = await fs.readFileSync(filename);
    };
    return cache[filename];
  }

  async renderString(tpl) {
    return tpl;
  }
};
A
atian25#9·8 年前
引用 tczhangzhi@atian25 ( ̄(エ) ̄) 是吼~ 但是感觉 html 被其他模板过一遍有些不和谐呀~ 再改改,233

@tczhangzhi

尽可能的不用 Sync

const fs = require('mz/fs');
// ...
cache[filename] = await fs.readFile(filename);
S
Solomonqoo#10·7 年前

其实楼主想要做什麽,因为我最近也在干这件事情。哈哈

参与回复
登录后即可参与回复。登录