Как вы можете создавать новые подстраницы при изменении api (json)? - PullRequest
0 голосов
/ 29 января 2019

Я хочу использовать данные из API от Mixcloud (аудио-хостинг, такой как soundcloud), чтобы новая подстраница (называется ли она deeplink?) Создавалась при публикации нового сообщения в Mixcloud.

MyПроект - это сайт для подкаста.Я представляю файл index.html, в котором представлены все эпизоды подкастов в списке с подстраницами, каждая из которых посвящена одному эпизоду. макет

Я очень новичок в веб-разработке, поэтому, пожалуйста, потерпите меня.Поэтому мне бы очень хотелось читать ссылки / материалы.

Я выяснил, как получить данные из API-интерфейса JSON, проанализировать их в строки Javascript и изменить innerHTML элементов в index.html.

У меня возникают трудности с пониманием того, как вы можете создавать новые подстраницы всякий раз, когда в Mixcloud публикуется новое сообщение.

У меня также возникают трудности с поиском подходящего материала для прочтения, вероятно, потому что яне знаю правильных слов и терминов для поиска.

Вот фрагмент моего кода.И API / JSON-файл , который я использую.

<div class="episode">
    <div class="episode-title">Loading episode...</div>
</div>
<div class="episode">
    <div class="episode-title">Loading episode...</div>
</div>
<div class="episode">
    <div class="episode-title">Loading episode...</div>
</div>
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {

        //parse JSON to javascript objects
        var response = JSON.parse(xhttp.responseText);

        //array of the first 3 podcast episodes
        var episodes = document.getElementsByClassName("episode");

        //array of the first 3 podcast episode titles
        var episodeTitles = document.getElementsByClassName("episode-title");

        //loop to update innerHTML
        for(var i = 0; i < episodes.length; i++) {
            var episodeTitle = response.data[i].name;
            episodeTitles[i].innerHTML = episodeTitle;
        }
    }
};
xhttp.open("GET", "https://api.mixcloud.com/radiomodem/cloudcasts/", true);
xhttp.send();

1 Ответ

0 голосов
/ 29 января 2019

Похоже, вы ожидаете, что сможете создать иерархическую структуру страниц с кодом на стороне клиента.Я предлагаю начать чтение с клиент против сервера .Эта ссылка является первым результатом поиска в Google.

Если вы планируете делать это в javascript как код на стороне клиента, созданные вами страницы не будут физически существовать.Вы бы создали одностраничное приложение , которое ссылается на ресурсы, которые выглядят как страницы, но хранятся только в памяти.Доставка этих страниц будет осуществляться через клиентский маршрутизатор без веб-запроса к ресурсу сервера.При использовании одностраничного приложения вы не сможете представить одну и ту же кэшированную версию сообщения Mixcloud нескольким пользователям;страницы в памяти, которые вы создаете, будут существовать только в браузере отдельных пользователей.

Вам нужно разделить код на отдельные базы кода сервера и клиента, чтобы это работало должным образом.

Ваш сервер будетсделайте запросы к https://api.mixcloud.com/radiomodem/cloudcasts/ и создайте новый физический файл подстраницы для каждой дочерней страницы.Ваша домашняя страница может читать содержимое каталога подстраниц и представлять их как навигационные варианты.

На стороне клиента все, что у вас есть, это html.

Если вы хотите придерживаться только изучения 1 языкаЯ предлагаю использовать Node с Express .Это позволит вам запускать JavaScript на сервере.

...