Rumah hujung hadapan web View.js Cara membangunkan aplikasi perkongsian lukisan masa nyata menggunakan Vue dan Canvas

Cara membangunkan aplikasi perkongsian lukisan masa nyata menggunakan Vue dan Canvas

Jul 17, 2023 pm 10:37 PM
vue canvas Aplikasi perkongsian lukisan masa nyata

Cara menggunakan Vue dan Canvas untuk membangunkan aplikasi perkongsian lukisan masa nyata

Pengenalan:
Dalam era Internet, kerjasama masa nyata telah menjadi bahagian yang amat diperlukan dalam kehidupan dan kerja kami. Membangunkan aplikasi perkongsian lukisan masa nyata adalah keperluan yang sangat biasa. Artikel ini akan memperkenalkan cara menggunakan Vue dan Canvas untuk membangunkan aplikasi perkongsian lukisan masa nyata dan memberikan contoh kod yang sepadan.

1. Persediaan
Sebelum memulakan pembangunan, kita perlu memastikan bahawa persekitaran pembangunan Vue dan Canvas telah dipasang pada komputer. Jika ia tidak dipasang, anda boleh menggunakan arahan berikut untuk memasangnya:

# 安装Vue
npm install -g @vue/cli

# 创建一个新的Vue项目
vue create draw-app

# 安装Canvas
npm install canvas
Salin selepas log masuk

2. Lukis antara muka papan lukisan asas
Seterusnya, kami akan menggunakan sintaks templat Vue untuk melukis antara muka papan lukisan asas. Dalam fail App.vue, tambahkan kod berikut:

<template>
  <div class="app">
    <canvas ref="canvas" @mousedown="startDrawing" @mousemove="draw" @mouseup="stopDrawing"></canvas>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isDrawing: false,
      context: null,
      lastX: 0,
      lastY: 0,
    };
  },
  mounted() {
    this.context = this.$refs.canvas.getContext('2d');
    this.$refs.canvas.width = window.innerWidth;
    this.$refs.canvas.height = window.innerHeight;
  },
  methods: {
    startDrawing(event) {
      this.isDrawing = true;
      [this.lastX, this.lastY] = [event.pageX, event.pageY];
    },
    draw(event) {
      if (!this.isDrawing) return;
      const { context, lastX, lastY } = this;
      context.beginPath();
      context.moveTo(lastX, lastY);
      context.lineTo(event.pageX, event.pageY);
      context.stroke();
      [this.lastX, this.lastY] = [event.pageX, event.pageY];
    },
    stopDrawing() {
      this.isDrawing = false;
    },
  },
};
</script>

<style>
.app {
  background-color: #eee;
}
</style>
Salin selepas log masuk

Dalam kod di atas, kami mengikat acara turun tetikus, gerakan tetikus dan naik tetikus untuk melaksanakan fungsi lukisan masa nyata. Antaranya, peristiwa turun tetikus menunjukkan bahawa lukisan bermula apabila tetikus ditekan, peristiwa gerakan tetikus menunjukkan bahawa laluan dilukis apabila tetikus bergerak, dan peristiwa tetikus naik menunjukkan bahawa lukisan berhenti apabila tetikus dinaikkan.

3. Fungsi perkongsian masa nyata
Untuk merealisasikan fungsi perkongsian masa nyata, kami boleh menggunakan WebSocket untuk pemesejan masa nyata. Dalam artikel ini, kami akan menggunakan perpustakaan socket.io untuk memudahkan penggunaan WebSockets.

Mula-mula, kita perlu memasang perpustakaan socket.io dalam projek:

npm install socket.io
Salin selepas log masuk

Kemudian, dalam fail main.js, tambah kod berikut:

import Vue from 'vue';
import App from './App.vue';
import io from 'socket.io-client';

const socket = io('http://localhost:3000');
Vue.prototype.$socket = socket;

new Vue({
  render: h => h(App),
}).$mount('#app');
Salin selepas log masuk

Dalam kod di atas, kami akan mencipta contoh soket dan tetapkan ia Prototaip sifat untuk Vue untuk digunakan sepanjang projek.

Seterusnya, dalam atribut kaedah fail App.vue, tambahkan kaedah berikut:

methods: {
  // 省略之前的代码...

  startDrawing(event) {
    this.isDrawing = true;
    [this.lastX, this.lastY] = [event.pageX, event.pageY];
    this.$socket.emit('startDrawing', { x: event.pageX, y: event.pageY });
  },

  draw(event) {
    if (!this.isDrawing) return;
    const { context, lastX, lastY } = this;
    context.beginPath();
    context.moveTo(lastX, lastY);
    context.lineTo(event.pageX, event.pageY);
    context.stroke();
    [this.lastX, this.lastY] = [event.pageX, event.pageY];
    this.$socket.emit('draw', { x: event.pageX, y: event.pageY });
  },

  stopDrawing() {
    this.isDrawing = false;
    this.$socket.emit('stopDrawing');
  },
},
Salin selepas log masuk

Dalam kod di atas, kami menambah tiga panggilan kaedah socket.emit(), memulakan lukisan, laluan lukisan dan berhenti melukis mesej yang sepadan kepada pelayan WebSocket.

Akhir sekali, kita perlu melaksanakan pelayan WebSocket di bahagian pelayan. Di sini kami menggunakan Node.js untuk membina pelayan. Cipta fail server.js baharu dalam direktori akar projek dan tambah kod berikut:

const server = require('http').createServer();
const io = require('socket.io')(server, {
  cors: {
    origin: '*',
  },
});

io.on('connection', socket => {
  console.log('New client connected');

  socket.on('startDrawing', (data) => {
    socket.broadcast.emit('startDrawing', data);
  });

  socket.on('draw', (data) => {
    socket.broadcast.emit('draw', data);
  });

  socket.on('stopDrawing', () => {
    socket.broadcast.emit('stopDrawing');
  });

  socket.on('disconnect', () => {
    console.log('Client disconnected');
  });
});

server.listen(3000, () => {
  console.log('Server listening on port 3000');
});
Salin selepas log masuk

Dalam kod di atas, kami mencipta pelayan HTTP dan menaik tarafnya kepada pelayan WebSocket menggunakan perpustakaan socket.io. Kemudian, kami menambah pendengar untuk startDrawing, draw dan stopDrawing dalam acara sambungan untuk menerima mesej yang dihantar daripada klien dan menyiarkannya kepada klien lain yang disambungkan.

4 Jalankan aplikasi
Sekarang kita telah menyelesaikan pembangunan aplikasi, kita boleh memulakan aplikasi melalui arahan berikut:

npm run serve
Salin selepas log masuk

Mengikut gesaan baris arahan, kita boleh mengakses aplikasi melalui http://localhost :8080. Kini, kami boleh membuka apl dalam berbilang tetingkap penyemak imbas, menggunakan tetikus untuk melukis pada papan seni dan berkongsi dengan pengguna lain dalam masa nyata.

Kesimpulan:
Artikel ini memperkenalkan cara menggunakan Vue dan Canvas untuk membangunkan aplikasi perkongsian lukisan masa nyata, dan menggabungkannya dengan perpustakaan socket.io untuk melaksanakan fungsi pemesejan masa nyata. Melalui pengenalan artikel ini, pembaca boleh menguasai langkah asas menggunakan Vue dan Canvas untuk membangunkan aplikasi perkongsian lukisan masa nyata, dan cara menggunakan WebSocket untuk melaksanakan pemesejan masa nyata. Semoga artikel ini bermanfaat kepada pembaca, terima kasih kerana membaca.

Atas ialah kandungan terperinci Cara membangunkan aplikasi perkongsian lukisan masa nyata menggunakan Vue dan Canvas. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara menambah fungsi ke butang untuk vue Cara menambah fungsi ke butang untuk vue Apr 08, 2025 am 08:51 AM

Anda boleh menambah fungsi ke butang VUE dengan mengikat butang dalam templat HTML ke kaedah. Tentukan kaedah dan tulis logik fungsi dalam contoh Vue.

Cara menggunakan bootstrap di vue Cara menggunakan bootstrap di vue Apr 07, 2025 pm 11:33 PM

Menggunakan bootstrap dalam vue.js dibahagikan kepada lima langkah: Pasang bootstrap. Import bootstrap di main.js. Gunakan komponen bootstrap secara langsung dalam templat. Pilihan: Gaya tersuai. Pilihan: Gunakan pemalam.

Cara Menggunakan Watch di Vue Cara Menggunakan Watch di Vue Apr 07, 2025 pm 11:36 PM

Pilihan Watch di Vue.js membolehkan pemaju mendengar perubahan dalam data tertentu. Apabila data berubah, tontonkan mencetuskan fungsi panggil balik untuk melakukan paparan kemas kini atau tugas lain. Pilihan konfigurasinya termasuk segera, yang menentukan sama ada untuk melaksanakan panggilan balik dengan serta -merta, dan mendalam, yang menentukan sama ada untuk mendengarkan secara rekursif terhadap objek atau tatasusunan.

Cara merujuk fail js dengan vue.js Cara merujuk fail js dengan vue.js Apr 07, 2025 pm 11:27 PM

Terdapat tiga cara untuk merujuk kepada fail JS dalam vue.js: Secara langsung tentukan jalan menggunakan & lt; skrip & gt; tag ;; import dinamik menggunakan cangkuk kitaran hayat yang dipasang (); dan mengimport melalui Perpustakaan Pengurusan Negeri VUEX.

Apakah yang dimaksudkan dengan pembangunan Vue Multi-Page? Apakah yang dimaksudkan dengan pembangunan Vue Multi-Page? Apr 07, 2025 pm 11:57 PM

Pembangunan pelbagai halaman Vue adalah cara untuk membina aplikasi menggunakan rangka kerja VUE.JS, di mana permohonan dibahagikan kepada halaman berasingan: Penyelenggaraan kod: Memisahkan aplikasi ke dalam beberapa halaman boleh menjadikan kod lebih mudah untuk dikendalikan dan diselenggarakan. Modularity: Setiap halaman boleh digunakan sebagai modul yang berasingan untuk penggunaan semula dan penggantian mudah. Routing mudah: Navigasi antara halaman boleh diuruskan melalui konfigurasi penghalaan mudah. Pengoptimuman SEO: Setiap halaman mempunyai URL sendiri, yang membantu SEO.

Cara kembali ke halaman sebelumnya oleh Vue Cara kembali ke halaman sebelumnya oleh Vue Apr 07, 2025 pm 11:30 PM

Vue.js mempunyai empat kaedah untuk kembali ke halaman sebelumnya: $ router.go (-1) $ router.back () menggunakan & lt; router-link to = & quot;/& quot; Komponen Window.History.Back (), dan pemilihan kaedah bergantung pada tempat kejadian.

Cara Menanyakan Versi Vue Cara Menanyakan Versi Vue Apr 07, 2025 pm 11:24 PM

Anda boleh menanyakan versi VUE dengan menggunakan Vue Devtools untuk melihat tab VUE dalam konsol penyemak imbas. Gunakan NPM untuk menjalankan arahan "NPM LIST -G VUE". Cari item VUE dalam objek "Dependencies" fail Package.json. Untuk projek Vue CLI, jalankan perintah "Vue -version". Semak maklumat versi di & lt; skrip & gt; Tag dalam fail HTML yang merujuk kepada fail VUE.

Cara Lulus Parameter untuk Fungsi Vue Cara Lulus Parameter untuk Fungsi Vue Apr 08, 2025 am 07:36 AM

Terdapat dua cara utama untuk lulus parameter ke fungsi Vue.js: Lulus data menggunakan slot atau mengikat fungsi dengan mengikat, dan menyediakan parameter: lulus parameter menggunakan slot: lulus data dalam templat komponen, diakses dalam komponen dan digunakan sebagai parameter fungsi. Lulus parameter menggunakan mengikat mengikat: Fungsi mengikat dalam contoh Vue.js dan menyediakan parameter fungsi.

See all articles