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