Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

185
Visualizações
How to have a flipbook like turn.js in Nuxt?

How to can import turn.js to nuxt.js project. When I use through plugin then error Window not define, even though I used it in client mode

  • Update: I used required package check is client, but I get error jquery__WEBPACK_IMPORTED_MODULE_3___default(...)(...).turn is not a function
<template>
    <div id="flipbook">
        <div class="hard">
            Turn.js
        </div>
        <div class="hard" />
        <div> Page 1 </div>
        <div> Page 2 </div>
        <div> Page 3 </div>
        <div> Page 4 </div>
        <div class="hard" />
        <div class="hard" />
    </div>
</template>

<script>
    import $ from 'jquery';

    if (process.client) {
        require('turn.js');
    }

    export default {
        mounted() {
            console.log($('#flipbook').turn('page'));
            $('#flipbook'.turn({
                width: 400,
                height: 300,
                autoCenter: true,
            }));
        },

    };
</script>

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

EDIT + TLDR: use flipbook-vue because it is better on any point really (weight, maintenance, flexibility, doesn't rely on jQuery etc...).
This is also working perfectly fine with Nuxt as shown here.


If you need to install jQuery into your Nuxt project (which I do not recommend), you can follow my answer here. Still, an alternative without jQuery would be greatly appreciated IMO, even more if you're using it just for selecting an element in the DOM. Is it worth 20kb?

If you want to target a specific element available into your component, please use the $refs syntax, as explained in this other answer. And not a usual querySelector.

require is node-based, you should rather use import since you're in a modern browser based ecosystem when using Vue. Hence, import your package locally with a dynamic import is still the best way to go here.

TLDR: something like this is usually enough to make it work

<template>
  <div id="flipbook" ref="flipbook">
    <div class="hard">
      Turn.js
    </div>
    <div class="hard" />
    <div> Page 1 </div>
    <div> Page 2 </div>
    <div> Page 3 </div>
    <div> Page 4 </div>
    <div class="hard" />
    <div class="hard" />
  </div>
</template>

<script>
export default {
  async mounted () {
    if (process.client) {
      const turnJs = await import('turn.js')
      this.$refs.flipbook.turnJs.turn({
        width: 400,
        height: 300,
        autoCenter: true,
      })
    }
  }
}
</script>

Meanwhile, the project did not get any updates for already 10 years so I guess that you can pass on this one.

enter image description here

Writing your own with a bit of CSS + JS is also totally feasible and will provide the best results IMO.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda