Действительно ли стоит использовать 3-уровневую архитектуру для маленького (выход) приложения

То, что вы делаете, очень запутанно, так как вы не можете увидеть сайт, на котором вы работаете, и протестировать код. Тем не менее, я думаю, что ваша проблема со второй половиной:

//Get the first 6 items from the array!!
        
        tvSeriesImg.push(results.poster_path);

        console.log(tvSeriesImg.slice(0, 6));


        const tvImage = document.createElement('img');
        tvImage.src = img + tvSeriesImg.slice(0, 6);
        tvImage.setAttribute('id', 'movieThumb');
        popTvSeriesCard.appendChild(tvImage);

Вы сохраняете пути в массиве, а затем в журнал консоли печатает первые 6 каждый раз, когда добавляет один, даже если их нет 6. Что немного сбивает с толку, но предполагается, что это код. Затем вы делаете

 tvImage.src = img + tvSeriesImg.slice(0, 6);

Это удалит первые 6 элементов из массива, каждый раз, когда он зацикливается и добавляет его к URL-адрес img, поэтому вы пытаетесь добавить в качестве источника URL-адрес, представляющий собой массив из 6 элементов. отсюда и ошибка. URL становится чем-то вроде http://img.com/absec.jpg,abb.jpg и т. д ...

Так как я не могу проверить его, так как у меня нет ключа API, возможно, есть ошибка, но ваш код должен выглядеть следующим образом:

var url = "https://api.themoviedb.org/3/tv/popular?api_key=f1d314280284e94ff7d1feeed7d44fdf&language=en-US&page=1";
var img = "https://image.tmdb.org/t/p/w500"
var tvSeriesImg = [];

var request = new XMLHttpRequest(); // New instance of XMLHttpRequest
request.open('GET', url, true); // Open the connection using the 'GET' Method
request.onload = function() { // Create an onload function this is where the data is displayed on the webpage

  var data = JSON.parse(this.response); // Creating a data variable where our JSON is parsed and stored.

  if (request.status >= 200 && request.status < 400) { // Check the request status.


    data.results.forEach(results => { //Looping through the JSON Array

      const popTvSeries = document.getElementById('tv-series-data');

      const popTvSeriesCard = document.createElement('div');
      popTvSeriesCard.setAttribute('id', 'card');
      popTvSeries.appendChild(popTvSeriesCard);

      tvSeriesImg.push(results.poster_path);

    });
    //remove from loop since you only want the top 6
    const tvImage = document.createElement('img');
    var first6Urls = tvSeriesImg.slice(0, 6);
    for (var i = 0; i < first6Urls.length; i++) {
      tvImage.src = img + first6Urls[i]
      tvImage.setAttribute('id', 'movieThumb' + i+1);
      popTvSeriesCard.appendChild(tvImage);
    }
  }
}
request.send();
[118 ]

По сути, вам нужно поместить код извлечения и добавления вне вашего для каждого цикла и добавлять их один за другим.

6
задан Matthew Dresser 5 February 2009 в 19:34
поделиться

5 ответов

Это может быть относительно маленьким теперь, но Вы думаете, что это могло бы вырасти в будущем? Из Вашего курса необходимо быть прагматически настроены, но если у Вас уже есть естественные разделения беспокойства в рамках Вашего единственного блока затем, довольно легко разделить это на два или больше блока. Если сами классы комбинируют бизнес-логику и доступ к данным затем, у Вас есть больше работы над Вашими руками. Однако я утверждал бы, что это почти больше не работы для записи логики доступа к данным в одном блоке и бизнес-логики в другом, параллельно при необходимости, чем записать все это в одном месте во-первых.

14
ответ дан 8 December 2019 в 05:58
поделиться

Да это стоит того. То, что Вы предлагаете, взламывает решение вместе. Я не могу сказать Вам, сколько раз это привело мне боль и страдание. Другая сторона той монеты является разработчиками астроничего, которые сверхсоздают их решения. Вы хотите избежать этого также.

Будьте просты, создайте свои три слоя, я предлагаю, чтобы Вы испытали LINQ к SQL, он делает создание DAL снимком, и затем можно сфокусироваться на создании тонкого UI и BLL, который обработает тяжелый подъем. Это не возьмет Вас, что намного дольше, чтобы сделать это и это будут допускать поблочное тестирование позже.

3
ответ дан 8 December 2019 в 05:58
поделиться

При предупреждении роста или изменения какого-либо вида это помогло бы укрепить явные уровни теперь. Но если это - Ваш собственный проект, и Вы не возражаете против ponying стоимость изменения или тесно интегрированного кода, затем просто взламываете далеко в нем как один слой.

Это - все о будущей стоимости. В подарке, просто программируя, когда Вы идете, является безусловно самым дешевым, но не отвечает на изменение очень хорошо. С планированием уровня существует оплачиваемая авансом стоимость, но это может обработать изменение и срывание целых реализаций слоя лучше, чем первый подход может.

Таким образом, Вашим эмпирическим правилом управляют тем, кто заплатит за изменение и когда.

3
ответ дан 8 December 2019 в 05:58
поделиться

Существует ли пороговый размер или некоторое эмпирическое правило, где необходимо использовать n-tier?

Не тот, о котором я знаю, но я выведу это: если существует шанс, это веб-приложение может вырастить (или изменить бэкенды), и/или кто-то еще может закончить тем, что поддержал его, я рассмотрел бы движение с подходом n-tier.

1
ответ дан 8 December 2019 в 05:58
поделиться

Просто сохраните это возможным. Это - вероятно, излишество теперь, но не пишите себя в ситуацию, где это невозможно. Рефакторинг в крупном масштабе возьмет Вас дольше, чем восстановление его с нуля (и вероятно будет просто что, восстанавливая с нуля).

Последний проект я продолжил работать (вошел поздно) был записан способом, что разбивание уровней было практически невозможно. Логика данных, вплетенная в бизнес-логику, вплетенную в логику представления. В ближайшей перспективе это было столь хорошо, как это когда-либо было, потому что фиксация его займет несколько месяцев.

Не слишком трудно сохранить все разделенным так как, я сказал ранее, просто сохраните это возможным.

1
ответ дан 8 December 2019 в 05:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: