Rumah hujung hadapan web View.js Bagaimana untuk melaksanakan reka bentuk halaman seperti Evernote dalam Vue?

Bagaimana untuk melaksanakan reka bentuk halaman seperti Evernote dalam Vue?

Jun 25, 2023 pm 05:43 PM
vue Reka bentuk halaman Evernote

Vue ialah rangka kerja JavaScript popular yang boleh digunakan untuk membina aplikasi web moden. Vue menyediakan cara mudah untuk membangunkan UI interaktif yang kaya, yang menjadikannya semakin popular di kalangan banyak pembangun. Evernote ialah aplikasi pengambilan nota terkenal yang menawarkan banyak ciri dan mempunyai reka bentuk antara muka yang sangat unik. Dalam artikel ini, kami akan memperkenalkan cara menggunakan Vue untuk melaksanakan reka bentuk halaman seperti Evernote.

  1. Membuat Aplikasi Vue

Pertama, kami akan mencipta aplikasi Vue baharu. Anda boleh menggunakan Vue CLI untuk mencipta aplikasi Vue asas, cuma jalankan arahan berikut dalam terminal:

1

vue create my-app

Salin selepas log masuk

Ini akan mencipta aplikasi Vue baharu yang dipanggil "aplikasi saya".

  1. Pasang kebergantungan yang diperlukan

Untuk mencapai matlamat kami, kami perlu memasang beberapa kebergantungan yang diperlukan. Kami akan memasangnya menggunakan arahan berikut:

1

npm install vue-router vuex vue-fontawesome bootstrap-vue

Salin selepas log masuk

Ini akan memasang kebergantungan yang diperlukan termasuk Vue-router, Vuex, FontAwesome dan Bootstrap-Vue.

  1. Layout Halaman Bangunan

Seterusnya, kami akan membuat susun atur halaman asas yang akan digunakan oleh aplikasi kami. Kami akan membuat bar sisi kiri menggunakan komponen <navbar> dan komponen <bar sisi>. Bar sisi ini akan dibentangkan sebagai senarai yang mengandungi buku nota dan tag. Di sebelah kanan, kami akan mencipta komponen yang dipanggil "NoteView" yang akan memaparkan butiran nota. <navbar> 组件和一个 <sidebar> 组件来创建一个左侧边栏。这个边栏将以列表的形式呈现,其中包含笔记本和标签。在右侧,我们将创建一个名为 “NoteView” 的组件,用于显示笔记的详细信息。

在我们的应用程序的主组件中,我们可以使用以下代码来包含这些组件:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

<template>

  <div>

    <navbar />

    <div class="container-fluid mt-5">

      <div class="row">

        <sidebar />

        <note-view />

      </div>

    </div>

  </div>

</template>

 

<script>

import Navbar from '@/components/Navbar.vue'

import Sidebar from '@/components/Sidebar.vue'

import NoteView from '@/components/NoteView.vue'

 

export default {

  components: {

    Navbar,

    Sidebar,

    NoteView

  }

}

</script>

 

<style>

/* Visit https://bootstrap-vue.js.org/docs/ for BootstrapVue documentation and examples */

</style>

Salin selepas log masuk
  1. 添加路由和 Vuex 状态管理

现在,我们需要添加路由和 Vuex 状态管理来实现我们的应用程序。我们将使用 Vuex 存储笔记本和标签,并使用路由来跳转到笔记本的详细信息页面。

我们首先需要设置一些常量,在 src/store/index.js 文件中,我们可以添加以下代码:

1

2

3

4

5

6

7

8

export const SET_NOTEBOOKS = 'SET_NOTEBOOKS'

export const SET_NOTES = 'SET_NOTES'

export const SET_TAGS = 'SET_TAGS'

export const SET_ACTIVE_NOTEBOOK = 'SET_ACTIVE_NOTEBOOK'

export const SET_ACTIVE_NOTE = 'SET_ACTIVE_NOTE'

export const ADD_NOTEBOOK = 'ADD_NOTEBOOK'

export const ADD_NOTE = 'ADD_NOTE'

export const ADD_TAG = 'ADD_TAG'

Salin selepas log masuk

接下来,我们将定义我们的 Vuex 状态,然后创建一个存储文件来管理这些状态。在 src/store/state.js 文件中,我们可以添加以下代码:

1

2

3

4

5

6

7

export default {

  notebooks: [],

  notes: [],

  tags: [],

  activeNotebook: null,

  activeNote: null

}

Salin selepas log masuk

接下来,我们需要设置一些动作和突变,来更新存储中的笔记本和笔记。在 src/store/mutations.js 文件中,我们可以添加以下代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

import {

  SET_NOTEBOOKS,

  SET_NOTES,

  SET_TAGS,

  SET_ACTIVE_NOTEBOOK,

  SET_ACTIVE_NOTE,

  ADD_NOTEBOOK,

  ADD_NOTE,

  ADD_TAG

} from './index'

 

export default {

  [SET_NOTEBOOKS](state, notebooks) {

    state.notebooks = notebooks

  },

  [SET_NOTES](state, notes) {

    state.notes = notes

  },

  [SET_TAGS](state, tags) {

    state.tags = tags

  },

  [SET_ACTIVE_NOTEBOOK](state, notebook) {

    state.activeNotebook = notebook

  },

  [SET_ACTIVE_NOTE](state, note) {

    state.activeNote = note

  },

  [ADD_NOTEBOOK](state, notebook) {

    state.notebooks.push(notebook)

  },

  [ADD_NOTE](state, note) {

    state.notes.push(note)

  },

  [ADD_TAG](state, tag) {

    state.tags.push(tag)

  }

}

Salin selepas log masuk

src/store/actions.js 文件中,我们可以添加以下代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

import axios from 'axios'

 

import {

  SET_NOTEBOOKS,

  SET_NOTES,

  SET_TAGS,

  SET_ACTIVE_NOTEBOOK,

  SET_ACTIVE_NOTE,

  ADD_NOTEBOOK,

  ADD_NOTE,

  ADD_TAG

} from './index'

 

const api = 'https://my-json-server.typicode.com/abhinav1507/demo'

 

export default {

  getNotebooks({ commit }) {

    axios.get(`${api}/notebooks`).then(response => {

      commit(SET_NOTEBOOKS, response.data)

    })

  },

  getNotes({ commit }) {

    axios.get(`${api}/notes`).then(response => {

      commit(SET_NOTES, response.data)

    })

  },

  getTags({ commit }) {

    axios.get(`${api}/tags`).then(response => {

      commit(SET_TAGS, response.data)

    })

  },

  setActiveNotebook({ commit }, notebook) {

    commit(SET_ACTIVE_NOTEBOOK, notebook)

  },

  setActiveNote({ commit }, note) {

    commit(SET_ACTIVE_NOTE, note)

  },

  addNotebook({ commit }, notebook) {

    axios.post(`${api}/notebooks`, notebook).then(response => {

      commit(ADD_NOTEBOOK, response.data)

    })

  },

  addNote({ commit }, note) {

    axios.post(`${api}/notes`, note).then(response => {

      commit(ADD_NOTE, response.data)

    })

  },

  addTag({ commit }, tag) {

    axios.post(`${api}/tags`, tag).then(response => {

      commit(ADD_TAG, response.data)

    })

  }

}

Salin selepas log masuk

接下来,在 src/router/index.js 文件中,我们需要设置路由,以在我们的应用程序中导航。我们可以添加以下代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

import Vue from 'vue'

import Vuex from 'vuex'

import VueRouter from 'vue-router'

 

import Home from '@/views/Home.vue'

import Notebook from '@/views/Notebook.vue'

 

Vue.use(VueRouter)

Vue.use(Vuex)

 

const routes = [

  {

    path: '/',

    name: 'Home',

    component: Home

  },

  {

    path: '/notebook/:id',

    name: 'Notebook',

    component: Notebook

  }

]

 

const router = new VueRouter({

  routes

})

 

export default router

Salin selepas log masuk
  1. 实现左侧边栏

我们将使用 <sidebar> 组件来实现左侧边栏。在这个组件中,我们将呈现笔记本和标签以及添加笔记本或标签的选项。我们还将使用 FontAwesome 中的图标来对这些元素加以区分。您可以在 src/components/Sidebar.vue 文件中添加以下代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

<template>

  <div class="col-lg-3">

    <div class="d-flex justify-content-between align-items-center mb-4">

      <h5 class="m-0">Notebooks</h5>

      <b-button variant="primary" size="sm">

        <font-awesome-icon :icon="['fas', 'plus']" />

        Add

      </b-button>

    </div>

    <b-list-group>

      <b-list-group-item v-for="notebook in notebooks" :key="notebook.id">

        <router-link :to="{ name: 'Notebook', params: { id: notebook.id}}">

          <font-awesome-icon :icon="['fas', 'book-open']" /> {{ notebook.title }}

        </router-link>

      </b-list-group-item>

    </b-list-group>

    <div class="d-flex justify-content-between align-items-center mt-4">

      <h5 class="m-0">Tags</h5>

      <b-button variant="primary" size="sm">

        <font-awesome-icon :icon="['fas', 'plus']" />

        Add

      </b-button>

    </div>

    <b-list-group>

      <b-list-group-item v-for="tag in tags" :key="tag.id">

        <font-awesome-icon :icon="['fas', 'tag']" /> {{ tag.title }}

      </b-list-group-item>

    </b-list-group>

  </div>

</template>

 

<script>

import { mapGetters } from 'vuex'

 

export default {

  computed: {

    ...mapGetters({

      notebooks: 'notebooks',

      tags: 'tags'

    })

  }

}

</script>

Salin selepas log masuk
  1. 实现笔记本详细页面

我们将使用一个名为 NoteView 的组件来实现笔记本详细信息页面。在这个组件中,我们将呈现笔记本的标题和内容。我们还将在笔记本的底部添加一个文本框,以便用户可以添加笔记。您可以在 src/components/NoteView.vue

Dalam komponen utama aplikasi kami, kami boleh memasukkan komponen ini menggunakan kod berikut:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    <template>

      <div class="col-lg-9">

        <div class="d-flex justify-content-between align-items-center mb-4">

          <router-link :to="{ name: 'Home'}" class="btn btn-secondary">

            <font-awesome-icon :icon="['fas', 'arrow-left']" /> Back

          </router-link>

          <b-form-group label="Notebook" label-for="notebook">

            <b-form-select v-model="activeNotebook" :options="notebooks" id="notebook" />

          </b-form-group>

        </div>

        <div class="card">

          <div class="card-header">

            <input type="text" class="form-control" placeholder="Title">

          </div>

          <div class="card-body">

            <textarea class="form-control" placeholder="Note"></textarea>

          </div>

        </div>

      </div>

    </template>

     

    <script>

    import { mapGetters, mapActions } from 'vuex'

     

    export default {

      computed: {

        ...mapGetters({

          notebooks: 'notebooks',

          activeNotebook: 'activeNotebook'

        })

      },

      methods: {

        ...mapActions({

          setActiveNotebook: 'setActiveNotebook'

        })

      },

      created() {

        if (!this.activeNotebook && this.notebooks.length) {

          this.setActiveNotebook(this.notebooks[0])

        }

      }

    }

    </script>

    Salin selepas log masuk
    1. Tambah penghalaan dan pengurusan keadaan Vuex

    Sekarang, kami perlu menambah penghalaan dan pengurusan Negeri Vuex untuk melaksanakan permohonan kami. Kami akan menggunakan Vuex untuk menyimpan buku nota dan teg, dan menggunakan penghalaan untuk melompat ke halaman butiran buku nota.

    🎜Kita perlu menyediakan beberapa pemalar terlebih dahulu, dalam fail src/store/index.js kita boleh menambah kod berikut: 🎜rrreee🎜Seterusnya, kita akan menentukan keadaan Vuex kita dan kemudian mencipta Simpan fail untuk mengurus keadaan ini. Dalam fail src/store/state.js, kita boleh menambah kod berikut: 🎜rrreee🎜 Seterusnya, kita perlu menyediakan beberapa tindakan dan mutasi untuk mengemas kini buku nota dan nota dalam stor. Dalam fail src/store/mutations.js, kita boleh menambah kod berikut: 🎜rrreee🎜 Dalam fail src/store/actions.js, kita boleh menambah kod berikut :🎜rrreee🎜Seterusnya, dalam fail src/router/index.js, kami perlu menyediakan laluan untuk menavigasi dalam aplikasi kami. Kami boleh menambah kod berikut: 🎜rrreee
      🎜Melaksanakan bar sisi kiri🎜🎜🎜Kami akan menggunakan komponen <bar sisi> untuk melaksanakan bar sisi kiri. Dalam komponen ini kami akan membentangkan buku nota dan tab bersama-sama dengan pilihan untuk menambah buku nota atau tab. Kami juga akan menggunakan ikon daripada FontAwesome untuk membezakan elemen ini. Anda boleh menambah kod berikut dalam fail src/components/Sidebar.vue: 🎜rrreee
        🎜Melaksanakan halaman butiran buku nota🎜🎜🎜Kami akan menggunakan fail bernama NoteView komponen untuk melaksanakan halaman butiran buku nota. Dalam komponen ini kami akan memaparkan tajuk dan kandungan buku nota. Kami juga akan menambah kotak teks ke bahagian bawah buku nota supaya pengguna boleh menambah nota. Anda boleh menambah kod berikut dalam fail src/components/NoteView.vue: 🎜rrreee🎜🎜Done🎜🎜🎜Kini, kami telah melaksanakan reka bentuk halaman seperti Evernote dalam aplikasi Vue. Kami menggunakan komponen dan penghalaan untuk melaksanakan bar sisi kiri dan halaman butiran nota, dan menggunakan pengurusan keadaan Vuex untuk menyimpan buku nota, nota dan teg. Kami juga menggunakan FontAwesome dan Bootstrap-Vue untuk mengoptimumkan UI kami. Lebih banyak gaya dan fungsi boleh ditambah dan dilanjutkan berdasarkan aplikasi Vue ini. 🎜

    Atas ialah kandungan terperinci Bagaimana untuk melaksanakan reka bentuk halaman seperti Evernote dalam Vue?. 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

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

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 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 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 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.

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 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.

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 Menggunakan Vue Traversal Cara Menggunakan Vue Traversal Apr 07, 2025 pm 11:48 PM

Terdapat tiga kaedah umum untuk vue.js untuk melintasi tatasusunan dan objek: Arahan V-untuk digunakan untuk melintasi setiap elemen dan membuat templat; Arahan V-mengikat boleh digunakan dengan V-untuk menetapkan nilai atribut secara dinamik untuk setiap elemen; dan kaedah .map boleh menukar elemen array ke dalam tatasusunan baru.

Cara melompat ke Div Vue Cara melompat ke Div Vue Apr 08, 2025 am 09:18 AM

Terdapat dua cara untuk melompat elemen div di Vue: Gunakan Vue Router dan tambahkan komponen router-link. Tambah pendengar acara @Click dan panggil ini. $ Router.push () kaedah untuk melompat.

See all articles