1. Новый проект Vue
1.1 Новый Проект
Новые проекты
vue init веб-пакет axios_resource
Тогда конкретные настройки будут следующими
Имя проекта, Описание Проекта, Автор, Среда выполнения + Компилятор Введите
Обратите внимание, что здесь установлены vue-маршрутизатор и ESLint
Затем Настройте модульные тесты с помощью Karma + Мокко?
и Настройка тестов e2e с помощью Nightwatch?
Выберите n.
1.2 Зависимость От Проекта Установки
установка npm
1.3 Установка axios Модульная
npm установить axios –сохранить
1.4 Модульный ресурс установки
npm установить vue-ресурс –сохранить
1.5 Текущие Проекты
npm запускает разработчика
Результаты таковы.
1.6 Изменение содержимого Страницы
Давайте сначала изменим содержимое страницы. src\компоненты\Привет.vue
{{ msg }}
{{ author }}
Результаты таковы.
2. Используйте Axios
2.1 Давайте сначала изменим страницу, чтобы загрузить динамический контент.
Измените шаблон следующим образом
{{ msg }}
{{ author }}
- {{ music.name }}
Раздел JS изменен следующим образом
_
Затем сохраните
Обнаружена ошибка на странице http://eslint.org/docs/rules/no-undef "аксиос" не определен
Axios не определен, потому что мы не импортировали модуль Axios
Давайте импортируем модуль Axios в верхней части раздела JS
импорт axios из “axios”
Сообщение об ошибке исчезло после загрузки модуля Axis. Откройте консольный интерфейс страницы отладки. Обнаружена ошибка.
No 'Access-Control-Allow-Origin' header is present on the requested resource.Origin 'http://localhost:8080' is therefore not allowed access.
Там запрещен доступ
Это напоминает нам, что наш браузер не поддерживает междоменные запросы и выполняет поиск большого количества информации. Netease Cloud не поддерживает междоменные запросы (облачные серверы Netease не имеют главного поля Access-Control-Allow-Origin при возврате ваших запросов).
Тогда что мне делать? Тогда мы можем использовать только агентов.
Вот три режима прокси-сервера: 1, удаленный прокси-сервер 2, php-прокси 3, прокси-сервер узла
3 Агента
3.1 Удаленный агент
Это означает использование интерфейса агента, написанного другими, для отправки вашего запроса, чтобы он не пересекал домен.
Сначала мы определяем константу. API_PROXY
const
А затем axios
Соедините строку в запросе
axios.get(API_PROXY + 'http://music.163.com/api/playlist/detail?id=19723756')
Полный код JS выглядит следующим образом
Откройте браузер консоль
Интерфейс
Object {data: Object, status: 200, statusText: "OK", headers: Object, config: Object…}config: Objectdata: Objectheaders: Objectrequest: XMLHttpRequeststatus: 200statusText: "OK"__proto__: Object
Успешный запрос
Назначение музыка
this.musics = res.data.result.tracks
Обнаружена ошибка на странице.
Uncaught (in promise) TypeError: Cannot set property 'musics' of undefined
Музыка не определена Потому что здесь это не указывает на текущий экземпляр Vue Поэтому мы его используем. тревожно
Перед этим переопределите это
var _this = this
оставайся axios
Используй _это
Просто отлично
Смонтированная часть кода
mounted: function () { var _this = this axios.get(API_PROXY + 'http://music.163.com/api/playlist/detail?id=19723756') .then(function (res) { _this.musics = res.data.result.tracks console.log(_this.musics) }, function (error) { console.log(error) }) }
Снова откройте консоль и не обнаружите ошибки. Запрошенные данные-это то, что нам нужно.
Снова измените шаблон
Давайте добавим больше данных о изображениях.
Измененный шаблон выглядит следующим образом
{{ msg }}
{{ author }}
- {{ music.name }}
![]()
Полный код выглядит следующим образом
{{ msg }}
{{ author }}
- {{ music.name }}
![]()
Конечный результат выглядит следующим образом.
_
3.2 php прокси с завитком
Вот демонстрация того, как пишется vue-ресурс + PHP curl выполняет запросы прокси
Мы установили его перед собой. vue-ресурс
Модуль, мы собираемся быть в ___________ main.js
Загрузите его через ресурс
Модульный
Загрузка
импорт VueResource из “vue-ресурса”
Воспользуйся
Vue.использование(Ресурс Vue)
Чтобы избежать путаницы с предыдущими страницами, мы добавили новую страницу curl и новый маршрут’/curl для маршрутизации.
Полный код для индекса. JS выглядит следующим образом
import Vue from 'vue' import Router from 'vue-router' import Hello from '@/components/Hello' import Curl from '@/components/Curl' import VueResource from 'vue-resource' Vue.use(Router) Vue.use(VueResource) export default new Router({ routes: [ { path: '/', name: 'Hello', component: Hello }, { path: '/curl', name: 'Curl', component: Curl } ] })
на самом деле vue-ресурс
Метод get в основном подводит итог axios
Аналогично, в принципе, особых изменений нет.
mounted: function () { this.$http.get('http://localhost/curl.php', {}, { headers: { }, emulateJSON: true }).then(function (res) { this.musics = res.data.result.tracks console.log(this.musics) }, function (error) { console.log(error) }) }
Методу get заголовков не нужно заполнять параметры, если это способ отправки запросов post Для установки Управление доступом-Разрешить-Происхождение: *
Полный код выглядит следующим образом src\компоненты\Curl.vue
{{ msg }}
{{ author }}
- {{ music.name }}
![]()
Конечно, самое главное-это то, как писать завиток. PHP-код. Локон. Полный код PHP
"; // print_r(json_decode($data)); echo $data; // Check for errors if(curl_errno($curl)) { exit('Curl error: ' . curl_error($curl)); } Curl_close($curl);//Close the session
Запрос на завиток объясняется. Вы можете перейти к руководству. Самое главное-настроить файл заголовка так, чтобы он разрешал междоменную
header('Access-Control-Allow-Origin: *');
Если это не настроено, прокси-сервер не имеет смысла, иначе интерфейс все равно будет запрашивать междоменный
Конечно, тебе следует оставить керла. Файл PHP в корневом каталоге Apache или nginx, а также сервер Apache или nginx также должны быть включены.
3.3 Прокси-сервер Nodejs
Точно так же мы строим новый. Node.vue
Шаблоны и /узел
Маршрут
{ path: '/node', name: 'Node', component: Node }
Index.js полный код
import Vue from 'vue' import Router from 'vue-router' import Hello from '@/components/Hello' import Curl from '@/components/Curl' import Node from '@/components/Node' import VueResource from 'vue-resource' Vue.use(Router) Vue.use(VueResource) export default new Router({ routes: [ { path: '/', name: 'Hello', component: Hello }, { path: '/curl', name: 'Curl', component: Curl }, { path: '/node', name: 'Node', component: Node } ] })
Настройка агентов
Открыть config/index.js изменить Таблица прокси: {}
Часть Изменить следующим образом
proxyTable: { '/api': { target: 'http://music.163.com/api', changeOrigin: true, pathRewrite: { '^/api': '' } } }
Первая строка '/api'
Относится к виртуальным путям Цель относится к целевому адресу, который является адресом фактического API Перезапись правила перезаписи пути
Затем измените адрес запроса на кодовой странице
mounted: function () { this.$http.get('/api/playlist/detail?id=19723756', {}, { headers: { }, emulateJSON: true }).then(function (res) { this.musics = res.data.result.tracks console.log(this.musics) }, function (error) { console.log(error) }) }
/api/плейлист/подробности?id=19723756 Приведенный выше адрес фактически эквивалентен http://localhost:8080/api + /плейлист/подробности?id=19723756
Обратите внимание, что здесь необходимо перезапустить узел, поскольку при изменении конфигурации узла он должен быть перезапущен, чтобы вступить в силу.
В окне командира ctrl + c
Затем выполните повторно npm запустите dev
На этом этапе в окне командной строки появится запрос
[HPM] Proxy created: /api -> http://music.163.com/api [HPM] Proxy rewrite rule created: "^/api" ~> "" > Starting dev server...
Объясните успех агентства
Затем посетите http://localhost:8080/#/node
Вы можете видеть эффект. Полный код src\компоненты\Узел.vue
{{ msg }}
{{ author }}
- {{ music.name }}
![]()
Адрес Github https://github.com/pandoraxm/… Ссылка https://www.bear777.com/blog/… Личный блог https://www.bear777.com