在 Node + Express + Pug 中访问 DOM 的正确方法
Proper way to access DOM in Node + Express + Pug
我正在学习将 MVC 架构与 Node、Express 和 Pug 结合使用,但我无法找到如何正确访问 DOM(在本例中为添加 EventListener)。文档非常简洁,我无法在其他地方找到解决方案...这让我怀疑我可能做错了?
这是有问题的 .pug 文件(已简化以突出显示问题):
extends layout
block content
h1= title
div= foo
div
label Bar
input(
type='text'
name='city'
placeholder='start typing...'
)
input(type='submit' id='submitbtn' value='Submit')
- document.addEventListener('keydown', event => {console.log("Bleep!")})
- document.getElementById('submitbtn').addEventListener('click', () => doSomething())
^^^^^^^^
当 Express 尝试呈现此页面时,出现以下错误:
Only named blocks and mixins can appear at the top level of an
extending template
我是不是找错人了?如果是这样,在 Node / 中访问 DOM 的正确方法是什么?
Express / Pug 框架?
错误信息正确:
Only named blocks and mixins can appear at the top level of an extending template
在您的示例中,模板的顶层还有内联代码,这是不允许的。您应该缩进命名 block content
.
内的那些
此外,DOM javascript 在 pug 编译时不会 运行。一旦 Pug 编译成 HTML,它只会在浏览器中显示 运行s。为了使该脚本成为 运行,您需要将其放置在 script
元素中,就像您编写常规 HTML.
一样。
extends layout
block content
h1= title
div= foo
div
label Bar
input(
type='text'
name='city'
placeholder='start typing...'
)
input(type='submit' id='submitbtn' value='Submit')
script.
document.addEventListener('keydown', event => {console.log("Bleep!")})
document.getElementById('submitbtn').addEventListener('click', () => doSomething())
我正在学习将 MVC 架构与 Node、Express 和 Pug 结合使用,但我无法找到如何正确访问 DOM(在本例中为添加 EventListener)。文档非常简洁,我无法在其他地方找到解决方案...这让我怀疑我可能做错了?
这是有问题的 .pug 文件(已简化以突出显示问题):
extends layout
block content
h1= title
div= foo
div
label Bar
input(
type='text'
name='city'
placeholder='start typing...'
)
input(type='submit' id='submitbtn' value='Submit')
- document.addEventListener('keydown', event => {console.log("Bleep!")})
- document.getElementById('submitbtn').addEventListener('click', () => doSomething())
^^^^^^^^
当 Express 尝试呈现此页面时,出现以下错误:
Only named blocks and mixins can appear at the top level of an extending template
我是不是找错人了?如果是这样,在 Node / 中访问 DOM 的正确方法是什么? Express / Pug 框架?
错误信息正确:
Only named blocks and mixins can appear at the top level of an extending template
在您的示例中,模板的顶层还有内联代码,这是不允许的。您应该缩进命名 block content
.
此外,DOM javascript 在 pug 编译时不会 运行。一旦 Pug 编译成 HTML,它只会在浏览器中显示 运行s。为了使该脚本成为 运行,您需要将其放置在 script
元素中,就像您编写常规 HTML.
extends layout
block content
h1= title
div= foo
div
label Bar
input(
type='text'
name='city'
placeholder='start typing...'
)
input(type='submit' id='submitbtn' value='Submit')
script.
document.addEventListener('keydown', event => {console.log("Bleep!")})
document.getElementById('submitbtn').addEventListener('click', () => doSomething())