Skip to content

Commit

Permalink
fix: translate errors in /guide/extras + /guide/typescript (#369)
Browse files Browse the repository at this point in the history
* fix: translate errors in /guide/extras/web-components.md

* fix: translate errors in /guide/typescript
  • Loading branch information
mnenie authored Mar 8, 2024
1 parent 42b39bd commit 8ecc533
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 10 deletions.
16 changes: 8 additions & 8 deletions src/guide/extras/web-components.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ Vue [безупречно получает 100% в тестах Custom Elements
app.config.compilerOptions.isCustomElement = (tag) => tag.includes('-')
```

#### Пример конфигураци Vite {#example-vite-config}
#### Пример конфигурации Vite {#example-vite-config}

```js
// vite.config.js
Expand Down Expand Up @@ -64,7 +64,7 @@ module.exports = {

### Передача свойств DOM {#passing-dom-properties}

Поскольку атрибуты DOM могут быть только строками, то появляется необходимость передавать сложные данные в пользовательские элементы через свойства DOM. При установке входных параметров для пользовательского элемента, Vue 3 автоматически проверяет наличие DOM-свойства с помощью оператора `in` и предпочтёт установить значение как DOM-свойство, если ключ присутствует. Чаще всего об этом и не придётся думать, если пользовательский элемент разработан следуя [рекомендуемым практикам] (https://web.dev/custom-elements-best-practices/).
Поскольку атрибуты DOM могут быть только строками, то появляется необходимость передавать сложные данные в пользовательские элементы через свойства DOM. При установке входных параметров для пользовательского элемента, Vue 3 автоматически проверяет наличие DOM-свойства с помощью оператора `in` и предпочтёт установить значение как DOM-свойство, если ключ присутствует. Чаще всего об этом и не придётся думать, если пользовательский элемент разработан следуя [рекомендуемым практикам](https://web.dev/custom-elements-best-practices/).

Возможны крайние случаи, когда данные должны быть переданы как свойство DOM, но пользовательский элемент не объявляет/отражает свойство должным образом (приводя к неудаче при проверке с помощью `in`). В таких случаях, форсировать привязку `v-bind` для установки свойства DOM можно использованием модификатора `.prop`:

Expand Down Expand Up @@ -128,7 +128,7 @@ document.body.appendChild(

- Все входные параметры для пользовательского элемента, объявленные в опции `props`, будут определены в пользовательском элементе как свойства. Vue автоматически обработает соответствие между атрибутами / свойствами, где это необходимо.

- Атрибуты всегда отражаются в соответствующих свойств
- Атрибуты всегда отражаются в соответствующих свойствах

- Свойства с примитивными значениями (`string`, `boolean` or `number`) отражаются как атрибуты.

Expand All @@ -155,7 +155,7 @@ document.body.appendChild(

#### Слоты {#slots}

Внутри компонента слоты могутуказываться как обычно, с помощью элемента `<slot/>`. Но при получении результирующего элемента должен быть только [нативный синтаксис слотов](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_templates_and_slots):
Внутри компонента слоты могут указываться как обычно, с помощью элемента `<slot/>`. Но при получении результирующего элемента должен быть только [нативный синтаксис слотов](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_templates_and_slots):

- [Слоты с ограниченной областью видимости](/guide/components/slots#scoped-slots) не поддерживаются.

Expand All @@ -177,7 +177,7 @@ document.body.appendChild(

Официальные инструменты для однофайловых компонентов поддерживают их импорт в "режиме пользовательского элемента" (требуется `@vitejs/plugin-vue@^1.4.0` или `vue-loader@^16.5.0`). Однофайловый компонент, загруженный в режиме пользовательского элемента, вставляет свои теги `<style>` как строки CSS и раскрывает их в параметре компонента `styles`. Их использует `defineCustomElement` и при инициализации внедрено в shadow root элемента.

Для переключения в этот режим, требуется завершить имя файла компонента на .ce.vue:
Для переключения в этот режим, требуется завершить имя файла компонента на `.ce.vue`:

```js
import { defineCustomElement } from 'vue'
Expand All @@ -199,7 +199,7 @@ customElements.define('my-example', ExampleElement)

### Советы по созданию библиотеки пользовательских элементов на Vue {#tips-for-a-vue-custom-elements-library}

При создании пользовательских элементов с помощью Vue элементы будут опираться на среду выполнения Vue. В зависимости от количества используемых функций, базовый размер будет составлять ~16 кб. Это означает, что использование Vue не является идеальным, если вы поставляете один пользовательский элемент - возможно, вам лучше использовать ванильный JavaScript, [petite-vue](https://github.com/vuejs/petite-vue) или фреймворки, которые специализируются на неболом размере среды выполнения. Но такой базовый размер более чем оправдан, если поставлять коллекцию пользовательских элементов со сложной логикой, так как Vue позволит создавать каждый компонент с гораздо меньшим количеством кода. Чем больше элементов будет поставляться, тем выгоднее окажется этот компромисс.
При создании пользовательских элементов с помощью Vue элементы будут опираться на среду выполнения Vue. В зависимости от количества используемых функций, базовый размер будет составлять ~16 кб. Это означает, что использование Vue не является идеальным, если вы поставляете один пользовательский элемент - возможно, вам лучше использовать ванильный JavaScript, [petite-vue](https://github.com/vuejs/petite-vue) или фреймворки, которые специализируются на небольшом размере среды выполнения. Но такой базовый размер более чем оправдан, если поставлять коллекцию пользовательских элементов со сложной логикой, так как Vue позволит создавать каждый компонент с гораздо меньшим количеством кода. Чем больше элементов будет поставляться, тем выгоднее окажется этот компромисс.

Если пользовательские элементы будут использоваться в приложении, которое также использует Vue, то можно настроить экстернализацию Vue, чтобы убрать его из итоговой сборки, а элементы стали использовать Vue из основного приложения.

Expand All @@ -222,7 +222,7 @@ export function register() {
}
```

Если компонентов слишком много, можно воспользоваться такими возможностями систем сборки, как [glob import](https://vitejs.dev/guide/features.html#glob-import) в Vite или [`require.context`](https://webpack.js.org/guides/dependency-management/#requirecontext) в webpack для загрузки всех компонентов из определённого каталог
Если компонентов слишком много, можно воспользоваться такими возможностями систем сборки, как [glob import](https://vitejs.dev/guide/features.html#glob-import) в Vite или [`require.context`](https://webpack.js.org/guides/dependency-management/#requirecontext) в webpack для загрузки всех компонентов из определённого каталога

### Веб-компоненты и Typescript {#web-components-and-typescript}

Expand Down Expand Up @@ -269,6 +269,6 @@ declare module 'vue' {

- Нетерпеливая оценка слотов не позволяет компоновать компоненты. [Слоты с ограниченной областью видимости](/guide/components/slots.html#scoped-slots) во Vue - это мощный механизм для композиции компонентов, который не может поддерживаться пользовательскими элементами из-за нетерпеливой природы нативных слотов. Нетерпеливые слоты также означают, что принимающий компонент не может контролировать, когда и нужно ли выводить содержимое слота.

- Доставка пользовательских элементов с shadow DOM и локальным (scoped) CSS сейчас требует встраивания CSS в JavaScript, чтобы их можно было внедрить в shadow root в runtime. Это также приводит к дублированию стилей в разметке в сценариях с SSR. В этой области работают над новыми [возможностями платформы](https://github.com/whatwg/html/pull/4898/)], но на данный момент они ещё не поддерживаются повсеместно, и всё ещё есть проблемы с производительностью в production и SSR, которые требуется решить. В тоже время, однофайловые компоненты Vue предоставляют [механизм локализации CSS](/api/sfc-css-features), который поддерживает извлечение стилей в обычные CSS-файлы.
- Доставка пользовательских элементов с shadow DOM и локальным (scoped) CSS сейчас требует встраивания CSS в JavaScript, чтобы их можно было внедрить в shadow root в runtime. Это также приводит к дублированию стилей в разметке в сценариях с SSR. В этой области работают над новыми [возможностями платформы](https://github.com/whatwg/html/pull/4898/), но на данный момент они ещё не поддерживаются повсеместно, и всё ещё есть проблемы с производительностью в production и SSR, которые требуется решить. В тоже время, однофайловые компоненты Vue предоставляют [механизм локализации CSS](/api/sfc-css-features), который поддерживает извлечение стилей в обычные CSS-файлы.

Vue всегда будет идти в ногу с последними стандартами веб-платформ, и использовать всё, что предоставляет платформа, если это может облегчить работу. Но текущая цель — предоставлять решения, которые работают хорошо и работают уже сегодня. Это значит, что новые возможности платформы следует включать лишь критически поразмыслив — и это подразумевает заполнение пробелов, где стандарты ещё не соответствуют требованиям.
2 changes: 1 addition & 1 deletion src/guide/typescript/composition-api.md
Original file line number Diff line number Diff line change
Expand Up @@ -353,7 +353,7 @@ const foo = inject<string>('foo', 'bar') // тип: string
const foo = inject('foo') as string
```

## Типизация ссылко на шаблоны {#typing-template-refs}
## Типизация ссылок на шаблоны {#typing-template-refs}

Шаблонные ссылки должны создаваться с явным аргументом типа generic и начальным значением `null`:

Expand Down
2 changes: 1 addition & 1 deletion src/guide/typescript/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ Vue написан на TypeScript и обеспечивает первокла

- Если вы настроили псевдонимы распознавателя в инструменте сборки, например псевдоним `@/*`, настроенный по умолчанию в проекте `create-vue`, необходимо также настроить его для TypeScript с помощью [`compilerOptions.paths`](https://www.typescriptlang.org/tsconfig#paths).

- If you intend to use TSX with Vue, set [`compilerOptions.jsx`](https://www.typescriptlang.org/tsconfig#jsx) to `"preserve"`, and set [`compilerOptions.jsxImportSource`](https://www.typescriptlang.org/tsconfig#jsxImportSource) to `"vue"`.
- Если вы собираетесь использовать TSX с Vue, установите [`CompilerOptions.jsx`](https://www.typescriptlang.org/tsconfig#jsx) в `"preserve"` и установите [`CompilerOptions.jsxImportSource`](https://www.typescriptlang.org/tsconfig#jsxImportSource ) в `"vue"`.

См. также:

Expand Down

0 comments on commit 8ecc533

Please sign in to comment.