本人刚学习接触egg.js 现在尝试自己写 暂时没找到怎么配置下能够直接访问view下的html文件。配了官方例子中的模板应该可以 但是我现在就是想知道不安装任何模板引擎是否也能访问到view下的html文件@atian25
自己写个 egg-view-simple,或者在 app/extend/context.js 直接覆盖掉 context.render
app/extend/context.js
context.render
@atian25 好滴 谢谢 还以为有现成的 我尝试下 实在实现不了我再来取经
我想你应该是想提供静态文件吧。。 egg-static
https://eggjs.org/zh-cn/plugins/static.html
正常读取文件返回字符流就行了呀,设置好 Content-Type 就不会触发下载了。
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); } }
@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; } }
@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; } };
@tczhangzhi
尽可能的不用 Sync
Sync
const fs = require('mz/fs'); // ... cache[filename] = await fs.readFile(filename);
其实楼主想要做什麽,因为我最近也在干这件事情。哈哈
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
自己写个 egg-view-simple,或者在
app/extend/context.js直接覆盖掉context.render@atian25 好滴 谢谢 还以为有现成的 我尝试下 实在实现不了我再来取经
我想你应该是想提供静态文件吧。。 egg-static
https://eggjs.org/zh-cn/plugins/static.html
正常读取文件返回字符流就行了呀,设置好
Content-Type就不会触发下载了。@tczhangzhi 不要 sync… 而且还需要 cache
@atian25 这样(逃
@tczhangzhi 重启那一刻,文件还没读完,用户就有一定概率进来了。
其实就算是单页应用,把 index.html 放到 view 下用模板渲染出来就好了啊,又没啥损耗
@atian25 ( ̄(エ) ̄) 是吼~ 但是感觉 html 被其他模板过一遍有些不和谐呀~ 再改改,233
@tczhangzhi
尽可能的不用
Sync其实楼主想要做什麽,因为我最近也在干这件事情。哈哈