koa-generator icon indicating copy to clipboard operation
koa-generator copied to clipboard

handlebars配置layout刷新路径直接读取文件内容问题

Open luchanan opened this issue 7 years ago • 4 comments

从这里下载了koa-generator, 想在index.hbs继承layout.hbs,做了下面的修改 app.js

app.use(views(__dirname + '/views', {
  extension: 'hbs',
  map: { hbs: 'handlebars' },
  options: {
      partials: {
          layout: './layout' 
      }
  }
}))

就改了这个,第一次没有报错,第二次貌似把layout.hbs的内容读出来作为路径了

  Error: ENOENT: no such file or directory, open 'F:\person_project\github\koa2_learn\views\<!DOCTYPE html>
  <html>
    <head>
      <title>{{title}}<\title>
      <link rel='stylesheet' href='\stylesheets\style.css' \>
    <\head>
    <body>
      {{{body}}}
    <\body>
  <\html>

初学不是太懂,指教一下,thanks

luchanan avatar Jun 02 '17 03:06 luchanan

@luchanan 开一个repo写个demo,然后给我

i5ting avatar Jun 04 '17 08:06 i5ting

这个问题demo: https://github.com/luchanan/koa2_hbs.git 其实我看了express-generator,他们用的hbs,已经对handlebars进行了高级封装吧,有继承layout的功能。然后我看了你这里只有handlebars这个东西,我在想是不是基础版,layout需要自己实现(如上面我改的)。后来我用了koa-hbs(支持koa2)来弄就可以了,解决了刷新报错的问题。因为我看koa-views参数比较少,koa-hbs的参数好像不能用在koa-views上,所以我进行了下面的修改

// app.js
const hbs = require('koa-hbs')
...
// app.use(views(__dirname + '/views', {
//   extension: 'hbs',
//   map: { hbs: 'handlebars' },
//     defaultLayout: 'layout'
// }))

app.use(hbs.middleware({
    viewPath: __dirname + '/views',
    layoutsPath: __dirname + '/views',
}));
// index.hbs
{{!< layout }}
<h1>{{title}}</h1>
<p>Welcome to {{title}}</p>

请求高见

luchanan avatar Jun 04 '17 15:06 luchanan

我安装啦 npm install -g koa-generator 之后 运行 koa koa2 && cd koa2 然后报错 koa: command not found ,我的是mac系统 node v8.2.1版本

jane- avatar Jul 27 '17 01:07 jane-

@jane- 很奇怪啊,有更多信息么?

i5ting avatar Jul 27 '17 05:07 i5ting