From fb06a6d7ac2b2d9141ecc13c49591e4821d8e2d3 Mon Sep 17 00:00:00 2001 From: Alex-Sokolov Date: Tue, 29 Aug 2017 22:21:03 +0300 Subject: [PATCH 01/10] =?UTF-8?q?navigation-guards.md=20=D0=BD=D1=83=D0=BC?= =?UTF-8?q?=D0=B5=D1=80=D0=B0=D1=86=D0=B8=D1=8F=20=D0=B2=D0=B5=D1=80=D1=81?= =?UTF-8?q?=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/ru/advanced/navigation-guards.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/ru/advanced/navigation-guards.md b/docs/ru/advanced/navigation-guards.md index dbe776eb8..c4a7b72e3 100644 --- a/docs/ru/advanced/navigation-guards.md +++ b/docs/ru/advanced/navigation-guards.md @@ -77,7 +77,7 @@ const router = new VueRouter({ Наконец, сторожевой хук можно указать и непосредственно в компоненте (том, что указан в конфигурации пути), используя следующие опции: - `beforeRouteEnter` -- `beforeRouteUpdate` (добавлено в версии 2.2) +- `beforeRouteUpdate` (добавлено в версии 2.2+) - `beforeRouteLeave` ``` js From 9f69591d02c2f69892800c83f35cdde06e0ff651 Mon Sep 17 00:00:00 2001 From: Alex Sokolov Date: Thu, 7 Sep 2017 09:36:07 +0300 Subject: [PATCH 02/10] =?UTF-8?q?history-mode.md=20=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=BA=D0=B8=20=D0=BF=D0=BE=20IIS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/ru/essentials/history-mode.md | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/docs/ru/essentials/history-mode.md b/docs/ru/essentials/history-mode.md index fcfd63616..7e97956af 100644 --- a/docs/ru/essentials/history-mode.md +++ b/docs/ru/essentials/history-mode.md @@ -70,6 +70,9 @@ http.createServer((req, res) => { #### Internet Information Services (IIS) +1. Установить [IIS UrlRewrite](https://www.iis.net/downloads/microsoft/url-rewrite) +2. Создать файл `web.config` в корневом каталоге вашего сайта со следующим содержимым: + ```xml @@ -82,17 +85,10 @@ http.createServer((req, res) => { - + - - - - - - - ``` From 14a43ebe66ce0b67f2d77c5c8d342462dd429495 Mon Sep 17 00:00:00 2001 From: Alex Sokolov Date: Tue, 3 Oct 2017 08:42:15 +0300 Subject: [PATCH 03/10] lazy-loading HTTPS --- docs/ru/advanced/lazy-loading.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/ru/advanced/lazy-loading.md b/docs/ru/advanced/lazy-loading.md index b762b02f9..7bb01ba87 100644 --- a/docs/ru/advanced/lazy-loading.md +++ b/docs/ru/advanced/lazy-loading.md @@ -16,7 +16,7 @@ const Foo = () => Promise.resolve({ /* определение компонент import('./Foo.vue') // возвращает Promise ``` -> Примечание: если вы используете Babel, то нужно будет добавить плагин [syntax-dynamic-import](http://babeljs.io/docs/plugins/syntax-dynamic-import/), чтобы Babel смог корректно обработать синтаксис. +> Примечание: если вы используете Babel, то нужно будет добавить плагин [syntax-dynamic-import](https://babeljs.io/docs/plugins/syntax-dynamic-import/), чтобы Babel смог корректно обработать синтаксис. Эти два пункта — всё необходимое, чтобы определить асинхронный компонент, который Webpack автоматически вынесет в отдельный чанк: From 05103406fd7b031e8aa11b9738ff198c70d9988e Mon Sep 17 00:00:00 2001 From: Alex Sokolov Date: Tue, 3 Oct 2017 08:42:52 +0300 Subject: [PATCH 04/10] dynamic-mathcing.md HTTPS --- docs/ru/essentials/dynamic-matching.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/ru/essentials/dynamic-matching.md b/docs/ru/essentials/dynamic-matching.md index 4ba304b69..9e0685163 100644 --- a/docs/ru/essentials/dynamic-matching.md +++ b/docs/ru/essentials/dynamic-matching.md @@ -25,7 +25,7 @@ const User = { } ``` -Посмотреть на пример вживую можно [здесь](http://jsfiddle.net/yyx990803/4xfa2f19/). +Посмотреть на пример вживую можно [здесь](https://jsfiddle.net/yyx990803/4xfa2f19/). Может быть несколько динамических сегментов в одном пути. Для каждого сегмента появится соответствующее свойство в `$route.params`. Например: From 9d204ecea48cfded6c072a7e06a7d56f4556a828 Mon Sep 17 00:00:00 2001 From: Alex Sokolov Date: Tue, 3 Oct 2017 08:43:13 +0300 Subject: [PATCH 05/10] getting-started.md HTTPS --- docs/ru/essentials/getting-started.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/ru/essentials/getting-started.md b/docs/ru/essentials/getting-started.md index 66ac1a5e8..cb640dba6 100644 --- a/docs/ru/essentials/getting-started.md +++ b/docs/ru/essentials/getting-started.md @@ -63,6 +63,6 @@ const app = new Vue({ // Всё, приложение работает! ;) ``` -Вживую этот пример доступен [здесь](http://jsfiddle.net/yyx990803/xgrjzsup/). +Вживую этот пример доступен [здесь](https://jsfiddle.net/yyx990803/xgrjzsup/). Обратите внимание, что `` автоматически получает класс `.router-link-active` при совпадении пути. Подробнее об этом можно узнать в [справочнике API](../api/router-link.md). From f7e98d8f3bc8d3c176bef5b515faa0f05046b6f0 Mon Sep 17 00:00:00 2001 From: Alex Sokolov Date: Tue, 3 Oct 2017 08:44:14 +0300 Subject: [PATCH 06/10] =?UTF-8?q?navigation.md=20=D0=BC=D0=B5=D0=BB=D0=BA?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/ru/essentials/navigation.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/ru/essentials/navigation.md b/docs/ru/essentials/navigation.md index 980a8e1db..d71207374 100644 --- a/docs/ru/essentials/navigation.md +++ b/docs/ru/essentials/navigation.md @@ -45,7 +45,7 @@ router.push({ path: '/user', params: { userId }}) // -> /user В версии 2.2.0+, можно указать опциональные `onComplete` и `onAbort` коллбеки в `router.push` или `router.replace` в качестве 2-го и 3-го аргументов. Эти коллбеки будут вызываться когда навигация либо успешно завершена (после того как все асинхронные хуки будут завершены), или прервана (переходом на этот же маршрут, или на другой маршрут прежде чем текущая навигация будет завершена), соответственно. -**Примечание:** Если путь назначения совпадает с текущим маршрутом и меняются только параметры (например: переход из одного профиля в другой `/users/1` -> `/users/2`), вам потребуется использовать [beforeRouteUpdate](./dynamic-matching.html#отслеживание-изменений-параметров) чтобы реагировать на изменения (например: получение информации о пользователе). +**Примечание:** Если путь назначения совпадает с текущим маршрутом и меняются только параметры (например, переход из одного профиля в другой `/users/1` -> `/users/2`), вам потребуется использовать [`beforeRouteUpdate`](./dynamic-matching.html#отслеживание-изменений-параметров) чтобы реагировать на изменения (например, получение информации о пользователе). #### `router.replace(location, onComplete?, onAbort?)` @@ -55,7 +55,6 @@ router.push({ path: '/user', params: { userId }}) // -> /user |-----------------------------------|-----------------------| | `` | `router.replace(...)` | - #### `router.go(n)` Единственным параметром этого метода является целое число, указывающее на сколько шагов необходимо перейти по стеку истории навигации (вперёд или назад, аналогично `window.history.go(n)`. From 60314630ff9df71559b50032adbc370f7abf79d5 Mon Sep 17 00:00:00 2001 From: Alex Sokolov Date: Tue, 3 Oct 2017 08:44:42 +0300 Subject: [PATCH 07/10] nested-routes.md HTTPS --- docs/ru/essentials/nested-routes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/ru/essentials/nested-routes.md b/docs/ru/essentials/nested-routes.md index bfb428e77..cb8ae241b 100644 --- a/docs/ru/essentials/nested-routes.md +++ b/docs/ru/essentials/nested-routes.md @@ -96,4 +96,4 @@ const router = new VueRouter({ }) ``` -Действующее демо этого примера можно найти [здесь](http://jsfiddle.net/yyx990803/L7hscd8h/). +Действующее демо этого примера можно найти [здесь](https://jsfiddle.net/yyx990803/L7hscd8h/). From 7c6c78c4fb0c6e05d5b8453987f1acfcc1b9d142 Mon Sep 17 00:00:00 2001 From: Alex Sokolov Date: Tue, 10 Oct 2017 09:08:27 +0300 Subject: [PATCH 08/10] =?UTF-8?q?navigation-guards.md=20=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/ru/advanced/navigation-guards.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/ru/advanced/navigation-guards.md b/docs/ru/advanced/navigation-guards.md index c4a7b72e3..47dbb3696 100644 --- a/docs/ru/advanced/navigation-guards.md +++ b/docs/ru/advanced/navigation-guards.md @@ -30,7 +30,7 @@ router.beforeEach((to, from, next) => { - **`next(false)`**: отмена перехода. Если URL был изменён (вручную пользователем, или кнопкой "назад"), он будет сброшен на соответствующий пути `from`. - - **`next('/')` или `next({ path: '/' })`**: редирект на другой путь. Текущий переход будет отменён, и процесс начнётся заново для нового пути. + - **`next('/')` или `next({ path: '/' })`**: перенаправление на другой путь. Текущий переход будет отменён, и процесс начнётся заново для нового пути. Вы можете передать любой объект местоположения в `next`, который позволяет вам указывать опции такие как `replace: true`, `name: 'home'` и любой другой параметр используемый во [входном параметре `to` компонента `router-link`](../api/router-link.md) или [`router.push`](../api/router-instance.md#methods) - **`next(error)`**: (добавлено в версии 2.4.0+) если аргумент, переданный `next` является экземпляром `Error`, навигация будет прервана и ошибка будет передана в коллбек, зарегистрированный через `router.onError()`. From 313a797be97c5e2c5a4a0b1bd1f9bc29c5b5945f Mon Sep 17 00:00:00 2001 From: Alex Sokolov Date: Tue, 10 Oct 2017 09:08:54 +0300 Subject: [PATCH 09/10] =?UTF-8?q?history-mode.md=20=D0=BA=D0=B0=D0=B2?= =?UTF-8?q?=D1=8B=D1=87=D0=BA=D0=B8=20=D0=B8=20=D0=B4=D0=BE=D0=B1=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D0=B0=20=D1=81=D0=B5=D0=BA=D1=86=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=BF=D1=80=D0=BE=20Firebase?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/ru/essentials/history-mode.md | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/docs/ru/essentials/history-mode.md b/docs/ru/essentials/history-mode.md index 7e97956af..210f16944 100644 --- a/docs/ru/essentials/history-mode.md +++ b/docs/ru/essentials/history-mode.md @@ -43,24 +43,24 @@ location / { #### Node.js ```js -const http = require("http") -const fs = require("fs") +const http = require('http') +const fs = require('fs') const httpPort = 80 http.createServer((req, res) => { - fs.readFile("index.htm", "utf-8", (err, content) => { + fs.readFile('index.htm', 'utf-8', (err, content) => { if (err) { console.log('Невозможно открыть файл "index.htm".') } res.writeHead(200, { - "Content-Type": "text/html; charset=utf-8" + 'Content-Type': 'text/html; charset=utf-8' }) res.end(content) }) }).listen(httpPort, () => { - console.log("Сервер запущен на: http://localhost:%s", httpPort) + console.log('Сервер запущен на: http://localhost:%s', httpPort) }) ``` @@ -102,6 +102,24 @@ rewrite { } ``` +#### Хостинг Firebase + +Добавьте в файл `firebase.json`: + +``` +{ + "hosting": { + "public": "dist", + "rewrites": [ + { + "source": "**", + "destination": "/index.html" + } + ] + } +} +``` + ## Предостережение При таком подходе возникает одно неприятное последствие: сервер больше не будет выдавать ошибки 404, так как обслуживание всех путей отдаётся на откуп клиентскому роутингу. Частично эту проблему можно решить, указав путь по умолчанию во Vue-router: From b0ada13f9152139730f0ca4d827bd77e136851fb Mon Sep 17 00:00:00 2001 From: Alex Sokolov Date: Tue, 10 Oct 2017 09:09:25 +0300 Subject: [PATCH 10/10] =?UTF-8?q?redirect-and-alias.md=20=D0=B4=D0=BE?= =?UTF-8?q?=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=BE=20=D1=83=D1=82=D0=BE?= =?UTF-8?q?=D1=87=D0=BD=D0=B5=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/ru/essentials/redirect-and-alias.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/ru/essentials/redirect-and-alias.md b/docs/ru/essentials/redirect-and-alias.md index 84d7a765e..7dc4b29b1 100644 --- a/docs/ru/essentials/redirect-and-alias.md +++ b/docs/ru/essentials/redirect-and-alias.md @@ -35,6 +35,8 @@ const router = new VueRouter({ }) ``` +Обратите внимание, что [сторожевые хуки](../advanced/navigation-guards.md) не применяются на маршруте, который служит для перенаправления, только на его цель. В приведённом ниже примере добавление хуков `beforeEnter` или `beforeLeave` на маршрут `/a` не будет иметь никакого эффекта. + Для демонстрации более сложных возможностей, обратите внимание на [этот пример](https://github.com/vuejs/vue-router/blob/dev/examples/redirect/app.js). ### Псевдонимы