Dev to webs {Coding…}

เรียนรู้การพัฒนาซอฟเวอร์ เพื่อความรู้ที่ยั่งยืน

บทที่ 26: การใช้เครื่องมือเสริม (Tooling) สำหรับการพัฒนา Vue.js

1. เครื่องมือเสริมคืออะไร?

เครื่องมือเสริม (Tooling) ช่วยเพิ่มประสิทธิภาพในการพัฒนา Vue.js โดยช่วยจัดการงานที่ซับซ้อน เช่น การตั้งค่าโปรเจกต์ การบำรุงรักษาโค้ด การทดสอบ และการปรับปรุงประสิทธิภาพแอปพลิเคชัน


2. Vue CLI

Vue CLI เป็นเครื่องมือที่ช่วยสร้างและจัดการโปรเจกต์ Vue.js ได้อย่างง่ายดาย

การติดตั้ง Vue CLI:

npm install -g @vue/cli

การสร้างโปรเจกต์ใหม่:

vue create my-project

การเพิ่ม Plugins:

Vue CLI รองรับการเพิ่ม Plugins เพื่อขยายความสามารถของโปรเจกต์

vue add router
vue add vuex
vue add pwa

3. Vite

Vite เป็นเครื่องมือ Build ที่มีความเร็วสูงและรองรับ Vue.js โดยค่าเริ่มต้น

การติดตั้ง Vite:

npm create vite@latest my-project --template vue
cd my-project
npm install

การรัน Development Server:

npm run dev

การสร้าง Production Build:

npm run build

4. Vue DevTools

Vue DevTools เป็น Extension สำหรับ Browser ที่ช่วยในการ Debug แอปพลิเคชัน Vue.js

การติดตั้ง Vue DevTools:

ฟีเจอร์หลัก:

  • ตรวจสอบ Component Hierarchy
  • ดู State และ Props ของแต่ละ Component
  • Debug Vuex Store

5. ESLint และ Prettier

ESLint และ Prettier ช่วยให้โค้ดของคุณมีความสม่ำเสมอและลดข้อผิดพลาดในการเขียนโค้ด

การติดตั้ง ESLint และ Prettier:

npm install eslint prettier eslint-plugin-prettier eslint-config-prettier --save-dev

การตั้งค่า ESLint:

สร้างไฟล์ .eslintrc.js:

module.exports = {
  env: {
    browser: true,
    es2021: true
  },
  extends: [
    'eslint:recommended',
    'plugin:vue/vue3-recommended',
    'prettier'
  ],
  parserOptions: {
    ecmaVersion: 12,
    sourceType: 'module'
  },
  plugins: ['vue', 'prettier'],
  rules: {
    'prettier/prettier': 'error'
  }
};

6. Pinia

Pinia เป็น State Management Library ที่มีความเรียบง่ายและทันสมัยกว่า Vuex

การติดตั้ง Pinia:

npm install pinia

การตั้งค่า Pinia:

// main.js
import { createApp } from 'vue';
import { createPinia } from 'pinia';
import App from './App.vue';

const app = createApp(App);
app.use(createPinia());
app.mount('#app');

การสร้าง Store:

// stores/counter.js
import { defineStore } from 'pinia';

export const useCounterStore = defineStore('counter', {
  state: () => ({ count: 0 }),
  actions: {
    increment() {
      this.count++;
    }
  }
});

การใช้งานใน Component:

<template>
  <div>
    <p>Count: {{ counter.count }}</p>
    <button @click="counter.increment">Increment</button>
  </div>
</template>

<script>
import { useCounterStore } from '@/stores/counter';

export default {
  setup() {
    const counter = useCounterStore();
    return { counter };
  }
};
</script>

7. การใช้ Cypress สำหรับ End-to-End Testing

Cypress เป็นเครื่องมือสำหรับทดสอบ End-to-End ของแอปพลิเคชัน Vue.js

การติดตั้ง Cypress:

npm install cypress --save-dev

การเปิด Cypress Test Runner:

npx cypress open

การเขียนตัวอย่าง Test:

// cypress/integration/example.spec.js
describe('My First Test', () => {
  it('Visits the app root url', () => {
    cy.visit('/');
    cy.contains('h1', 'Welcome to Vue.js');
  });
});

8. การใช้ Storybook สำหรับ Component Development

Storybook ช่วยให้คุณพัฒนาและทดสอบ Component อย่างแยกส่วนได้ง่ายขึ้น

การติดตั้ง Storybook:

npx sb init

การรัน Storybook:

npm run storybook

การสร้าง Story:

// Button.stories.js
import Button from './Button.vue';

export default {
  title: 'Example/Button',
  component: Button
};

const Template = (args) => ({
  components: { Button },
  setup() {
    return { args };
  },
  template: '<Button v-bind="args" />'
});

export const Primary = Template.bind({});
Primary.args = {
  label: 'Primary Button'
};

9. สรุป

ในบทนี้ คุณได้เรียนรู้เกี่ยวกับเครื่องมือเสริมที่ช่วยในการพัฒนา Vue.js ได้แก่:

  • Vue CLI และ Vite สำหรับการตั้งค่าโปรเจกต์
  • Vue DevTools สำหรับ Debugging
  • ESLint และ Prettier สำหรับการบำรุงรักษาคุณภาพโค้ด
  • Pinia สำหรับการจัดการ State
  • Cypress และ Storybook สำหรับการทดสอบและพัฒนา Component

ในบทถัดไป เราจะศึกษาเกี่ยวกับการปรับแต่งประสบการณ์ผู้ใช้ (UX) ด้วย Transition, Animation และ Loading Indicators!