설명기um 단순화 프로젝트 MVC do zero com JavaScript

Mostaria de mostrar um pouco do queéa arquitetura Model View Controller(MVC)com은 사용자에게 어떠한 정보도 제공하지 않고 최신 정보만 제공하며 최신 정보를 제공합니다. 사용자에게 최신 정보를 제공하고 최신 정보를 제공합니다. 사용자에게 최신 정보를 제공하고 최신 정보를 제공합니다. 사용자에게 최신 정보를 제공하고 최신 서비스를 제공합니다. 사용자에게 최신 정보를 제공하고 최신 서비스를 제공합니다!
O 간단한 건축 프로젝트로 API를 사용하여 완벽한 벽판을 건설한다😜
유럽 축구팀에 관한 경기로 이탈리아 축구팀의 MVC를 소개했다.

  • 모형은 보호판을 채택하여 보호판을 설치할 필요가 없다.
  • 시각화된 인대에 대한 시각적 요소
  • 메인 제어관이 모델 ea 보기에서의 위치, 데이터 전송에서의 위치.
  • 그래, 내 친구들, 내 친구들, 내 친구들🔨
    특히, vamos criar nosso HTML sendo estruturado assim:
    <body>
      <header>
        GitHub App - Model View Controller (MVC)
      </header>
    
      <main class="container">
        <section class="profile">
        </section>
    
        <form class="filter">
          <input type="text" value="" />
          <button type="submit">Buscar</button>
        </form>
    
        <section class="repo">
          <h2>Repositórios favoritos</h2>
          <div class="repo-list"></div>
        </section>
      </main>
    
      <script type="module" src="js/index.js"></script>
    </body>
    
    Vocêdeveestar pensando,porque exitem essas seç245; es“vazias”sem contentúdo ou todo o código HTML com essas class definidas nas tags,bem elas vão ser para referenceas na nossa View!
    Vamos criar uma 분식 na raiz do nosso projeto chamada js que teráessa estrutura:
    architecture-mvc.png
    A는 뷰로서 모델 e o arquivo 인덱스입니다.jsque seránosso 컨트롤러.
    Vamos continuar nas 보기, nela Vamos ter 3 arquivos.
    와모스 코마르 페로 아쿠보 기지.이것은 시각화된 생활 방식의 하나다.가장 중요한 것은 모든 목표 요소는 HTML 정의가 없고 우리가 참고할 수 있는 요소, 즉 시각화 요소를 가지고 있다는 것이다.🎨
    엘레 세라심:
    export const elements = {
      profile: document.querySelector(".profile"),
      input: document.querySelector("input"),
      repos: document.querySelector(".repo-list"),
    };
    
    사용자 보기 말이야.js dentro da pasta views,ele teráuma funço renderUser que vai montar nosso HTML quando receber os dados do usuário do GitHub:
    import { elements } from "./base.js";
    
    export const renderUser = ({
      avatar_url,
      html_url,
      public_repos,
      followers,
      following,
    }) => {
      const markup = `
        <div class="profile-header">
          <img src="${avatar_url}" alt="Avatar">
          <a href="${html_url}" target="_blank">Visitar perfil</a>
        </div>   
        <ul class="profile-list">
          <li>Repositórios: ${public_repos}</li>
          <li>Seguidores: ${followers}</li>
          <li>Seguindo: ${following}</li>
        </ul> 
      `;
    
      elements.profile.insertAdjacentHTML("afterbegin", markup);
    };
    
    재미있는 렌더링 머신, 실용적인nosso 대상 요소는 클래스 프로필을 참조합니다. 실용적인essa는 삽입된 일부 프로필 정의에 nosso HTML como método insertadjacenthl que recebe A posiço como primeiro par –metro e como segundo nosso HTML이 없음을 참조합니다.
    예, agora vamos para o model da nossa 보기 사용자.
    덴트로다 스파게티 모델 vamos criar um arquivo chamado 사용자.js, ele vai conter uma classe 사용자는 GitHub 및 como 응답 iráretronar os dados do usuário que vamos Utizar na nossa 보기에서 API를 사용해야 합니다.
    class User {
      constructor(user) {
        this.user = user;
      }
    
      async getUser() {
        try {
          const apiUrl = `https://api.github.com/users/${this.user}`;
          const apiUrlStarred = `https://api.github.com/users/${this.user}/starred`;
          const response = await fetch(apiUrl);
          const result = await response.json();
    
          this.avatar_url = result.avatar_url;
          this.followers = result.followers;
          this.following = result.following;
          this.public_repos = result.public_repos;
          this.html_url = result.html_url;
          this.starred_url = apiUrlStarred;
        } catch (error) {
          console.log(error);
        }
      }
    }
    
    export { User };
    
    터미널은 nossa view e model para o User, vamos para o Repo que vai conter tudo relacionado a Repositoó órios do GitHub que vamos utilizar이다.
    Vamos começar da view do repo,dentro da pasta view,Vamos criar um arquivo chamado repoView.js
    import { elements } from "./base.js";
    
    export const renderRepositories = (repositories) => {
      let markup = "";
    
      repositories.forEach(({ html_url, name }) => {
        markup += `
          <a href="${html_url}" class="repo-url" target="_blank">
            ${name}
          </a>
        `;
      });
    
      elements.repos.innerHTML = markup;
    };
    
    Com은 mesma din – mica para o userView입니다.js,fizemos aqui para o Repositoório, 재미있는 보고서, 시각화된 보고서.
    nosso model do repositório, vamos criar um arquivo dentroda 파스타 models chamado Repo.js
    class Repo {
      constructor(repoUrl) {
        this.repoUrl = repoUrl;
      }
    
      async getRepositories() {
        try {
          const response = await fetch(this.repoUrl);
          this.repos = await response.json();
        } catch (error) {
          console.log(error);
        }
      }
    }
    
    export { Repo };
    
    이것은 일류 자동차 수리 공장으로 그의 주소는 바이 레이트나르(vai Retronar)와 우주리오 와모스 버스 회사(usuário que vamos buscar)의 수리 공장(reposit órios do usuário rio)이다.
    이것은 불법 이민을 금지하는 계획인데, 이 계획은 매우 중요한 임무이다.🥁
    이소 메스모, 노소 컨트롤러🎮
    람브라도 아쿠보 지수.이거 파스타예요?엔토, 와모스 넬!
    Vamos criar duas fun feres 컨트롤러, uma para pegar os dados do usuário do nosso model User e renderizar a nossa view User e outra para pegar os repositórios do nosso model Repo e enviar a nossa view Repo.
    모델 e시도에서 우리는 좋은 예를 볼 수 있다.
    import { User } from "./models/User.js";
    import { Repo } from "./models/Repo.js";
    
    import * as userView from "./views/userView.js";
    import * as repoView from "./views/repoView.js";
    
    import { clearUI, elements } from "./views/base.js";
    
    const state = {};
    
    const controlFavoriteRepositories = async (url) => {
      try {
        state.repositories = new Repo(url);
    
        await state.repositories.getRepositories();
    
        repoView.renderRepositories(state.repositories.repos);
      } catch (error) {
        console.log(error);
      }
    };
    
    const controlSearch = async (event) => {
      event.preventDefault();
    
      try {
        const searched = elements.input.value;
    
        state.user = new User(searched);
    
        await state.user.getUser();
    
        clearUI();
    
        userView.renderUser(state.user);
    
        await controlFavoriteRepositories(state.user.starred_url);
    
        elements.input.value = "";
      } catch (error) {
        console.log(error);
      }
    };
    
    window.addEventListener("submit", controlSearch);
    window.addEventListener("load", controlSearch);
    
    Vamos começar pela funço controlSearch que tem como objetivo receiber o nome do usuário que foi digitata o no input e que seráenviado para o nosso model User.그 밖에 우수리우데자네이루의 담장 보호판, 국가가 전 세계적으로 정의한 담장 보호판, 미래의 실용적인 담장 보호판과 요구하는 담장 보호판, 그리고 국가와 국가의 가치도 있다.
    Depois chammos o método getUser ()는 trazer os dados do usu ário, 로고 Depois chamamomos a fun ão clearUI ()는 ARquivo 기반이 없는 HTML 제거기입니다.montaruma nova Visualizaa ão usuário assim que,pesquisado seu 사용자에 사용됩니다.단트로 도 아쿠보 기지.js vamos criar ela assim:
    export const clearUI = () => {
      elements.profile.innerHTML = "";
    };
    
    Com o bloco profile vazio,chamamos a funão para renderizar a visualizeaão usuário pesquisado.엠세기다(Em seguida)는 차마모스(chamamos o Controll Favorite)와 파산도(passando)가 URL로 지난 몇 년 동안 사람들이 다시 지지를 얻는 데 도움을 줄 수 있다고 말했다.
    O주 통제관은 우수리우데자네이루에서 일정 기간 재배치되어 일정 시간 내에 재배치 작업을 마쳤다. 주 통제관은 일정 시간 동안 한 등급의 재배치 작업을 마쳤고 일정 시간 내에 임시 정착 작업을 마쳤다.
    알겅은 최종 아쿠보 지수가 없는 아모스를 상세하게 묘사했다.js contém dois eventos submit e load,o submit vai ser acionado assim que for pesquisado algum nome de usuário e o load para renderizar o valor default do input definido no HTML,ambos chamando a funço controlSearch.
    Coloquei meu nome de usuário como는 기본적으로 값을 입력하지 않습니다. 이것은 colocar vontade de colocar o seu nome de usuário do GitHub입니다!
     <input type="text" value="IsabelRubim" />
    
    이것은 파스타의 일종으로 독특한 풍격이다.css dentro da pasta para colocar alguns estilos que vocêpode copiaraqui.E depois chamei os estilos no HTML dentro da tag head:
    <link rel="stylesheet" href="css/styles.css" />
    
    Por 분타모, chamamomos nosso 컨트롤러 dentro da tag body HTML 만들기:
      <script type="module" src="js/index.js"></script>
    
    곧, 우리는 간단한 방법으로 우리가 지트부시에 있는 영사관, 도서관, 그리고arquitetura 모형 보기 컨트롤러의 기능 문제를 해결할 수 있을 것이다.E aquiestáos 링크 demostraçç E código fonte:
  • Ver demostração
  • Ver código fonte
  • Espero que esse 자습서 tenha ajudado voc en a entender MVC.Éum padrão facilmente em projetos reais e que pode serótimo conhecimento para vocè.

    좋은 웹페이지 즐겨찾기