Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk melaksanakan reka bentuk halaman seperti tajuk dalam Vue?

Bagaimana untuk melaksanakan reka bentuk halaman seperti tajuk dalam Vue?

WBOY
WBOYasal
2023-06-25 09:10:411296semak imbas

Vue ialah perpustakaan JavaScript progresif berasaskan rangka kerja yang memudahkan untuk membina aplikasi satu halaman yang kompleks. Dalam pembangunan web, reka bentuk halaman seperti tajuk telah menjadi trend biasa kerana ia boleh memberikan pengalaman pengguna yang lebih baik dan memudahkan pengguna menyemak imbas dan mencari kandungan yang menarik.

Artikel ini akan memperkenalkan cara menggunakan rangka kerja Vue untuk melaksanakan reka bentuk halaman seperti Toutiao, termasuk reka bentuk halaman utama, halaman kandungan dan halaman carian. Pertama, kita perlu memasang Vue CLI, yang merupakan alat baris arahan yang disediakan secara rasmi oleh Vue untuk membina aplikasi Vue dengan cepat. Kaedah khusus adalah seperti berikut:

  1. Pasang Node.js dan npm.

Jika anda belum memasang Node.js dan npm, anda boleh memuat turun dan memasangnya dari tapak web rasmi Node.js.

  1. Pasang Vue CLI.

Anda boleh memasang Vue CLI secara global menggunakan arahan berikut:

npm install -g @vue/cli
  1. Buat projek.

Anda boleh menggunakan arahan berikut untuk mencipta projek Vue baharu:

vue create my-project

di mana, projek saya ialah nama projek. Apabila membuat projek, anda boleh memilih untuk menggunakan tetapan lalai atau mengkonfigurasi beberapa pilihan secara manual.

Sekarang, mari kita mula melaksanakan reka bentuk halaman yang meniru Toutiao.

  1. Reka Bentuk Halaman Utama

Pertama, kita perlu membuat halaman utama, yang sepatutnya mempunyai pengepala, bar navigasi, senarai kandungan dan pengaki. Menggunakan Vue, kami boleh membuat halaman ini dengan mudah.

Bahagian kepala boleh dilaksanakan menggunakan komponen, kodnya adalah seperti berikut:

<template>
  <div class="header">
    <div class="logo">
      <img src="./assets/logo.png" alt="logo">
    </div>
    <div class="title">TODAY</div>
    <div class="search">
      <input type="text">
      <button>搜索</button>
    </div>
  </div>
</template>

Bahagian bar navigasi termasuk berbilang tab, kita boleh menggunakan Vue Router untuk melaksanakannya. Apabila mencipta projek dalam Vue CLI, kami telah memasang Vue Router dan hanya perlu mengkonfigurasi penghalaan dalam App.vue. Kodnya adalah seperti berikut:

<template>
  <div>
    <router-link to="/">主页</router-link>
    <router-link to="/news">新闻</router-link>
    <router-link to="/video">视频</router-link>
    <router-link to="/my">我的</router-link>
    <router-link to="/publish">发布</router-link>
    <router-view></router-view>
  </div>
</template>

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

Bahagian senarai kandungan termasuk berbilang artikel Kami boleh menggunakan Vue untuk memaparkan artikel ini secara dinamik dan menambah beberapa kesan peralihan untuk meningkatkan pengalaman pengguna. Kodnya adalah seperti berikut:

<template>
  <div class="article-list">
    <transition-group name="fade">
      <div class="article" v-for="article in articles" :key="article.id">
        <div class="image">
          <img :src="article.image" alt="article-image">
        </div>
        <div class="title">{{ article.title }}</div>
        <div class="summary">{{ article.summary }}</div>
        <div class="info">
          <div class="time">{{ article.time }}</div>
          <div class="source">{{ article.source }}</div>
          <div class="comment">{{ article.comment }}评论</div>
          <div class="like">{{ article.like }}赞</div>
        </div>
      </div>
    </transition-group>
  </div>
</template>

<script>
export default {
  name: 'ArticleList',
  data() {
    return {
      articles: [
        {
          id: 1,
          image: './assets/article1.jpg',
          title: '文章标题1',
          summary: '文章摘要1',
          time: '10分钟前',
          source: '文章来源1',
          comment: 100,
          like: 200,
        },
        {
          id: 2,
          image: './assets/article2.jpg',
          title: '文章标题2',
          summary: '文章摘要2',
          time: '20分钟前',
          source: '文章来源2',
          comment: 150,
          like: 250,
        },
        // 可以添加更多的文章
      ],
    };
  },
};
</script>

<style scoped>
/* 添加一些过渡效果 */
.fade-enter-active,
.fade-leave-active {
  transition: opacity 0.5s;
}
.fade-enter,
.fade-leave-to {
  opacity: 0;
}
</style>

Bahagian ekor termasuk beberapa pautan biasa dan ikon media sosial, kodnya adalah seperti berikut:

<template>
  <div class="footer">
    <div class="link">
      <a href="#">关于我们</a>
      <a href="#">联系我们</a>
      <a href="#">隐私政策</a>
      <a href="#">版权声明</a>
      <a href="#">广告服务</a>
      <a href="#">招聘信息</a>
    </div>
    <div class="social">
      <p>关注我们:</p>
      <div class="icon">
        <a href="#"><i class="fab fa-weibo"></i></a>
        <a href="#"><i class="fab fa-weixin"></i></a>
        <a href="#"><i class="fab fa-qq"></i></a>
        <a href="#"><i class="fab fa-douban"></i></a>
        <a href="#"><i class="fab fa-linkedin-in"></i></a>
        <a href="#"><i class="fab fa-github"></i></a>
      </div>
    </div>
  </div>
</template>
  1. Reka bentuk halaman kandungan

Halaman kandungan hendaklah mengandungi butiran artikel, artikel berkaitan dan komen. Kita boleh menggunakan Penghala Vue untuk melaksanakan lompatan dan lulus parameter. Kodnya adalah seperti berikut:

<template>
  <div class="article-page">
    <div class="article-header">
      <div class="title">{{ article.title }}</div>
      <div class="info">
        <div class="time">{{ article.time }}</div>
        <div class="source">{{ article.source }}</div>
        <div class="comment">{{ article.comment }}评论</div>
        <div class="like">{{ article.like }}赞</div>
      </div>
    </div>
    <div class="article-body">
      <div class="image">
        <img :src="article.image" alt="article-image">
      </div>
      <div class="content">
        {{ article.content }}
      </div>
    </div>
    <div class="article-footer">
      <div class="related-articles">
        <div class="title">相关文章</div>
        <div class="list">
          <div class="related-article" v-for="relatedArticle in relatedArticles" :key="relatedArticle.id">
            <div class="image">
              <img :src="relatedArticle.image" alt="article-image">
            </div>
            <div class="title">{{ relatedArticle.title }}</div>
          </div>
        </div>
      </div>
      <div class="comments">
        <div class="title">用户评论</div>
        <div class="list">
          <div class="comment" v-for="comment in comments" :key="comment.id">
            <div class="avatar">
              <img :src="comment.avatar" alt="user-avatar">
            </div>
            <div class="content">
              <div class="name">{{ comment.name }}</div>
              <div class="time">{{ comment.time }}</div>
              <div class="text">{{ comment.text }}</div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</template>

<script>
export default {
  name: 'ArticlePage',
  data() {
    return {
      article: {
        id: 1,
        image: './assets/article1.jpg',
        title: '文章标题1',
        content: '文章内容1',
        time: '10分钟前',
        source: '文章来源1',
        comment: 100,
        like: 200,
      },
      relatedArticles: [
        {
          id: 2,
          image: './assets/article2.jpg',
          title: '文章标题2',
        },
        {
          id: 3,
          image: './assets/article3.jpg',
          title: '文章标题3',
        },
        // 可以添加更多的相关文章
      ],
      comments: [
        {
          id: 1,
          avatar: './assets/avatar1.jpg',
          name: '用户1',
          time: '1小时前',
          text: '评论内容1',
        },
        {
          id: 2,
          avatar: './assets/avatar2.jpg',
          name: '用户2',
          time: '2小时前',
          text: '评论内容2',
        },
        // 可以添加更多的评论
      ],
    };
  },
};
</script>
  1. Reka bentuk halaman carian

Halaman carian harus mengandungi kotak carian, butang carian dan hasil carian. Kami boleh menggunakan Vue untuk memaparkan hasil carian secara dinamik. Kodnya adalah seperti berikut:

<template>
  <div class="search-page">
    <div class="search-box">
      <input type="text" v-model="query" placeholder="输入搜索内容">
      <button @click="search">搜索</button>
    </div>
    <div class="search-result">
      <div class="title">搜索结果</div>
      <div class="list">
        <div class="result" v-for="result in results" :key="result.id">
          <div class="image">
            <img :src="result.image" alt="article-image">
          </div>
          <div class="title">{{ result.title }}</div>
          <div class="source">{{ result.source }}</div>
        </div>
      </div>
    </div>
  </div>
</template>

<script>
export default {
  name: 'SearchPage',
  data() {
    return {
      query: '',
      results: [],
    };
  },
  methods: {
    search() {
      // 模拟搜索结果
      this.results = [
        {
          id: 1,
          image: './assets/article1.jpg',
          title: '搜索结果1',
          source: '文章来源1',
        },
        {
          id: 2,
          image: './assets/article2.jpg',
          title: '搜索结果2',
          source: '文章来源2',
        },
        // 可以添加更多的搜索结果
      ];
    },
  },
};
</script>

Setakat ini, kami telah melaksanakan reka bentuk halaman seperti tajuk. Menggunakan rangka kerja Vue, anda boleh dengan cepat dan mudah melaksanakan reka bentuk halaman yang kompleks, meningkatkan kecekapan pembangunan dan pengalaman pengguna. Saya harap artikel ini dapat membantu anda memahami dengan lebih baik rangka kerja Vue dan aplikasinya.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan reka bentuk halaman seperti tajuk dalam Vue?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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