Pug和Parcel无法使用动态本地人
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pug和Parcel无法使用动态本地人相关的知识,希望对你有一定的参考价值。
我有一个Express应用程序,使用Pug模板和Parcel作为我的捆绑包。根据parcel docs,我可以有一个存储我的本地pug.config.js
的配置文件,但是,我需要在运行时动态地将locals添加到我的模板中。是否有可能做到这一点?
这是我的文件:
index.pug
...
h1 #{isAuthenticated}
h1 #{env}
...
pug.config.js
module.exports = {
locals: {
env: process.env.NODE_ENV
}
}
app.js
const Bundler = require('parcel-bundler')
const bundler = new Bundler(path.resolve(__dirname, 'views/index.pug'))
app
.set('views', path.join(__dirname, 'views'))
.set('view engine', 'pug')
.use(function(req, res, next) {
res.locals.isAuthenticated = 'true'
next()
})
.use(bundler.middleware())
这里我试图将一个局部变量isAuthenticated
设置为'true'
,但是当渲染index.pug
变量为空时,同时,我的env
文件中的pug.config.js
变量存在。
现在,如果我尝试使用res.render('index', {isAuthenticated: 'true'})
在我的控制器函数中渲染页面,则变量isAuthenticated
现在存在,但env
为空。
我想知道我是否在这里遗漏了一些东西,或者这是否按预期工作?
我已经简单试过了包裹。开箱即用的体验很棒,但是当涉及到高级配置时,它很糟糕。这有点像设计,包裹只是反对配置的想法。一切都基于惯例。
所以我检查source code。结果包只需要从'.pugrc', '.pugrc.js', 'pug.config.js'
获取pug配置。
如果您选择坚持使用parcel方式,则可以尝试将locals
值写回磁盘上的其中一个文件。需要测试它,可能有一些异步问题需要调试。
我个人更喜欢以下方法。您使用pug作为真正的模板引擎,直接使用pug.compile/render
API生成html。然后你将这些html进一步传递给parcel,它仍然会完成工作的“捆绑”部分。
以上是关于Pug和Parcel无法使用动态本地人的主要内容,如果未能解决你的问题,请参考以下文章
如何动态呈现 pug 文件而不是使用静态 angular-cli index.html?
JS周刊#405 - 精通模块化 JS,Parcel 1.10.0 发布,Trix 1.0 富文本编辑器,创建虚拟鸟类的簇拥行为