包括其他视图文件夹中的哈巴狗mixin

时间:2019-02-01 13:59:31

标签: node.js express include pug mixins

我在我的快速应用程序中设置的多个视图的路径:

express.set('views',['/path1', '/path2', '/path3']);

渲染视图时,我想在path2中包含哈巴狗文件格式path1

# /path2/index.pug

include path1/mixin.pug

我不能找到这个问题的解决方案。

1 个答案:

答案 0 :(得分:-1)

我没有使用express.set视图。

只需在您的哈巴狗文件中这样做

包括../path1/mixin.pug (或者没有.pug也可以工作),例如include ../ path1 / mixin

编辑:

对于那些对此不赞成的人,你不知道琼恩·雪诺。

我的设置:
文件:根项目文件夹中的index.js [注意,没有app.set('views',path.join(__ dirname,'view'))]

const express = require('express')
const app = express()
const PORT = process.env.PORT || 3000
app.use(express.static('public'))
app.set('view engine', 'pug')
// routing
app.use('/', require('./home/route'))
app.listen(PORT, console.log(`Server started on port ${PORT}`))

文件夹:视图(在根文件夹内)

文件夹:部分(内部视图文件夹,例如root / view / part)

文件:mixin.pug(在内部视图文件夹中,例如root / view / part / mixin.pug

mixin pet(name)
  li.pet= name

文件夹:模板(内部视图文件夹,例如root / view / template)

文件:main.pug(在root / view / template / main.pug中)

doctype html
html
    head
    body
        h1 Hello template/main.pug
        block content

文件夹:home(在根文件夹内,例如root / home)

文件:route.js(位于主文件夹内,例如root / home / route.js)

const express = require('express')
const app = module.exports = express()
app.get("/",(req,res)=>{
    res.render('../home/index')
  })

文件:index.pug(位于主文件夹内,例如root / home / index.pug)

extends ../view/template/main
block content
    h1 Helllllo from home/index.pug
    include ../view/part/mixin
    +pet('you')
    +pet('know')
    +pet('nothing')
    +pet('jon')
    +pet('snow')

如您所见,这是输出localhost:3000

enter image description here

绝对能在没有express.set视图的情况下使用,并且带有include ../path1/mixin.pug

工作原理:

  • 将index.js根目录文件路由到文件route.js的主目录,拉出文件index.pug。
  • index.pug拉模板文件main.pug。然后拉混音。

“你什么都不知道,琼恩·雪诺”