26.11.2024 г.
Vue Router и Main файла
При стартиране на нов Vue проект, използвам Quick Start секцията на сайта на Vue. След това, задължително, правя няколко малки промени, преди да добавя проекта към Source Control банката.
От въпросите, които ми задава npm create vue@latest
почти винаги си избирам:
√ Add TypeScript? ... no / YES
√ Add Vue Router for Single Page Application development? ... no / YES
√ Add Pinia for state management? ... no / YES
√ Add an End-to-End Testing Solution? » Playwright
Другите, ако в процеса на разработка се наложат.
След изпълнение на всички инструкции, които Ви излизат по екрана, получавате един готов за стартиране проект. Първото нещо, което редактирам е Main файла - src/main.ts
.
В началото той има следния вид:
import './assets/main.css'
import { createApp } from 'vue'
import { createPinia } from 'pinia'
import App from './App.vue'
import router from './router'
const app = createApp(App)
app.use(createPinia())
app.use(router)
app.mount('#app')
Тук има една малка скрита тайна, която вероятно не знаете. Понякога може да се случи, Vue приложението да се зареди, преди да се инициализира рутера. За да избегна появата на подобни Vue jokes, редактирам src/main.ts
:
import "./assets/main.css";
import { createApp } from "vue";
import { createPinia } from "pinia";
import App from "./App.vue";
initializeApp();
async function initializeApp(): Promise<void> {
const app = createApp(App);
const pinia = createPinia();
const { default: router } = await import("@/router");
app.use(router);
app.use(pinia);
await router.isReady();
app.mount("#app");
}
По този начин рутера се инициализира преди Vue приложението да бъде заредено. Една мъничка хитрина, която ще Ви спаси от евентуални бъдещи проблеми.
Ако имате мнение или въпроси за статията, не се колебайте да ги споделите.
Electron, TypeScript и Parcel
Документацията на Electron е изцяло за JavaScript, но това не пречи да си използвате TypeScript, с който да генерира този JavaScript. Трябва да се спазват няколко простички правила, и то основно в пътищата на зареждане на файловете. Подготвил съм и малко допълнение за front-end частта. Вместо стандартната за Electron HTML страница ще направя малка компилация с Parcel.
Простичък Vue плъгин за гео локация
Когато пиша плъгин, мисля за него, като самостоятелно парче код, което има собствена логика на работа и е независимо от мястото, на което ще се ползва. Това разбира се не е съвсем вярно, но при проектирането на плъгин, винаги изхождам от тази идея. Все пак всяка система има своя логика и архитектура, която трябва да се спазва - особено за изходящите данни.