在我的Apostrophe cms中,标题的一部分是这样的(在externalLayout.html文件中):

<div id="sticky-header">
...
</div>


在页脚中,我执行了以下操作:

<script src="/thirdparty/jquery/jquery-3.2.1.min.js"></script>
<script src="/thirdparty/sticky/jquery.sticky.js"></script>


我知道撇号某种程度上包含jQuery,但是如果我自己不包含撇号,则控制台中会出现错误:

jquery.sticky.js:22 Uncaught ReferenceError: jQuery is not defined
at jquery.sticky.js:22
at jquery.sticky.js:24


我在always.js文件之一中也有以下内容

$("#sticky-header").sticky({
    topSpacing:0,
    zIndex:1000
});


然后生成错误:

always.js:109 Uncaught TypeError: $(...).sticky is not a function
at always.js:109


我该如何解决?

最佳答案

在您的情况下,您需要推送自己的jQuery副本的原因是,包括来自outerLayout的文件正在Apostrophe的前端资产管道的前端javascript外部运行。

要在INSIDE Apostrophe的资产管道中包含第3方/自定义javascript(推荐并在最初运行jQuery的地方),您需要从Apostrophe模块中推送javascript文件。

最快的方法是从应该已在项目中的apostrophe-assets模块中推送资产。

app.js

...
'apostrophe-assets': {
      scripts: [
        {
          name: 'yourFile'
        }
      ]
    },
...


这将加载lib/modules/apostrophe-assets/public/js/yourFile.js

在此处http://apostrophecms.org/docs/tutorials/getting-started/pushing-assets.html有关将资产推送到浏览器的更多信息

将来,您可能希望通过适当的模块来组织前端资产,而不是将它们全部压入堆中,这将是一个很好的参考
http://apostrophecms.org/docs/tutorials/getting-started/custom-widgets.html#adding-a-java-script-widget-player-on-the-browser-side

此外,当您推送JavaScript时,您可以期待的是
http://apostrophecms.org/docs/tutorials/getting-started/custom-widgets.html#what-39-s-available-in-the-browser

关于node.js - 在Apostrophe cms中使用第三方jquery插件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45867908/

10-09 22:26