- vừa được xem lúc

[Vue3] Tích hợp Vue I18n đơn giản, siêu nhẹ cho các dự án Vue3

0 0 42

Người đăng: Phạm Minh Phúc

Theo Viblo Asia

Tại sao mình quyết định viết một plugin i18n cho dự án mới?

TL;DR

  • Lightweight
  • Chỉ có các feature thật sự cần thiết.

Lightweight

Mọi sự so sánh đều là khập khiễng, mình sẽ không nói đến khía cạnh package nào nhẹ hơn. Mà muốn tập trung vào nhu cầu sử dụng của mỗi dự án. Bài toán của bọn mình gặp phải là làm sao phải tối ưu được bundle size nhẹ nhất có thể. Vì thế bọn mình quyết định sẽ chỉ giữ lại những feature chính phù hợp với nhu cầu. Các feature không cần thiết sẽ bị bỏ đi

Vue I18n Next

Source: https://bundlephobia.com/[email protected]

Vue I18n Lite

Source: https://bundlephobia.com/[email protected]

Cài đặt

Dùng package

yarn add vue-i18n-lite

Dùng CDN

<script src="https://unpkg.com/vue-i18n-lite"></script>

Sử dụng

Sử dụng như một plugin của Vue

import { createApp } from 'vue';
import { createI18n } from 'vue-i18n-lite';
import App from './App.vue'; const i18n = createI18n({ locale: 'en', messages: { 'en': { home: 'Home' } }
}) const app = createApp(App);
app.use(i18n); 

Sử dụng Composition API

import { useI18n } from 'vue-i18n-lite'; export default { setup() { const i18n = useI18n() i18n.createI18n({ locale: 'en', messages: { 'en': { home: 'Home' } } }) const { current, changeLocale } = i18n return { current, changeLocale } }
}

API


import { App } from 'vue';
import { DeepReadonly } from '@vue/reactivity';
import { Ref } from 'vue';
import { UnwrapNestedRefs } from '@vue/reactivity'; // @public
export function createI18n(options?: I18nOptions): I18n; // @public
export type I18n = { current: DeepReadonly<UnwrapNestedRefs<Ref<string>>>; options: DeepReadonly<UnwrapNestedRefs<I18nOptions>>; setLocaleMessage(locale: I18nLocale, messages: I18nLocaleMessages): void; getLocaleMessage(locale: I18nLocale): I18nLocaleMessages; changeLocale(locale: I18nLocale): void; install(app: App): void; t(key: string, values?: I18nValues): string; t(key: string, locale?: I18nLocale): string;
}; // @public
export type I18nLocale = string; // @public
export type I18nLocaleMessage = string; // @public
export type I18nLocaleMessageObject = { [k: string]: I18nLocaleMessageObject | I18nLocaleMessage;
}; // @public
export type I18nLocaleMessages = { [k: string]: I18nLocaleMessageObject | I18nLocaleMessage;
}; // @public
export type I18nLocales = { [k: string]: I18nLocaleMessages;
}; // @public
export type I18nOptions = { locale?: string; messages?: I18nLocales;
}; // @public
export type I18nValue = number | string; // @public
export type I18nValueObject = { [k: string]: I18nValue;
}; // @public
export type I18nValues = I18nValue[] | I18nValueObject; // @public
export function useI18n(): I18n; 

Kết luận

  • Tùy thuộc vào dự án của bạn cần những features gì và yêu cầu cụ thể để quyết định.
  • Việc tạo ra một package mới và phải maintain sẽ có những rủi ro nhất định vì có thể sẽ có lỗi tiềm ẩn. Thay vì sử dụng một package đã ổn định và có cộng đồng lớn.

Cám ơn anh em đã đọc bài viết của mình. Lần đầu tham gia viết bài mong nhận được ý kiến đóng góp của mọi người.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Ví dụ CRUD với Laravel và Vuejs.

1. Cài đặt Laravel. composer create-project --prefer-dist laravel/laravel vuelaravelcrud. .

0 0 160

- vừa được xem lúc

Bài 1: Cài đặt Vue và chạy chương trình Hello world đầu tiên

Ở bài đầu tiên này mình sẽ hướng dẫn các bài cài đặt VueJS vào project Laravel, sau đó chúng ta sẽ cùng xem những thứ cơ bản của Vue nhé. Vì Laravel đã hỗ trợ tích hợp VueJS nên việc cài đặt của chúng ta sẽ hết sức đơn giản.

0 0 136

- vừa được xem lúc

Lazy loading and code splitting in Vue.js

Việc giữ cho ứng dụng của bạn tải nhanh ngày càng khó hơn. Trong loạt bài này, tôi sẽ đi sâu vào các kỹ thuật tối ưu hiệu suất Vue và bạn có thể sử dụng trong các ứng dụng Vue.

0 0 114

- vừa được xem lúc

Validating Vue.js Forms Using Vuelidate

Introduction. Validate thông tin đầu vào trên các ứng dụng web là rất quan trọng.

0 0 216

- vừa được xem lúc

5 Good Practices mình đang sử dụng trong Vuejs

Mở đầu. Mình đã sử dụng vuejs được cũng được 1 năm trở lại đây.

0 0 100

- vừa được xem lúc

[P5] VueJS - Một vài Interpolations khác trong Vue

Ở bài viết trước, mình đã nói về một vài keyword trong Vue như v-if, v-else, v-show, v-for, ... Chúng thực chất là các syntax đặc biệt của Vue để thao tác linh hoạt với các DOM ảo, được gọi là Interpolations. Ngoài ra, Vue còn các Interpolations khác. Mục đích của nó thì đã quá rõ ràng, hiển thị tex

0 0 60