From 9aba6702699e60b4e9769608c1865aa4f47d2a4e Mon Sep 17 00:00:00 2001 From: Alex Sokolov <4497128+Alex-Sokolov@users.noreply.github.com> Date: Thu, 24 May 2018 11:43:01 +0300 Subject: [PATCH 01/11] [RU] Translation moved to VuePress --- docs/.vuepress/config.js | 42 +++++ docs/ru/README.md | 41 +++++ docs/ru/guide/README.md | 75 +++++++++ docs/ru/guide/asset-url.md | 60 +++++++ docs/ru/guide/css-modules.md | 154 ++++++++++++++++++ docs/ru/guide/custom-blocks.md | 96 ++++++++++++ docs/ru/guide/extract-css.md | 75 +++++++++ docs/ru/guide/functional.md | 21 +++ docs/ru/guide/hot-reload.md | 45 ++++++ docs/ru/guide/linting.md | 45 ++++++ docs/ru/guide/pre-processors.md | 264 +++++++++++++++++++++++++++++++ docs/ru/guide/scoped-css.md | 75 +++++++++ docs/ru/guide/testing.md | 5 + docs/ru/migrating.md | 266 ++++++++++++++++++++++++++++++++ docs/ru/options.md | 83 ++++++++++ docs/ru/spec.md | 127 +++++++++++++++ 16 files changed, 1474 insertions(+) create mode 100644 docs/ru/README.md create mode 100644 docs/ru/guide/README.md create mode 100644 docs/ru/guide/asset-url.md create mode 100644 docs/ru/guide/css-modules.md create mode 100644 docs/ru/guide/custom-blocks.md create mode 100644 docs/ru/guide/extract-css.md create mode 100644 docs/ru/guide/functional.md create mode 100644 docs/ru/guide/hot-reload.md create mode 100644 docs/ru/guide/linting.md create mode 100644 docs/ru/guide/pre-processors.md create mode 100644 docs/ru/guide/scoped-css.md create mode 100644 docs/ru/guide/testing.md create mode 100644 docs/ru/migrating.md create mode 100644 docs/ru/options.md create mode 100644 docs/ru/spec.md diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js index ec153295c..f5b6b110f 100644 --- a/docs/.vuepress/config.js +++ b/docs/.vuepress/config.js @@ -9,6 +9,11 @@ module.exports = { lang: 'zh-CN', title: 'Vue Loader', description: '处理 Vue 单文件组件的 Webpack loader' + }, + '/ru/': { + lang: 'ru', + title: 'Vue Loader', + description: 'Webpack loader для однофайловых компонентов Vue' } }, serviceWorker: true, @@ -90,6 +95,43 @@ module.exports = { '/zh/guide/linting', '/zh/guide/testing' ] + }, + '/ru/': { + label: 'Русский', + selectText: 'Languages', + editLinkText: 'Изменить эту страницу на GitHub', + nav: [ + { + text: 'Руководство', + link: '/ru/guide/' + }, + { + text: 'Однофайловые компоненты', + link: '/ru/spec.html' + }, + { + text: 'Настройки', + link: '/ru/options.html' + }, + { + text: 'Миграция с версии v14', + link: '/ru/migrating.md' + } + ], + sidebar: [ + '/ru/', + '/ru/guide/', + '/ru/guide/asset-url', + '/ru/guide/pre-processors', + '/ru/guide/scoped-css', + '/ru/guide/css-modules', + '/ru/guide/hot-reload', + '/ru/guide/functional', + '/ru/guide/custom-blocks', + '/ru/guide/extract-css', + '/ru/guide/linting', + '/ru/guide/testing' + ] } } } diff --git a/docs/ru/README.md b/docs/ru/README.md new file mode 100644 index 000000000..548a12ef4 --- /dev/null +++ b/docs/ru/README.md @@ -0,0 +1,41 @@ +# Введение + +:::tip ПРИМЕЧАНИЕ К ВЕРСИИ +Это документация для Vue Loader v15 и выше. Если вы обновляетесь с v14 или более ранних версий, обратитесь к [руководству по миграции](./migrating.md). Если вы используете старую версию, то документация к ней [здесь](https://vue-loader-v14.vuejs.org). +::: + +## Что такое Vue Loader? + +`vue-loader` — это загрузчик для [webpack](https://webpack.js.org/), который позволяет вам использовать компоненты Vue в формате, именуемым [однофайловыми компонентами](./spec.md): + +``` vue + + + + + +``` + +Использование `vue-loader` предоставляет множество интересных возможностей: + +- Позволяет использовать разнообразные загрузчики webpack для разных секций компонента Vue, например Sass для ` +``` + +Атрибут `module` подскажет Vue Loader о необходимости внедрить CSS модуль в компонент в качестве вычисляемого свойства с именем `$style`. Вы можете использовать его в шаблонах для динамического добавления классов: + +``` vue + +``` + +Поскольку это вычисляемое свойство, оно будет работать с объектом/массивом в `:class`: + +``` vue + +``` + +Вы также можете получить доступ в JavaScript: + +``` vue + +``` + +Обратитесь к [спецификации CSS-модулей](https://github.com/css-modules/css-modules) для получения информации о [глобальных исключениях](https://github.com/css-modules/css-modules#exceptions) и [композиции](https://github.com/css-modules/css-modules#composition). + +## Опциональное использование + +Если вы хотите использовать CSS модули только в некоторых компонентах Vue, вы можете использовать правило `oneOf` и проверять наличие строки `module` внутри `resourceQuery`: + +``` js +// webpack.config.js -> module.rules +{ + test: /\.css$/, + oneOf: [ + // это соответствует ` + + +``` diff --git a/docs/ru/guide/custom-blocks.md b/docs/ru/guide/custom-blocks.md new file mode 100644 index 000000000..d2a5479f5 --- /dev/null +++ b/docs/ru/guide/custom-blocks.md @@ -0,0 +1,96 @@ +# Пользовательские блоки + +Вы можете определять пользовательские блоки внутри файлов `*.vue`. Загрузчики, применяемые к такому блоку, будут определяться сопоставлением по атрибуту `lang` блока, имени тега блока, и правил в вашей конфигурации webpack. + +Если указан атрибут `lang`, пользовательский блок будет обработан как файл с расширением, указанном в `lang`. + +Вы также можете использовать `resourceQuery` для определения правила для блока без атрибута `lang`. Например, для сопоставления пользовательского блока ``: + +``` js +{ + module: { + rules: [ + { + resourceQuery: /blockType=foo/, + loader: 'loader-to-use' + } + ] + } +} +``` + +Если для пользовательского блока будет найдено правило — он будет им обработан; в противном случае пользовательский блок будет тихо проигнорирован. + +Кроме того, если пользовательский блок экспортирует функцию в качестве конечного результата после обработки всеми соответствующими загрузчиками, то эта функция будет вызываться с компонентом файла `*.vue` в качестве параметра. + +## Пример + +Небольшой пример внедрения пользовательского блока `` в компонент таким образом, что он будет доступен во время выполнения. + +Для внедрения содержимого пользовательского блока мы напишем собственный загрузчик: + +``` js +module.exports = function (source, map) { + this.callback( + null, + `export default function (Component) { + Component.options.__docs = ${ + JSON.stringify(source) + } + }`, + map + ) +} +``` + +Настроим webpack использовать наш загрузчик для пользовательских блоков ``. + +``` js +// wepback.config.js +module.exports = { + module: { + rules: [ + { + resourceQuery: /blockType=docs/, + loader: require.resolve('./docs-loader.js') + } + ] + } +} +``` + +Теперь мы можем получить доступ к содержимому блока `` импортированного компонента на этапе выполнения. + +``` vue + + + + +This is the documentation for component B. + +``` + +``` vue + + + + +``` diff --git a/docs/ru/guide/extract-css.md b/docs/ru/guide/extract-css.md new file mode 100644 index 000000000..94f61d36d --- /dev/null +++ b/docs/ru/guide/extract-css.md @@ -0,0 +1,75 @@ +# Извлечение CSS в отдельный файл + +::: tip СОВЕТ +Применяйте извлечение CSS в отдельный файл только в production, чтобы использовать горячую перезагрузку CSS на этапе разработки. +::: + +## webpack 4 + +``` bash +npm install -D mini-css-extract-plugin +``` + +``` js +// webpack.config.js +var MiniCssExtractPlugin = require('mini-css-extract-plugin') + +module.exports = { + // другие настройки... + module: { + rules: [ + // ... другие правила опущены + { + test: /\.css$/, + use: [ + process.env.NODE_ENV !== 'production' + ? 'vue-style-loader' + : MiniCssExtractPlugin.loader, + 'css-loader' + ] + } + ] + }, + plugins: [ + // ... плагин Vue Loader опущен + new MiniCssExtractPlugin({ + filename: 'style.css' + }) + ] +} +``` + +Также смотрите [документацию mini-css-extract-plugin](https://github.com/webpack-contrib/mini-css-extract-plugin). + +## webpack 3 + +``` bash +npm install -D extract-text-webpack-plugin +``` + +``` js +// webpack.config.js +var ExtractTextPlugin = require("extract-text-webpack-plugin") + +module.exports = { + // другие настройки... + module: { + rules: [ + // ... другие правила опущены + { + test: /\.css$/, + loader: ExtractTextPlugin.extract({ + use: 'css-loader', + fallback: 'vue-style-loader' + }) + } + ] + }, + plugins: [ + // ... плагин Vue Loader опущен + new ExtractTextPlugin("style.css") + ] +} +``` + +Также смотрите [документацию extract-text-webpack-plugin](https://github.com/webpack-contrib/extract-text-webpack-plugin). diff --git a/docs/ru/guide/functional.md b/docs/ru/guide/functional.md new file mode 100644 index 000000000..421979506 --- /dev/null +++ b/docs/ru/guide/functional.md @@ -0,0 +1,21 @@ +# Функциональные компоненты + +Функциональные компоненты, объявленные как однофайловые компоненты в файле `*.vue`, также получают правильную поддержку компиляции шаблона, локальный CSS и поддержку горячей перезагрузки. + +Чтобы обозначить шаблон, который должен быть скомпилирован как функциональный компонент, добавьте атрибут `functional` в тег шаблона. Это также позволяет опустить опцию `functional` в теге ` + + + + + Это может быть, например, документация для компонента + +``` + +`vue-loader` парсит файл, извлекает каждую из секций, обрабатывает их при необходимости другими загрузчиками webpack, и в итоге собирает всё обратно в ES-модуль где экспорт по умолчанию будет объектом настроек компонента Vue.js. + +`vue-loader` предоставляет возможность использовать нестандартные языки, например пре-процессоры CSS и языки шаблонов компилируемые в HTML, указывая атрибут `lang` для секции файла. Например, вы можете использовать SASS для стилей вашего компонента: + +``` vue + +``` + +Подробнее на странице [использования пре-процессоров](./guide/pre-processors.md). + +## Секции файла + +### Шаблон (template) + +- Каждый `*.vue` файл может содержать максимум один блок `