Home > Web Front-end > Vue.js > body text

How to use Vue and Firebase Cloud Firestore to implement a newsletter application with real-time data synchronization

王林
Release: 2023-09-13 08:27:24
Original
1236 people have browsed it

如何使用Vue和Firebase Cloud Firestore实现数据实时同步的时事通讯应用

How to use Vue and Firebase Cloud Firestore to implement a newsletter application with real-time data synchronization

Introduction:
In the digital era, real-time information acquisition has become one of the important needs . The real-time synchronization feature of newsletter apps helps users stay up to date with the latest news, events, and updates. This article will introduce how to use Vue.js and Firebase Cloud Firestore to implement a newsletter application with real-time data synchronization, and provide corresponding code examples.

1. What is Vue.js and Firebase Cloud Firestore
Vue.js is a popular JavaScript framework used to build user interfaces. It is easy to learn, flexible and efficient, and is widely used in single-page application and mobile app development.

Firebase Cloud Firestore is a flexible, real-time cloud database service. It provides a simple way to store and synchronize an application's data without the need to build and maintain a backend server yourself.

2. Project preparation

  1. Create Vue.js project
    First, create a new Vue.js project through Vue CLI. Open a terminal and execute the following command:

    vue create times-news-app
    Copy after login

    Select your preferred configuration options and wait for the project to be created.

  2. Configuring Firebase Cloud Firestore
    Create a new project in the Firebase console and add the Cloud Firestore database. Get your Firebase configuration information in the project settings.

Open the Vue.js project, create a file named .env.local in the project root directory, and add the following configuration information to the file:

VUE_APP_FIREBASE_API_KEY=YOUR_API_KEY
VUE_APP_FIREBASE_AUTH_DOMAIN=YOUR_AUTH_DOMAIN
VUE_APP_FIREBASE_DATABASE_URL=YOUR_DATABASE_URL
VUE_APP_FIREBASE_PROJECT_ID=YOUR_PROJECT_ID
VUE_APP_FIREBASE_STORAGE_BUCKET=YOUR_STORAGE_BUCKET
VUE_APP_FIREBASE_MESSAGING_SENDER_ID=YOUR_MESSAGING_SENDER_ID
VUE_APP_FIREBASE_APP_ID=YOUR_APP_ID
Copy after login

Replace YOUR_API_KEY, YOUR_AUTH_DOMAIN, etc. with the actual values ​​you got in the Firebase console.

3. Create Vue components
First, we need to create two Vue components: one for displaying the news list, and the other for publishing new news.

  1. NewsList.vue

    <template>
      <div>
     <h1>时事新闻</h1>
     <ul>
       <li v-for="newsItem in newsList" :key="newsItem.id">
         {{ newsItem.title }}
       </li>
     </ul>
      </div>
    </template>
    
    <script>
    import db from '@/firebaseConfig.js';
    
    export default {
      data() {
     return {
       newsList: []
     };
      },
      created() {
     db.collection('news')
       .orderBy('timestamp', 'desc')
       .onSnapshot((snapshot) => {
         this.newsList = snapshot.docs.map((doc) => {
           return {
             id: doc.id,
             title: doc.data().title
           };
         });
       });
      }
    };
    </script>
    Copy after login
  2. NewNews.vue

    <template>
      <form @submit.prevent="submitNews">
     <h2>发布新闻</h2>
     <input type="text" v-model="newsText" placeholder="请输入新闻标题" />
     <button type="submit">发布</button>
      </form>
    </template>
    
    <script>
    import db from '@/firebaseConfig.js';
    
    export default {
      data() {
     return {
       newsText: ''
     };
      },
      methods: {
     submitNews() {
       db.collection('news')
         .add({
           title: this.newsText,
           timestamp: new Date()
         })
         .then(() => {
           this.newsText = '';
         })
         .catch((error) => {
           console.error('发布新闻失败:', error);
         });
     }
      }
    };
    </script>
    Copy after login

4. Configure routing and styles
Configure routing in the src/router/index.js file:

import Vue from 'vue';
import VueRouter from 'vue-router';
import NewsList from '@/views/NewsList.vue';
import NewNews from '@/views/NewNews.vue';

Vue.use(VueRouter);

const routes = [
  {
    path: '/',
    name: 'NewsList',
    component: NewsList
  },
  {
    path: '/new',
    name: 'NewNews',
    component: NewNews
  }
];

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

export default router;
Copy after login

Set the basic style in the src/App.vue file:

<template>
  <div id="app">
    <router-link to="/">新闻列表</router-link>
    <router-link to="/new">发布新闻</router-link>
    <router-view />
  </div>
</template>

<style>
#app {
  font-family: Arial, Helvetica, sans-serif;
  text-align: center;
}
</style>
Copy after login

5. Integrate Firebase and Vue applications
Configure Firebase in the src/firebaseConfig.js file:

import firebase from 'firebase/app';
import 'firebase/firestore';

const firebaseConfig = {
  apiKey: process.env.VUE_APP_FIREBASE_API_KEY,
  authDomain: process.env.VUE_APP_FIREBASE_AUTH_DOMAIN,
  databaseURL: process.env.VUE_APP_FIREBASE_DATABASE_URL,
  projectId: process.env.VUE_APP_FIREBASE_PROJECT_ID,
  storageBucket: process.env.VUE_APP_FIREBASE_STORAGE_BUCKET,
  messagingSenderId: process.env.VUE_APP_FIREBASE_MESSAGING_SENDER_ID,
  appId: process.env.VUE_APP_FIREBASE_APP_ID
};

firebase.initializeApp(firebaseConfig);

const db = firebase.firestore();

export default db;
Copy after login

Finally, in src/main.jsIntegrate Vue and Firebase in the file:

import Vue from 'vue';
import App from './App.vue';
import router from './router';

Vue.config.productionTip = false;

new Vue({
  router,
  render: (h) => h(App)
}).$mount('#app');
Copy after login

6. Run the application
Execute the following command in the terminal to run the application:

npm run serve
Copy after login

Visit http://localhost: 8080, you will see a newsletter application with real-time data synchronization function.

Summary:
This article introduces how to use Vue.js and Firebase Cloud Firestore to implement a newsletter application with real-time data synchronization. We created two Vue components for displaying the news list and publishing news, and then configured routing and styles. Finally, we use Firebase to store and synchronize the data and integrate it into the Vue app. With these steps, we can easily build a newsletter app with real-time synchronization capabilities.

Reference materials:

  • Vue.js official documentation: https://vuejs.org/
  • Firebase official documentation: https://firebase.google. com/docs
  • Vue CLI official documentation: https://cli.vuejs.org/

The above is the detailed content of How to use Vue and Firebase Cloud Firestore to implement a newsletter application with real-time data synchronization. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!