@dxtmisha/wiki 0.56.0 → 0.57.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{defineProperty-149Ahniv.js → defineProperty-3CuEayIP.js} +4 -4
- package/dist/library.js +1 -1
- package/dist/storybook.js +1 -1
- package/package.json +1 -1
- package/src/media/functional/nitro-basic/about/about.en.mdx +52 -0
- package/src/media/functional/nitro-basic/about/about.ru.mdx +52 -0
- package/src/media/functional/nitro-basic/about/about.vi.mdx +52 -0
- package/src/media/functional/nitro-basic/composables/useHeaders/useHeaders.en.mdx +29 -0
- package/src/media/functional/nitro-basic/composables/useHeaders/useHeaders.ru.mdx +29 -0
- package/src/media/functional/nitro-basic/composables/useHeaders/useHeaders.vi.mdx +29 -0
- package/src/media/functional/nitro-basic/functions/getRequestOrigin/getRequestOrigin.en.mdx +24 -0
- package/src/media/functional/nitro-basic/functions/getRequestOrigin/getRequestOrigin.ru.mdx +24 -0
- package/src/media/functional/nitro-basic/functions/getRequestOrigin/getRequestOrigin.vi.mdx +24 -0
- package/src/media/functional/nitro-basic/functions/getRequestUrl/getRequestUrl.en.mdx +24 -0
- package/src/media/functional/nitro-basic/functions/getRequestUrl/getRequestUrl.ru.mdx +24 -0
- package/src/media/functional/nitro-basic/functions/getRequestUrl/getRequestUrl.vi.mdx +24 -0
- package/src/media/functional/nitro-basic/functions/initApi/initApi.en.mdx +23 -0
- package/src/media/functional/nitro-basic/functions/initApi/initApi.ru.mdx +23 -0
- package/src/media/functional/nitro-basic/functions/initApi/initApi.vi.mdx +23 -0
- package/src/media/functional/nitro-basic/functions/initClientRouter/initClientRouter.en.mdx +21 -0
- package/src/media/functional/nitro-basic/functions/initClientRouter/initClientRouter.ru.mdx +21 -0
- package/src/media/functional/nitro-basic/functions/initClientRouter/initClientRouter.vi.mdx +21 -0
- package/src/media/functional/nitro-basic/functions/initCookieStorage/initCookieStorage.en.mdx +18 -0
- package/src/media/functional/nitro-basic/functions/initCookieStorage/initCookieStorage.ru.mdx +18 -0
- package/src/media/functional/nitro-basic/functions/initCookieStorage/initCookieStorage.vi.mdx +18 -0
- package/src/media/functional/nitro-basic/functions/initHeaders/initHeaders.en.mdx +16 -0
- package/src/media/functional/nitro-basic/functions/initHeaders/initHeaders.ru.mdx +16 -0
- package/src/media/functional/nitro-basic/functions/initHeaders/initHeaders.vi.mdx +16 -0
- package/src/media/functional/nitro-basic/functions/initPluginApiCache/initPluginApiCache.en.mdx +17 -0
- package/src/media/functional/nitro-basic/functions/initPluginApiCache/initPluginApiCache.ru.mdx +17 -0
- package/src/media/functional/nitro-basic/functions/initPluginApiCache/initPluginApiCache.vi.mdx +17 -0
- package/src/media/functional/nitro-basic/functions/initPluginBasic/initPluginBasic.en.mdx +34 -0
- package/src/media/functional/nitro-basic/functions/initPluginBasic/initPluginBasic.ru.mdx +34 -0
- package/src/media/functional/nitro-basic/functions/initPluginBasic/initPluginBasic.vi.mdx +34 -0
- package/src/media/functional/nitro-basic/functions/initScriptsJson/initScriptsJson.en.mdx +17 -0
- package/src/media/functional/nitro-basic/functions/initScriptsJson/initScriptsJson.ru.mdx +17 -0
- package/src/media/functional/nitro-basic/functions/initScriptsJson/initScriptsJson.vi.mdx +17 -0
- package/src/media/functional/nitro-basic/functions/initServerRouter/initServerRouter.en.mdx +20 -0
- package/src/media/functional/nitro-basic/functions/initServerRouter/initServerRouter.ru.mdx +20 -0
- package/src/media/functional/nitro-basic/functions/initServerRouter/initServerRouter.vi.mdx +20 -0
- package/src/media/functional/nitro-basic/functions/initServerStorage/initServerStorage.en.mdx +16 -0
- package/src/media/functional/nitro-basic/functions/initServerStorage/initServerStorage.ru.mdx +16 -0
- package/src/media/functional/nitro-basic/functions/initServerStorage/initServerStorage.vi.mdx +16 -0
- package/src/media/functional/nitro-basic/functions/initSsrApp/initSsrApp.en.mdx +20 -0
- package/src/media/functional/nitro-basic/functions/initSsrApp/initSsrApp.ru.mdx +20 -0
- package/src/media/functional/nitro-basic/functions/initSsrApp/initSsrApp.vi.mdx +20 -0
- package/src/media/functional/nitro-basic/functions/uiBootstrapClient/uiBootstrapClient.en.mdx +14 -0
- package/src/media/functional/nitro-basic/functions/uiBootstrapClient/uiBootstrapClient.ru.mdx +14 -0
- package/src/media/functional/nitro-basic/functions/uiBootstrapClient/uiBootstrapClient.vi.mdx +14 -0
- package/src/media/functional/nitro-basic/functions/uiBootstrapServer/uiBootstrapServer.en.mdx +19 -0
- package/src/media/functional/nitro-basic/functions/uiBootstrapServer/uiBootstrapServer.ru.mdx +19 -0
- package/src/media/functional/nitro-basic/functions/uiBootstrapServer/uiBootstrapServer.vi.mdx +19 -0
- package/src/media/functional/nitro-basic/functions/uiCookieStorage/uiCookieStorage.en.mdx +13 -0
- package/src/media/functional/nitro-basic/functions/uiCookieStorage/uiCookieStorage.ru.mdx +13 -0
- package/src/media/functional/nitro-basic/functions/uiCookieStorage/uiCookieStorage.vi.mdx +13 -0
- package/src/media/functional/nitro-basic/functions/uiCreateApp/uiCreateApp.en.mdx +43 -0
- package/src/media/functional/nitro-basic/functions/uiCreateApp/uiCreateApp.ru.mdx +43 -0
- package/src/media/functional/nitro-basic/functions/uiCreateApp/uiCreateApp.vi.mdx +43 -0
- package/src/media/functional/nitro-basic/functions/uiCreateClientApp/uiCreateClientApp.en.mdx +31 -0
- package/src/media/functional/nitro-basic/functions/uiCreateClientApp/uiCreateClientApp.ru.mdx +31 -0
- package/src/media/functional/nitro-basic/functions/uiCreateClientApp/uiCreateClientApp.vi.mdx +31 -0
- package/src/media/functional/nitro-basic/functions/uiCreateServerApp/uiCreateServerApp.en.mdx +34 -0
- package/src/media/functional/nitro-basic/functions/uiCreateServerApp/uiCreateServerApp.ru.mdx +34 -0
- package/src/media/functional/nitro-basic/functions/uiCreateServerApp/uiCreateServerApp.vi.mdx +34 -0
- package/src/media/functional/nitro-basic/functions/uiCreateSsrRouter/uiCreateSsrRouter.en.mdx +17 -0
- package/src/media/functional/nitro-basic/functions/uiCreateSsrRouter/uiCreateSsrRouter.ru.mdx +17 -0
- package/src/media/functional/nitro-basic/functions/uiCreateSsrRouter/uiCreateSsrRouter.vi.mdx +17 -0
- package/src/media/functional/nitro-basic/functions/uiId/uiId.en.mdx +13 -0
- package/src/media/functional/nitro-basic/functions/uiId/uiId.ru.mdx +13 -0
- package/src/media/functional/nitro-basic/functions/uiId/uiId.vi.mdx +13 -0
- package/src/media/functional/nitro-basic/functions/uiServerStorage/uiServerStorage.en.mdx +13 -0
- package/src/media/functional/nitro-basic/functions/uiServerStorage/uiServerStorage.ru.mdx +13 -0
- package/src/media/functional/nitro-basic/functions/uiServerStorage/uiServerStorage.vi.mdx +13 -0
- package/src/media/functional/nitro-basic/setup/setup.en.mdx +133 -0
- package/src/media/functional/nitro-basic/setup/setup.ru.mdx +133 -0
- package/src/media/functional/nitro-basic/setup/setup.vi.mdx +133 -0
- package/src/media/functional/nitro-basic/functions/getInject.en.mdx +0 -27
- package/src/media/functional/nitro-basic/functions/getInject.ru.mdx +0 -27
- package/src/media/functional/nitro-basic/functions/getInject.vi.mdx +0 -20
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import {Meta} from '@storybook/addon-docs/blocks'
|
|
2
|
+
|
|
3
|
+
<Meta title='@dxtmisha/ru/nitro-basic/# Подготовка проекта'/>
|
|
4
|
+
|
|
5
|
+
# Подготовка проекта
|
|
6
|
+
|
|
7
|
+
Библиотека `@dxtmisha/nitro-basic` спроектирована для работы в связке с Nitro и Vue 3. Она обеспечивает плавный переход между серверным и клиентским рендерингом. Ниже приведено пошаговое руководство по интеграции библиотеки в ваш проект.
|
|
8
|
+
|
|
9
|
+
## 1. Установка зависимостей
|
|
10
|
+
|
|
11
|
+
Установите необходимые пакеты. Помимо самой библиотеки, вам потребуются Vue 3 и Vue Router:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npm install @dxtmisha/nitro-basic vue vue-router
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## 2. Инициализация плагина Nitro
|
|
18
|
+
|
|
19
|
+
Для базовой настройки серверной среды (например, кэширования API) необходимо зарегистрировать плагин Nitro.
|
|
20
|
+
|
|
21
|
+
Создайте файл `server/plugins/ui.ts`:
|
|
22
|
+
|
|
23
|
+
```typescript
|
|
24
|
+
import { definePlugin } from 'nitro'
|
|
25
|
+
import { initPluginBasic } from '@dxtmisha/nitro-basic/plugin'
|
|
26
|
+
|
|
27
|
+
export default definePlugin((nitroApp) => {
|
|
28
|
+
initPluginBasic(nitroApp)
|
|
29
|
+
})
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## 3. Создание фабрики приложения (main.ts)
|
|
33
|
+
|
|
34
|
+
Создайте общий файл для инициализации Vue-приложения, который будет использоваться и на сервере, и на клиенте.
|
|
35
|
+
|
|
36
|
+
```typescript
|
|
37
|
+
// src/main.ts
|
|
38
|
+
import { uiCreateApp } from '@dxtmisha/nitro-basic'
|
|
39
|
+
import App from './App.vue'
|
|
40
|
+
import { routes } from './router'
|
|
41
|
+
|
|
42
|
+
export function createApp() {
|
|
43
|
+
return uiCreateApp(App, {
|
|
44
|
+
appRouter: {
|
|
45
|
+
routes
|
|
46
|
+
}
|
|
47
|
+
})
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## 4. Настройка клиентской точки входа
|
|
52
|
+
|
|
53
|
+
На клиенте необходимо подготовить генератор идентификаторов и примонтировать приложение.
|
|
54
|
+
|
|
55
|
+
```typescript
|
|
56
|
+
// src/entry-client.ts
|
|
57
|
+
import { uiBootstrapClient, uiCreateClientApp } from '@dxtmisha/nitro-basic'
|
|
58
|
+
import { createApp } from './main'
|
|
59
|
+
|
|
60
|
+
const { app, router, options } = createApp()
|
|
61
|
+
|
|
62
|
+
// Инициализация ID для гидратации
|
|
63
|
+
uiBootstrapClient()
|
|
64
|
+
|
|
65
|
+
// Монтирование приложения
|
|
66
|
+
uiCreateClientApp(app, '#app', router, options)
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## 5. Настройка серверной точки входа
|
|
70
|
+
|
|
71
|
+
Серверная точка входа отвечает за инициализацию хранилищ, заголовков и рендеринг HTML.
|
|
72
|
+
|
|
73
|
+
```typescript
|
|
74
|
+
// src/entry-server.ts
|
|
75
|
+
import { uiBootstrapServer, uiCreateServerApp } from '@dxtmisha/nitro-basic'
|
|
76
|
+
import { createApp } from './main'
|
|
77
|
+
import template from './templates/main.html?raw' // HTML шаблон
|
|
78
|
+
|
|
79
|
+
// Глобальная инициализация сервера
|
|
80
|
+
uiBootstrapServer()
|
|
81
|
+
|
|
82
|
+
export default {
|
|
83
|
+
async fetch(request: Request) {
|
|
84
|
+
const { app, router, options } = createApp()
|
|
85
|
+
|
|
86
|
+
const { headers, body } = await uiCreateServerApp(
|
|
87
|
+
app,
|
|
88
|
+
request,
|
|
89
|
+
router,
|
|
90
|
+
options,
|
|
91
|
+
undefined,
|
|
92
|
+
undefined,
|
|
93
|
+
template
|
|
94
|
+
)
|
|
95
|
+
|
|
96
|
+
return new Response(body, { headers })
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## 6. HTML Шаблон
|
|
102
|
+
|
|
103
|
+
Для корректной работы SSR библиотека использует систему плейсхолдеров в HTML-шаблоне. Функция `uiCreateServerApp` автоматически заменяет их актуальными данными.
|
|
104
|
+
|
|
105
|
+
**Доступные метки:**
|
|
106
|
+
- `<!--ssr-lang-->` — языковой код пользователя (например, `ru`). Используется в `<html lang="...">`.
|
|
107
|
+
- `<!--ssr-title-->` — заголовок страницы из `MetaStatic`. Подставляется в `<title>`.
|
|
108
|
+
- `<!--ssr-meta-->` — блок мета-тегов (OG, Twitter и др.) из `MetaStatic`.
|
|
109
|
+
- `<!--ssr-outlet-->` — отрендеренный HTML вашего приложения. Обычно внутри `<div id="app">`.
|
|
110
|
+
- `<!--ssr-teleports-->` — содержимое Vue Teleports.
|
|
111
|
+
- `<!--ssr-scriptsJson-->` — **Критически важная метка**. Содержит JSON с данными для гидратации (`ServerStorage`, кэш API). Должна быть размещена перед закрывающим `</body>`.
|
|
112
|
+
|
|
113
|
+
Пример `main.html`:
|
|
114
|
+
```html
|
|
115
|
+
<!DOCTYPE html>
|
|
116
|
+
<html lang="<!--ssr-lang-->">
|
|
117
|
+
<head>
|
|
118
|
+
<meta charset="UTF-8">
|
|
119
|
+
<!--ssr-meta-->
|
|
120
|
+
<title><!--ssr-title--></title>
|
|
121
|
+
</head>
|
|
122
|
+
<body>
|
|
123
|
+
<div id="app"><!--ssr-outlet--></div>
|
|
124
|
+
|
|
125
|
+
<!--ssr-teleports-->
|
|
126
|
+
<!--ssr-scriptsJson-->
|
|
127
|
+
|
|
128
|
+
<script type="module" src="/src/entry-client.ts"></script>
|
|
129
|
+
</body>
|
|
130
|
+
</html>
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
> Без метки `<!--ssr-scriptsJson-->` данные, полученные на сервере, не будут переданы на клиент, что приведет к ошибкам гидратации и повторным запросам к API.
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import {Meta} from '@storybook/addon-docs/blocks'
|
|
2
|
+
|
|
3
|
+
<Meta title='@dxtmisha/vi/nitro-basic/# Chuẩn bị dự án'/>
|
|
4
|
+
|
|
5
|
+
# Chuẩn bị dự án
|
|
6
|
+
|
|
7
|
+
Thư viện `@dxtmisha/nitro-basic` được thiết kế để hoạt động kết hợp với Nitro và Vue 3. Nó đảm bảo sự chuyển đổi mượt mà giữa quá trình render phía server và phía client. Dưới đây là hướng dẫn từng bước để tích hợp thư viện vào dự án của bạn.
|
|
8
|
+
|
|
9
|
+
## 1. Cài đặt các phần phụ thuộc
|
|
10
|
+
|
|
11
|
+
Cài đặt các gói cần thiết. Ngoài bản thân thư viện, bạn sẽ cần Vue 3 và Vue Router:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npm install @dxtmisha/nitro-basic vue vue-router
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## 2. Khởi tạo Plugin Nitro
|
|
18
|
+
|
|
19
|
+
Để thiết lập môi trường server cơ bản (ví dụ: lưu đệm API), bạn cần đăng ký một plugin Nitro.
|
|
20
|
+
|
|
21
|
+
Tạo tệp `server/plugins/ui.ts`:
|
|
22
|
+
|
|
23
|
+
```typescript
|
|
24
|
+
import { definePlugin } from 'nitro'
|
|
25
|
+
import { initPluginBasic } from '@dxtmisha/nitro-basic/plugin'
|
|
26
|
+
|
|
27
|
+
export default definePlugin((nitroApp) => {
|
|
28
|
+
initPluginBasic(nitroApp)
|
|
29
|
+
})
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## 3. Tạo Factory ứng dụng (main.ts)
|
|
33
|
+
|
|
34
|
+
Tạo một tệp dùng chung để khởi tạo ứng dụng Vue sẽ được sử dụng trên cả server và client.
|
|
35
|
+
|
|
36
|
+
```typescript
|
|
37
|
+
// src/main.ts
|
|
38
|
+
import { uiCreateApp } from '@dxtmisha/nitro-basic'
|
|
39
|
+
import App from './App.vue'
|
|
40
|
+
import { routes } from './router'
|
|
41
|
+
|
|
42
|
+
export function createApp() {
|
|
43
|
+
return uiCreateApp(App, {
|
|
44
|
+
appRouter: {
|
|
45
|
+
routes
|
|
46
|
+
}
|
|
47
|
+
})
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## 4. Cấu hình điểm đầu vào Client
|
|
52
|
+
|
|
53
|
+
Trên client, bạn cần chuẩn bị trình tạo định danh và mount ứng dụng.
|
|
54
|
+
|
|
55
|
+
```typescript
|
|
56
|
+
// src/entry-client.ts
|
|
57
|
+
import { uiBootstrapClient, uiCreateClientApp } from '@dxtmisha/nitro-basic'
|
|
58
|
+
import { createApp } from './main'
|
|
59
|
+
|
|
60
|
+
const { app, router, options } = createApp()
|
|
61
|
+
|
|
62
|
+
// Khởi tạo ID để hydrat hóa
|
|
63
|
+
uiBootstrapClient()
|
|
64
|
+
|
|
65
|
+
// Mount ứng dụng
|
|
66
|
+
uiCreateClientApp(app, '#app', router, options)
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## 5. Cấu hình điểm đầu vào Server
|
|
70
|
+
|
|
71
|
+
Điểm đầu vào server chịu trách nhiệm khởi tạo bộ lưu trữ, header và render HTML.
|
|
72
|
+
|
|
73
|
+
```typescript
|
|
74
|
+
// src/entry-server.ts
|
|
75
|
+
import { uiBootstrapServer, uiCreateServerApp } from '@dxtmisha/nitro-basic'
|
|
76
|
+
import { createApp } from './main'
|
|
77
|
+
import template from './templates/main.html?raw' // HTML template
|
|
78
|
+
|
|
79
|
+
// Khởi tạo server toàn cục
|
|
80
|
+
uiBootstrapServer()
|
|
81
|
+
|
|
82
|
+
export default {
|
|
83
|
+
async fetch(request: Request) {
|
|
84
|
+
const { app, router, options } = createApp()
|
|
85
|
+
|
|
86
|
+
const { headers, body } = await uiCreateServerApp(
|
|
87
|
+
app,
|
|
88
|
+
request,
|
|
89
|
+
router,
|
|
90
|
+
options,
|
|
91
|
+
undefined,
|
|
92
|
+
undefined,
|
|
93
|
+
template
|
|
94
|
+
)
|
|
95
|
+
|
|
96
|
+
return new Response(body, { headers })
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## 6. Template HTML
|
|
102
|
+
|
|
103
|
+
Để SSR hoạt động chính xác, thư viện sử dụng một hệ thống nhãn (placeholder) trong template HTML. Hàm `uiCreateServerApp` sẽ tự động thay thế chúng bằng dữ liệu thực tế.
|
|
104
|
+
|
|
105
|
+
**Các nhãn khả dụng:**
|
|
106
|
+
- `<!--ssr-lang-->` — mã ngôn ngữ của người dùng (ví dụ: `vi`). Được sử dụng trong `<html lang="...">`.
|
|
107
|
+
- `<!--ssr-title-->` — tiêu đề trang từ `MetaStatic`. Được chèn vào `<title>`.
|
|
108
|
+
- `<!--ssr-meta-->` — khối các thẻ meta (OG, Twitter, v.v.) từ `MetaStatic`.
|
|
109
|
+
- `<!--ssr-outlet-->` — chuỗi HTML đã được render của ứng dụng. Thường nằm bên trong `<div id="app">`.
|
|
110
|
+
- `<!--ssr-teleports-->` — nội dung từ Vue Teleports.
|
|
111
|
+
- `<!--ssr-scriptsJson-->` — **Nhãn cực kỳ quan trọng**. Chứa JSON với dữ liệu hydrat hóa (`ServerStorage`, bộ nhớ đệm API). Phải được đặt trước thẻ đóng `</body>`.
|
|
112
|
+
|
|
113
|
+
Ví dụ `main.html`:
|
|
114
|
+
```html
|
|
115
|
+
<!DOCTYPE html>
|
|
116
|
+
<html lang="<!--ssr-lang-->">
|
|
117
|
+
<head>
|
|
118
|
+
<meta charset="UTF-8">
|
|
119
|
+
<!--ssr-meta-->
|
|
120
|
+
<title><!--ssr-title--></title>
|
|
121
|
+
</head>
|
|
122
|
+
<body>
|
|
123
|
+
<div id="app"><!--ssr-outlet--></div>
|
|
124
|
+
|
|
125
|
+
<!--ssr-teleports-->
|
|
126
|
+
<!--ssr-scriptsJson-->
|
|
127
|
+
|
|
128
|
+
<script type="module" src="/src/entry-client.ts"></script>
|
|
129
|
+
</body>
|
|
130
|
+
</html>
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
> Nếu không có nhãn `<!--ssr-scriptsJson-->`, dữ liệu nhận được trên server sẽ không được chuyển sang client, dẫn đến lỗi hydrat hóa và các yêu cầu API bị lặp lại.
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { Meta } from '@storybook/addon-docs/blocks'
|
|
2
|
-
|
|
3
|
-
<Meta title='@dxtmisha/en/nitro-basic/Functions/getInject - Get Injected Value'/>
|
|
4
|
-
|
|
5
|
-
# `getInject`
|
|
6
|
-
|
|
7
|
-
A utility function that safely reads an injected value by name from the current Vue component instance. If there is no active component instance or the value is not provided, it returns `undefined`.
|
|
8
|
-
|
|
9
|
-
**Parameters:**
|
|
10
|
-
- `name: string` — The injection key name.
|
|
11
|
-
|
|
12
|
-
**Returns:**
|
|
13
|
-
`T | undefined` — The injected value if it exists, otherwise `undefined`.
|
|
14
|
-
|
|
15
|
-
```typescript
|
|
16
|
-
import { provide } from 'vue'
|
|
17
|
-
import { getInject } from '@dxtmisha/nitro-basic'
|
|
18
|
-
|
|
19
|
-
provide('theme', 'dark')
|
|
20
|
-
|
|
21
|
-
// Returns 'dark'
|
|
22
|
-
const theme = getInject<string>('theme')
|
|
23
|
-
|
|
24
|
-
// Returns undefined when the key is missing
|
|
25
|
-
const language = getInject<string>('language')
|
|
26
|
-
```
|
|
27
|
-
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { Meta } from '@storybook/addon-docs/blocks'
|
|
2
|
-
|
|
3
|
-
<Meta title='@dxtmisha/ru/nitro-basic/Functions/getInject - Получение внедренного значения'/>
|
|
4
|
-
|
|
5
|
-
# `getInject`
|
|
6
|
-
|
|
7
|
-
Утилитарная функция, которая безопасно получает внедренное значение по имени из текущего экземпляра Vue-компонента. Если активного экземпляра компонента нет или значение не было предоставлено, функция возвращает `undefined`.
|
|
8
|
-
|
|
9
|
-
**Параметры:**
|
|
10
|
-
- `name: string` — Имя ключа внедрения.
|
|
11
|
-
|
|
12
|
-
**Возвращает:**
|
|
13
|
-
`T | undefined` — Внедренное значение, если оно существует, иначе `undefined`.
|
|
14
|
-
|
|
15
|
-
```typescript
|
|
16
|
-
import { provide } from 'vue'
|
|
17
|
-
import { getInject } from '@dxtmisha/nitro-basic'
|
|
18
|
-
|
|
19
|
-
provide('theme', 'dark')
|
|
20
|
-
|
|
21
|
-
// Возвращает 'dark'
|
|
22
|
-
const theme = getInject<string>('theme')
|
|
23
|
-
|
|
24
|
-
// Возвращает undefined, если ключ отсутствует
|
|
25
|
-
const language = getInject<string>('language')
|
|
26
|
-
```
|
|
27
|
-
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { Meta } from '@storybook/addon-docs/blocks'
|
|
2
|
-
|
|
3
|
-
<Meta title='@dxtmisha/vi/nitro-basic/Functions/getInject - Lấy giá trị được inject'/>
|
|
4
|
-
|
|
5
|
-
# `getInject`
|
|
6
|
-
|
|
7
|
-
Một hàm tiện ích dùng để lấy an toàn giá trị được inject theo tên từ instance Vue hiện tại. Nếu không có instance component đang hoạt động hoặc giá trị chưa được cung cấp, hàm sẽ trả về `undefined`.
|
|
8
|
-
|
|
9
|
-
**Tham số:**
|
|
10
|
-
- `name: string` — Tên của khóa inject.
|
|
11
|
-
|
|
12
|
-
**Trả về:**
|
|
13
|
-
`T | undefined` — Giá trị được inject nếu tồn tại, ngược lại trả về `undefined`.
|
|
14
|
-
|
|
15
|
-
**Ví dụ sử dụng:**
|
|
16
|
-
- Gọi `getInject<string>('theme')` trong `setup()` để lấy giá trị đã được `provide`.
|
|
17
|
-
- Nếu key không tồn tại hoặc không có component instance hiện tại, kết quả sẽ là `undefined`.
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|