🗂️File Structure
პროექტში აუცილებელია გვქონდეს სწორად განსაზღვრული ფაილური სტრუქტურა. თუ პროექტში მივყვებით გარკვეულ კონვენციებს ფაილური სტრუქტურის შესახებ ძალიან ბევრ ბენეფიტს ვიღებთ. როგორიცაა:
ფაილური სტრუქტურა root დირექტორია
მთავარ დირექტორიაში ძირითადად მოთავსებულია ავტომატურად დაგენერირებული ფოლდერები და ისეთი კონფიგურაციის ფაილები როგორიცაა. ორი ფაილი რისი ჩამაწებაც საჭიროა არის .env და .env.example. და ასევე ჩვენთვის ყველაზე მნიშვნელოვანი src ფოლდერი.
src დირექტორია
რეალურად src წარმოადგენს ინ დირექტორიას სადაც ჩვენ მიერ დაწერილი კოდი თავსდება. მომდევნო სექციებში ჩვენ განვიხილავთ თითოეული ფაილისა და ფოლდერის როლს ამ დირექტორიაში.
src
|--- assets
|--- components
|--- composables
|--- layouts
|--- locales
|--- plugins
|--- router
|--- store
|--- utils
|--- views (or pages)
- App.vue
- main.js
src/assets
ამ ფოლდერში მოთავსებულია ჩვენი css ფაილები, სურათები pdf ფაილები და ა.შ თვითონ მასში მოთავსებული ფაილების სტრუქტურა პირობითია, ერთადერთი წესი არის ის რომ იყოს ინტუიციური. ერთ-ერთ მაგალითად შეგიძლია მომდევნო სტრუქტურა გამოიყენო.
src/assets
|--- files - ფაილები რომლებიც სურათები არ არის, მაგალითად pdf და ა.შ
|--- images - სურათები. შიგნით შეგვიძლია კიდევ სასურველი
სტრუქტურით დავყოთ სურვილის შემთხვევაში
- base.css - ავტომატურად დაგენერირებული css რომელსაც დიდად არ ვეხებით
- main.css - გლობალური css
src/components
აქ უნდა მოვათავსოთ კომპონენტები. მასში ასევე უნდა მვოათავსოთ რამოდენიმე ფოლდერი რომელიც თითქმის ყველა აპლიკაციაში დაგვჭირდება. ესენია : icons, layouts, shared, ui. ასევე გვაქვს მომდევნო წესი, ყოველი არსებული view (page) სათვის უნდა შევქმნათ შესაბამისი ფოლდერები, დავარქვათ შესაბამისი view (page)ის სახელი და მასში მოვათავსოთ ის კომპონენტები რომელიც მაგ გვერდზე გვჭირდება. კომპონენტის ფაილის სახელი შეიძლება იყოს როგორც PascalCase ასევე kebab-case ფაილების სახელის დარქმევისას გაითვალისწინე შესაბამისი Style Guide
src/components
|--- icons - Icon-ები. დეტალური ინფორმაცია შესაბამის სექციაში.
|--- layouts - layout-ები. src/layouts სექციაში მოყვანილი გამოყენების მაგალითი
|--- shared - ისეთი კომპონენტები რომლებიც 2 ან მეტ გვერდზე გამოიყენება
|---|- - PageHeader.vue <-მაგალითI
|--- ui - user interface ის კომპონენტები: ღილაკები, ინფუთები, card-ები და ა.შ.
|---|---buttons <- მაგალითი
|---|---|- - DangerButton.vue <- მაგალითი
იმ შემთხვევაში თუ გვაქვს ContactView ან ContactPage აქვე გვექნება შესაბამისი contact
ფოლდერი რომელშიც იქნება მოთავსებული შესაბამისი კომპონენტები. მაგალითად თუ მასში არის
ფორმა და ინფორმაციის სექციები ჩვენს ფაილურ სტრუქტურას ექნება შემდეგი სახე
|--- contact
|---|- - Form.vue
|---|- - Information.vue
src/composables
ჩვენი composable-ები რომლებიც გარკვეულ სთეითს გვიბრუნებს.
src/composables
|- - useMouseLocation.js
|- - useCounter.js
|- - ...
src/layouts
აქ თავსდება ჩვენი Layout ის მთავარი კომპონენტები
src/layouts
|- - DefaultLayout.vue
|- - AdminLayout.vue
|- - ...
იმისათვის რომ ამ კომპონენტების მოცულობა არ იყოს ძალიან დიდი ხდება მათი კომპონენტებად დაყოფა, და შესაბამისი კომპონენტები თავსთება src/components/layouts დირექტორიაში
მაგალითად, თუ გვაქვს src/layouts/AdminLayout.vue და მას აქვს header, footer და sidebar კომპონენტები. ფაილურ სტრუქტურას ექნება შემდეგი სახე
src/components/layouts
|--- admin
|---|- - Header.vue
|---|- - Footer.vue
|---|- - Sidebar.vue
src/layouts
|- - AdminLayout.vue
src/locales
ამ დირექტორიაზე მოთავსდება vue-i18n ის შესაბამისი თარგმნები. გამომდინარე იქედან რომ ვიყენებთ i18n ally ექსთენშენს ედიტორისათვის, ფაილებს ექნებათ სწორხაზოვანი მარტივი სტრუქტურა. დამატებითი ინფორმაციისთვის ნახე Localization (i18n) სტატია.
src/locales
|- - en.json
|- - ge.json (გამოიყენე ge და არა ka, რომ i18n ally-მ დროშაც გამოაჩინოს)
|- - jp.json
src/plugins
აქ მოთავსებული ჩვენი plugin-ები. მაგალითად i18n, vuetify და ა.შ. პლაგინებზე მეტი ინფორმაციისათვის შეგიძლია ნახო შესაბამისი plugins სექცია.
src/plugins
|--- i18n
|---|- - index.js
|--- vuetify
|---|- - index.js
|--- axios
|---|- - index.js
src/router
აქ მოთავსებული იქნება vue-router ის შესაბამისი კონფიგურაცია. აპლიკაციის სიდიდიდან გამომდინარე მის ფაილურ სტრუქტურას შესაძლოა სხვადასხვა სახე ჰქონდეს. შესაძლოა იყოს მხოლოდ index.js ფაილი ან დაყოფილი იყოს შემდეგი სახით:
src/router
|- - guards.js
|- - index.js
|- - middlwares.js
დამატებითი ინფორმაცია შეგიძლია ნახო router სექციაში.
src/store
აქ ვათავსებთ შესაბამისი ფინიას ან vuex ის სთორის შესაბამის ფაილებს. მაგალითში მოცემული იქნება მხოლოდ Pinia-ს რეკომენდირებული ფაილური სტრუქტურა, რადგან თუ ახალ პროექტს აკეთებ უდაოდ Pinia-ს გამოყენება სჯობს, ხოლო თუ ძველ პროექტზე მუშაობ უკვე იქნება გარკვეული ფაილური სტრუქტურა
Coming Soon..
src/utils
აქ ვათავსებთ წვრილან ლოგიკას რომელიც ან ბევრგან გვჭირდება ან სადაც გვჭირდება დიდად იმპლემენტაციის დეტალები არ გვაინტერესებს. composable-ისგან განსხვავდება იმით რომ არ გვაქვს არანაირი სთეითი. კარგი მაგალითI იქნება ფუნქცია რომელიც გვიბრუნებს თუ რამდენი წელი გავიდა კონკრეტული თარიღიდან.
src/utils
|- - dateUtils.js
src/views (ან pages)
ამ ფოლდერში შეგვიძლია დავარქვათ როგორც views ასევე pages. აქ ვათავსებთ უშუალოდ ჩვენი გვერდების შესაბამის კომპონენტებს, რომლებიც გამოიყენება vue-router ში შესაბამის როუტზე შესაბამისი გვერდის დასაბრუნებლად. ამ ფოლდერში მოთავსებული კომპონენტები უნდა მთავრდებოდეს შესაბამისად View ან Page სუფიქსით.
/src/views
|- - HomeView
ან
/src/pages
|- - HomePage
თვითონ View/Page კომპონენტი უნდა იყოს დაყოფილი კომპონენტებად რომლებიც src/components/{შესაბამისი ვიუს ფოლდერის სახელი}/... ამ დირექტორიაზე იქნება მოთავსებული. ან თუ მოცემული კომპონენტი სხვა გვერდზეც გამოიყენება მაგ შემთხვევაში shared დირექტორიაზე. მაგალითად:
<template>
<div>
<home-carousel />
<home-services />
<home-information class="bg-gray-100" />
<home-new-products />
<home-locations class="bg-gray-100" />
</div>
</template>
src/App.vue
აქ, არაფერი განსაკუთრებული არ ხდება
src/main.js
ამ ფაილში ხდება ძირითადი აპლიკაციის გამართვა, სტილების დაიმპორტება, პლაგინების დაიმპორტება და ვიუს აპლიკაციაში გამართვა, და აპლიკაციის დამაუნთება. მაგალითად:
import { createApp } from "vue";
import App from "@/App.vue";
import router from "@/router"; // vue-router
import i18n from "@/plugins/i18n"; // plugins
import vuetify from "@/plugins/vuetify"; //plugins
import "@/assets/main.css"; //styles
import "bpg-nino-elite-caps"; // font
const app = createApp(App);
app.use(router);
app.use(i18n);
app.use(vuetify);
app.mount("#app");
Last updated