首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VueJS 2服务器端的jQuery插件渲染

VueJS 2服务器端的jQuery插件渲染
EN

Stack Overflow用户
提问于 2017-02-23 08:26:20
回答 1查看 976关注 0票数 0

我正在尝试将一个有几个jQuery插件的旧登陆页面转换成一个Vue应用程序。原因是,登陆页面正在被扩展,并将成为一个网络应用程序。

使用https://github.com/vuejs/vue-hackernews-2.0/作为模板。主要原因是它可以进行服务器端呈现。

问题在于错误:

代码语言:javascript
复制
ReferenceError: window is not defined
    at Object.<anonymous> (__vue_ssr_bundle__:3398:2408)
    at __webpack_require__ (__vue_ssr_bundle__:21:30)
    at Object.module.exports.Object.defineProperty.value (__vue_ssr_bundle__:1280:126)
    at __webpack_require__ (__vue_ssr_bundle__:21:30)
    at Object.<anonymous> (__vue_ssr_bundle__:2099:3)
    at __webpack_require__ (__vue_ssr_bundle__:21:30)
    at Object.<anonymous> (__vue_ssr_bundle__:1380:81)
    at __webpack_require__ (__vue_ssr_bundle__:21:30)
    at Object.module.exports.Object.defineProperty.value (__vue_ssr_bundle__:378:66)
    at __webpack_require__ (__vue_ssr_bundle__:21:30)

到目前为止,我发现问题是由window不在Node引起的。但是,我不知道如何使它可用,也不知道在服务器端呈现页面之后应该如何注入jQuery。

vue-hackernews-2.0几乎没有变化。我所做的主要改变是将jQuery添加到webpack.client.config.js中。

这是添加到plugins中的(找到了另一个答案,当应用程序需要时,它应该使jQuery可用):

代码语言:javascript
复制
new webpack.ProvidePlugin({
  $: 'jquery',
  jquery: 'jquery',
  'window.jQuery': 'jquery',
  jQuery: 'jquery'
})

这是LandingView.vue

代码语言:javascript
复制
<template>
  <div class="landing-page">
  </div>
</template>

<script>
  import owl from '../../public/assets/libs/owl.carousel.2.0.0-beta.2.4/owl.carousel.min.js'
  import $ from 'jquery';

  export default {
    name: 'landing-view',
    created () {
      console.log('hello world!');
    }
  }
</script>
EN

回答 1

Stack Overflow用户

发布于 2017-02-23 10:30:28

结果,我需要在jQuery事件https://v2.vuejs.org/v2/api/?#mounted上注入我的mounted插件。

它还说

在服务器端呈现过程中不调用此钩子。

我只是把插件分配给window,然后我就可以启动它了。

代码语言:javascript
复制
<template>
  <div class="landing-page">
  </div>
</template>

<script>
  // import $ from 'jquery'; //no need to import it, as it's provided by webpack

  export default {
    name: 'landing-view',
    mounted() {
      // created() is only available in v1

      window.owl = require('../../public/assets/libs/owl.carousel.2.0.0-beta.2.4/owl.carousel.min.js');


      // the rest of my code
      $('.some-carousel').owlCarousel();

    }
  }
</script>

我不知道这是否解决这个问题的适当办法。我感谢您对最佳实践的任何评论!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42410481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档