我正在尝试在我的布局 pug 模板中的脚本标记中包含一个多行 JavaScript 函数。它需要在脚本标签中运行,即它必须以这种方式完成并且不能作为值传递到模板中,因为它是 Node 应用程序中的客户端逻辑。
这在普通 HTML 中是等价的:
<script>
window.fbAsyncInit = function() {
FB.init({
appId : '1111111',
autoLogAppEvents : true,
xfbml : true,
version : 'v5.0'
});
};
</script>
<script async defer src="https://connect.facebook.net/en_US/sdk.js"></script>
由于我使用的是 pug 而不是普通的 HTML,因此我无法正确设置格式并且它不起作用。哈巴狗 docs 只有非常基本的例子,例如:
script
include script.js
和
script(src='/javascripts/jquery.js')
script(src='/javascripts/app.js')
这是我当前的 pug 文件,也是我最近尝试让它工作的尝试。
layout.pug
doctype html
html
head
body
script
//works - just testing
- const x = 1
//works - just testing
- function test(){console.log('test')}
//error - not a real error. Seems like syntax
// Content Security Policy: The page’s settings blocked the loading of a resource at http://localhost:3000/favicon.ico
- function testWrapper(){
window.fbAsyncInit = function() {
FB.init({
appId : '1111111',
autoLogAppEvents : true,
xfbml : true,
version : 'v4.0'
});
}
}
- testWrapper()
// not sure if this is working, but I don't think so.
script(async defer src="https://connect.facebook.net/en_US/sdk.js")
我怎样才能让它发挥作用?
这是我尝试使用的 Facebook JS SDK here 。
注意 :我建议这不是 this 的副本,因为在脚本标签中插入的 JS 代码稍微复杂一些。
最佳答案
我想我使用 2 小时前的第一次解决方案尝试解决了它。它当时没有用,但是间距肯定已经关闭并抛出了错误,而且似乎需要 script.
才能工作,所以它不仅仅是间距。现在我得到了 200 秒的 FB SDK,所以它必须工作。
在 pug 中包含 SDK 代码,我认为:
script.
window.fbAsyncInit = function() {
FB.init({
appId : '111111',
autoLogAppEvents : true,
xfbml : true,
version : 'v5.0'
});
};
script(async defer src="https://connect.facebook.net/en_US/sdk.js")
注意:我想将此解决方案归功于此 Stack Overflow post 。我在 pug 文档中没有看到这个 script.
,所以我很感谢 @Felipe-sabino 指出它。关于javascript - 如何在 Pug 和 Facebook JS SDK 中编写多行脚本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58617462/