Rumah > hujung hadapan web > View.js > teks badan

Bagaimana untuk menggunakan Vue untuk melaksanakan reka bentuk halaman yang meniru induk kesan khas?

WBOY
Lepaskan: 2023-06-25 10:57:59
asal
1099 orang telah melayarinya

Dalam era Internet mudah alih semasa, reka bentuk kesan halaman telah menjadi semakin penting untuk tapak web dan aplikasi mudah alih. Untuk meningkatkan pengalaman dan populariti pelanggan, kami perlu menggunakan alat seperti Faux Effects Master untuk mereka bentuk halaman kami dengan kesan berkualiti tinggi. Walau bagaimanapun, jika anda menggunakan rangka kerja Vue untuk melaksanakan reka bentuk induk kesan khas, ia akan memberikan anda dua faedah besar. Mula-mula, anda boleh menggunakan model pengaturcaraan komponen rangka kerja Vue untuk mereka bentuk perpustakaan komponen boleh guna semula untuk meningkatkan keupayaan reka bentuk anda. Kedua, rangka kerja Vue mempunyai pengikatan data sehala yang berkuasa dan prinsip data responsif, yang boleh mengemas kini elemen DOM dengan lebih pantas dan meningkatkan pengalaman pengguna.

Di bawah ini kami akan memperkenalkan secara terperinci cara menggunakan Vue untuk melaksanakan reka bentuk halaman yang meniru induk kesan khas.

1. Persediaan

Sebelum bermula, sila pastikan anda telah memasang versi terkini Vue.js. Anda boleh memuat turun Vue.js dari tapak web rasmi dan menggunakan CDN untuk memasukkan Vue.js. Di sini kita akan menggunakan Vue.js 2.6.12.

Langkah 1: Gunakan Vue CLI untuk mencipta projek baharu

vue create vue-effect-design
cd vue-effect-design
Salin selepas log masuk

Langkah 2: Pasang perpustakaan bergantung yang diperlukan

npm install axios vue-router vuex
Salin selepas log masuk

Kini anda sudah bersedia untuk mula menggunakan Vue! Seterusnya, kami akan memperkenalkan langkah demi langkah cara menggunakan Vue untuk melaksanakan reka bentuk halaman yang meniru induk kesan khas.

2. Buat halaman asas

Sebelum memulakan penciptaan halaman, pastikan anda memasang editor yang sesuai. Kami mengesyorkan menggunakan Visual Studio Code atau Brackets.

Langkah 1: Buat fail bernama App.vue dan tambah kod berikut dalam fail: App.vue的文件,并在该文件中添加以下代码:

<template>
  <div id="app">
    <router-view/>
  </div>
</template>

<script>
 export default {
   name: 'App'
 }
</script>

<style>
 #app {
   min-height: 100vh;
   display: flex;
   justify-content: center;
   align-items: center;
   font-size: 2rem;
   background-color: #f7f8fc;
   color: #333;
   font-weight: bold;
   font-family: Arial, Helvetica, sans-serif;
 }
</style>
Salin selepas log masuk

在以上代码中,我们创建了一个Vue组件,该组件使用了路由器视图,因此Vue将读取组件的路由器视观,并根据路由器视图渲染组件。

第二步: 创建一个名为Home.vue的文件,并在该文件中添加以下代码:

<template>
  <div>
    <header/>
    <main>
      <card>
        <img :src="imageUrl" :alt="imageAlt">
        <h2>{{ title }}</h2>
        <p>{{ message }}</p>
      </card>
    </main>
    <footer/>
  </div>
</template>

<script>
 import Header from '@/components/Header.vue'
 import Footer from '@/components/Footer.vue'
 import Card from '@/components/Card.vue'

 export default {
   name: 'Home',
   components: {
     Header,
     Footer,
     Card
   },
   data () {
     return {
       title: 'Hello World',
       message: 'Welcome to Vue.js!',
       imageUrl: 'https://picsum.photos/400/300',
       imageAlt: 'Random image from Picsum'
     }
   }
 }
</script>
Salin selepas log masuk

在以上代码中,我们使用了HeaderFooterCard三个组件,而且使用了v-bindimg标签进行了数据绑定。现在,我们可以启动我们的开发服务器,并确保页面正常运行:

npm run serve
Salin selepas log masuk

3.创建可重用的组件库

接下来,我们将创建一个可重用的组件库,该库可以帮助我们更快地创建页面。

第一步: 创建一个名为Header.vue的文件,并在该文件中添加以下代码:

<template>
  <header>
    <h1>{{ siteTitle }}</h1>
  </header>
</template>

<script>
 export default {
   name: 'Header',
   data () {
     return {
       siteTitle: '仿特效大师'
     }
   }
 }
</script>

<style scoped>
 header {
   background-color: #fff;
   margin-bottom: 2rem;
   text-align: center;
   border-bottom: 1px solid #ccc;
 }

 h1 {
   margin: 0;
   font-weight: bold;
   font-size: 2.6rem;
   font-family: Arial, Helvetica, sans-serif;
 }
</style>
Salin selepas log masuk

在以上代码中,我们创建了一个名为Header的组件,其中包含了一个标题和一个文本标签。

第二步: 创建一个名为Footer.vue的文件,并在该文件中添加以下代码:

<template>
  <footer>
    <slot/>
  </footer>
</template>

<script>
 export default {
   name: 'Footer'
 }
</script>

<style scoped>
 footer {
   background-color: #fff;
   margin-top: 2rem;
   text-align: center;
   border-top: 1px solid #ccc;
   padding: 2rem;
 }
</style>
Salin selepas log masuk

在以上代码中,我们创建了一个名为Footer的组件,并使用了一个插槽来放置任何内容。

第三步: 创建一个名为Card.vue的文件,并在该文件中添加以下代码:

<template>
  <div class="card">
    <slot/>
  </div>
</template>

<script>
 export default {
   name: 'Card'
 }
</script>

<style scoped>
 .card {
   background-color: #fff;
   padding: 2rem;
   box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
   border-radius: 6px;
   margin-bottom: 2rem;
 }

 img {
   max-width: 100%;
 }
</style>
Salin selepas log masuk

在以上代码中,我们创建了名为Card(卡)的组件,在该组件中包含了一个插槽并使用CSS样式进行了美化。

4.使用Axios和API

我们将使用Axios库从外部API获取数据。Axios是一个用于从Web客户端发出HTTP请求的库,它将返回Promise对象,可以使我们比较简单地从外部API获取数据。

第一步: 在以上步骤的基础上,替换我们的Home组件中的data属性,以便我们从外部API获取数据。代码如下:

<template>
  <div>
    <header/>
    <main>
      <div v-if="isLoading" class="loading"></div>
      <card>
        <img :src="imageUrl" :alt="imageAlt">
        <h2>{{ title }}</h2>
        <p>{{ message }}</p>
      </card>
    </main>
    <footer/>
  </div>
</template>

<script>
 import axios from 'axios'
 import Header from '@/components/Header.vue'
 import Footer from '@/components/Footer.vue'
 import Card from '@/components/Card.vue'

 export default {
   name: 'Home',
   components: {
     Header,
     Footer,
     Card
   },
   data () {
     return {
       title: '',
       message: '',
       imageUrl: '',
       imageAlt: '',
       isLoading: false
     }
   },
   created () {
     this.fetchData()
   },
   methods: {
     fetchData () {
       this.isLoading = true
       axios.get('https://jsonplaceholder.typicode.com/posts/1')
         .then(response => {
           this.isLoading = false
           this.title = response.data.title
           this.message = response.data.body
           this.imageUrl = `https://picsum.photos/400/300?random=${response.data.id}`
           this.imageAlt = response.data.title
         })
         .catch(error => {
           console.log(error)
           this.isLoading = false
         })
     }
   }
 }
</script>

<style scoped>
 header {
   background-color: #fff;
   margin-bottom: 2rem;
   text-align: center;
   border-bottom: 1px solid #ccc;
 }

 h1 {
   margin: 0;
   font-weight: bold;
   font-size: 2.6rem;
   font-family: Arial, Helvetica, sans-serif;
 }

 .loading {
   border: 16px solid #f3f3f3;
   border-top: 16px solid #3498db;
   border-radius: 50%;
   width: 120px;
   height: 120px;
   animation: spin 2s linear infinite;
   margin: 2rem auto 0;
 }

 @keyframes spin {
   0% { transform: rotate(0deg); }
   100% { transform: rotate(360deg); }
 }
</style>
Salin selepas log masuk

在以上代码中,我们做了以下更改:

  • 删除了在data属性中未使用的默认属性。
  • 建立了一个名为fetchData的新方法以使用Vue组件调用外部API获取数据。
  • 将API响应的标题,文本和URL属性分配给数据属性。
  • 添加了一个加载指示器以显示加载过程,该指示器通过CSS样式产生旋转效果。
  • created生命周期内调用了新创建的fetchData方法。

5.动态路由

最终,我们将学习如何使用Vue Router动态路由。

第一步: 创建一个名为Design.vue的文件,并在该文件中添加以下代码:

<template>
  <div>
    <header/>
    <main>
      <card v-for="item in designs" :key="item.id">
        <router-link :to="{ name: 'Details', params: { id: item.id }}">
          <img :src="item.image" :alt="item.title">
        </router-link>
        <h2>{{ item.title }}</h2>
        <p>{{ item.description }}</p>
      </card>
    </main>
    <footer/>
  </div>
</template>

<script>
 import Header from '@/components/Header.vue'
 import Footer from '@/components/Footer.vue'
 import Card from '@/components/Card.vue'

 export default {
   name: 'Design',
   components: {
     Header,
     Footer,
     Card
   },
   data () {
     return {
       designs: [
         {
           id: 1,
           title: 'Design 1',
           description: 'Description of Design 1',
           image: 'https://picsum.photos/400/300'
         },
         {
           id: 2,
           title: 'Design 2',
           description: 'Description of Design 2',
           image: 'https://picsum.photos/400/300'
         },
         {
           id: 3,
           title: 'Design 3',
           description: 'Description of Design 3',
           image: 'https://picsum.photos/400/300'
         }
       ]
     }
   }
 }
</script>
Salin selepas log masuk

在以上代码中,我们创建了一个名为Design的Vue组件,并在其中使用了三个示例数据进行实验。

第二步: 更新router.js文件,并在该文件中添加以下代码:

import Vue from 'vue'
import VueRouter from 'vue-router'
import Home from './views/Home.vue'
import Design from './views/Design.vue'
import Details from './views/Details.vue'

Vue.use(VueRouter)

const routes = [
  {
    path: '/',
    name: 'Home',
    component: Home
  },
  {
    path: '/designs',
    name: 'Design',
    component: Design
  },
  {
    path: '/details/:id',
    name: 'Details',
    component: Details
  }
]

const router = new VueRouter({
  mode: 'history',
  base: process.env.BASE_URL,
  routes
})

export default router
Salin selepas log masuk

在以上代码中,我们更新了路由。添加了一个名为Design的新路由和Details这个动态的路由。

第三步: 创建一个名为Details.vue

<template>
  <div>
    <header/>
    <main>
      <card>
        <img :src="selectedDesign.image" :alt="selectedDesign.title">
        <h2>{{ selectedDesign.title }}</h2>
        <p>{{ selectedDesign.description }}</p>
      </card>
    </main>
    <footer/>
  </div>
</template>

<script>
 import Header from '@/components/Header.vue'
 import Footer from '@/components/Footer.vue'
 import Card from '@/components/Card.vue'

 export default {
   name: 'Details',
   components: {
     Header,
     Footer,
     Card
   },
   data () {
     return {
       selectedDesign: {}
     }
   },
   created () {
     this.fetchData()
   },
   methods: {
     fetchData () {
       const id = this.$route.params.id
       // 从外部API获取数据
     }
   }
 }
</script>
Salin selepas log masuk
Salin selepas log masuk

Dalam kod di atas, kami telah mencipta komponen Vue yang Komponen menggunakan penghala paparan, jadi Vue akan membaca paparan penghala komponen dan menjadikan komponen berdasarkan paparan penghala. 🎜🎜🎜Langkah 2: 🎜 Buat fail bernama Home.vue dan tambahkan kod berikut dalam fail: 🎜
axios.get(`https://jsonplaceholder.typicode.com/posts/${id}`)
    .then(response => {
        this.selectedDesign = response.data
        this.isLoading = false
    })
    .catch(error => {
        console.log(error)
        this.isLoading = false
    })
Salin selepas log masuk
Salin selepas log masuk
🎜Dalam kod di atas, kami menggunakan Header< /code>, < kod>Footer dan Kad ialah tiga komponen dan v-bind digunakan untuk mengubah suai tag img. Kini kami boleh memulakan pelayan pembangunan kami dan memastikan halaman berjalan dengan betul: 🎜rrreee🎜 3. Buat perpustakaan komponen boleh guna semula 🎜🎜 Seterusnya, kami akan mencipta perpustakaan komponen boleh guna semula yang akan membantu kami Cipta halaman dengan lebih pantas. 🎜🎜🎜Langkah 1: 🎜 Buat fail bernama Header.vue dan tambahkan kod berikut dalam fail: 🎜rrreee🎜Dalam kod di atas, kami mencipta fail bernama Header</code > komponen, yang mengandungi tajuk dan label teks. 🎜🎜🎜Langkah 2: 🎜 Buat fail bernama <code>Footer.vue dan tambahkan kod berikut dalam fail: 🎜rrreee🎜Dalam kod di atas, kami telah mencipta fail bernama Footer</ kod> komponen dan menggunakan slot untuk meletakkan sebarang kandungan. 🎜🎜🎜Langkah 3: 🎜 Buat fail bernama <code>Card.vue dan tambahkan kod berikut dalam fail: 🎜rrreee🎜Dalam kod di atas, kami mencipta fail bernama Card</code > Komponen (kad) mengandungi slot dan dicantikkan dengan gaya CSS. 🎜🎜4. Menggunakan Axios dan API🎜🎜 Kami akan menggunakan perpustakaan Axios untuk mendapatkan data daripada API luaran. Axios ialah perpustakaan untuk membuat permintaan HTTP daripada klien web, yang akan mengembalikan objek Promise, membolehkan kami mendapatkan data daripada API luaran secara relatif mudah. 🎜🎜🎜Langkah 1: 🎜 Berdasarkan langkah di atas, gantikan atribut <code>data dalam komponen Laman Utama kami supaya kami boleh mendapatkan data daripada API luaran. Kodnya adalah seperti berikut: 🎜rrreee🎜Dalam kod di atas, kami membuat perubahan berikut: 🎜
  • Mengalih keluar atribut lalai yang tidak digunakan dalam atribut data.
  • Mencipta kaedah baharu bernama fetchData untuk menggunakan komponen Vue untuk memanggil API luaran untuk mendapatkan data.
  • Tetapkan pengepala, teks dan sifat URL respons API kepada sifat data.
  • Menambah penunjuk pemuatan untuk menunjukkan proses pemuatan, yang menghasilkan kesan putaran melalui penggayaan CSS.
  • Kaedah fetchData yang baru dibuat dipanggil dalam kitaran hayat dicipta.
🎜5. Penghalaan Dinamik🎜🎜Akhir sekali, kita akan belajar cara menggunakan Penghala Vue untuk penghalaan dinamik. 🎜🎜🎜Langkah 1: 🎜 Buat fail bernama Design.vue dan tambahkan kod berikut dalam fail: 🎜rrreee🎜Dalam kod di atas, kami telah mencipta fail bernama Design</ kod> komponen Vue, dan menggunakan tiga data sampel untuk percubaan. 🎜🎜🎜Langkah 2: 🎜 Kemas kini fail <code>router.js dan tambahkan kod berikut dalam fail: 🎜rrreee🎜Dalam kod di atas, kami telah mengemas kini laluan. Laluan baharu bernama Reka Bentuk dan laluan dinamik bernama Butiran telah ditambahkan. 🎜🎜🎜Langkah 3: 🎜 Buat fail bernama Details.vue dan tambahkan kod berikut dalam fail: 🎜
<template>
  <div>
    <header/>
    <main>
      <card>
        <img :src="selectedDesign.image" :alt="selectedDesign.title">
        <h2>{{ selectedDesign.title }}</h2>
        <p>{{ selectedDesign.description }}</p>
      </card>
    </main>
    <footer/>
  </div>
</template>

<script>
 import Header from '@/components/Header.vue'
 import Footer from '@/components/Footer.vue'
 import Card from '@/components/Card.vue'

 export default {
   name: 'Details',
   components: {
     Header,
     Footer,
     Card
   },
   data () {
     return {
       selectedDesign: {}
     }
   },
   created () {
     this.fetchData()
   },
   methods: {
     fetchData () {
       const id = this.$route.params.id
       // 从外部API获取数据
     }
   }
 }
</script>
Salin selepas log masuk
Salin selepas log masuk

在以上代码中,我们创建了一个名为Details的Vue组件,并使用了数据属性selectedDesign来保存所选设计的详细信息。另外,我们还创建了一个名为fetchData的新方法以与外部API通信的方法获取动态的数据。

第四步:fetchData方法的代码中,我们使用了this.$route.params.id来获取具体的路由参数,并这些参数使用外部API获取具体路由的数据。

axios.get(`https://jsonplaceholder.typicode.com/posts/${id}`)
    .then(response => {
        this.selectedDesign = response.data
        this.isLoading = false
    })
    .catch(error => {
        console.log(error)
        this.isLoading = false
    })
Salin selepas log masuk
Salin selepas log masuk

以上代码将请求数据,并在响应中将选择的设计属性分配到数据属性中。

这样,我们就可以使用Vue路由动态显示数据到页面中,并完成了仿特效大师的页面设计。

总结:

在本文中,我们研究了如何使用Vue.js实现仿特效大师的页面设计。我们首先介绍了Vue组件,组件化编程模式以及Vue强大的单向数据绑定和响应式数据原理的基本概念。接下来我们创建了一个简单的基本页面,然后创建了一个可重用的组件库,以帮助我们更快地编写页面。我们学习了如何使用Axios与外部API进行通信,最后使用Vue Router动态路由显示数据从而完成了页面的设计。希望这篇文章对您有所帮助,谢谢!

Atas ialah kandungan terperinci Bagaimana untuk menggunakan Vue untuk melaksanakan reka bentuk halaman yang meniru induk kesan khas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan