を簡単に解釈します


GostariaデMostrar umは、ArquieturaモデルView Controller(MVC)COM um Aplicativo Simpleを得ません、いいえ来てくださいo o parece ser um conceito muito abstrato e difは、Cal、Ma com Ma Damostra Medio - o o Pode Tornar o Aspendizado Mis f
o projeto que vamos Construirはbem simples、vamosの利用に関してAPIを行う😜
MAS Antes deixa eu Te dar馬Breveイントロデュは、oをします.

  • モデルEleはo Dados、Doco do Github e Tratar ESSE Dadosなしモデルである
  • <研究ノート>モストル・ナ・テル・タームのM . C . C .
  • Oコントローラは、Cを制御します.
  • OOK、Agora que sabemos um Pulco do que mec、m ' s os🔨
    リトルビッグプラネット™2でアップロードvicios criar nosso html
    <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は、デブエステPandsando、ポルノexitemエッセンseの間で、「Vazias」SEM Conteは、ou ou do o do do c c di digo html com essasクラスは、NASタグ、BEM ELAS V Astro o ser Paralleniamos na nossaを定義します!
    Vamos Criar TumaパスタNa raiz do nosso projeto chamada js que ter a essa estrutura :
    architecture-mvc.png
    ビューとしてパスタパラ、モデルEアーキヴォーインデックス.NOSSOコントローラ.
    Vamos連続NASの見解、ネラVamosター3 Arquivos.
    vamosは、ar ar pelo o arquivoベースに来ます.J . K . S . VAMOS - Ter - Futher - Mes - en - e e Elementos que Manipula as Visualiza Stenchen EsPrimeiro , vamos criar um objeto element que terは, no nncias das nossasのクラスを参照してください. HTMLとして定義されていません. png que Gente possa usar como参照してくださいnncia quando erisonar adicionar ou arrar .🎨
    シリア・アッシム
    export const elements = {
      profile: document.querySelector(".profile"),
      input: document.querySelector("input"),
      repos: document.querySelector(".repo-list"),
    };
    
    EM SEGINA、vamos crium um arquivo de userview.JSデトロイトdaパスタの景色、エレターは、ママのファンは、レンダリングされます.
    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);
    };
    
    Renderuserの使用については、次のように参照してください.
    OK、アゴラvamos para oモデルda nossaビューユーザー.
    デトロイトdaパスタモデルvamos crium um Arquivo chamadoユーザー.ジェイ、エルVaiコンソーシアムUAのクラスプのユーザーque vai fazer - maのthesiのoパラパラAPIはgithub e comoのreosta irを行う.
    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 };
    
    アゴラque terminosは、nossaビューEモデルパラオoユーザー、vamos para o repo que vai conter tudo relacionado aリポジトリを持ちます.
    Vamosは、AR AR DA Review Do Reo、Dontro daパスタ見解、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 a mesma dinは、雲母パラオoユーザービューです.ジェイ、フィゼメオスAquiパラoリポジトリは、リオは、楽しい偽装をレンダリングします.
    パラオノッソモデルは、リポジトリのRio、Vamos Criar - um Arquivoデトロンダdaパスタモデル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 };
    
    CLASSEレポIRは、レイバーUAのURL que Vai retornarのOSのリポジトリは、rios do usuは、リオのVamos Buscarを行う.
    Estamos Quase Lは、パラフィンによって、Frializarmos nosso Projeto、s Falta um Arquivo e nが、o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o🥁
    ISSO mesmo , o nossoコントローラ🎮
    LembraはArquivoインデックスをします.JS que est est na na raiz daパスタjs?ent o o、vamos nele!
    vamos criar duasは、私たちが私たちを見つけることができないようにすることができます.
    Veja que aqui deixa bem claro que ele o o comunicador entre oモデルe a view
    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は、ar ar pela楽しみを得ます.em segiaは、COMのOSのdados usuは、リオは、Guarddamosエッセvalor dentroデumの状態グローバルdefinedno no inicio do arquivo、パラFuturamente se quisermos利用者アルルdado que j jle fizemosのrensi ementos o o、podemos chamar o state e usar os valore que cont e m neleを行う.
    depois chamamos o m do todo getuser () que ir ir trtrer os dadosは、usu - le - rioを行います.デトロDo Arquivo基地.JAMバモス・クリラー・エリス
    export const clearUI = () => {
      elements.profile.innerHTML = "";
    };
    
    com oブロコプロフィールVazio、Chamamosは、楽しい部分を得ます.EM SEGINA、CHAMMAOS Oコントローラの制御を制御します.
    OコントローラRenderizarのOSのリポジトリは、ROSのリオスSegue Oメッサpadrを表示します.o usuは、リオ、Primeiro Chamamos a classe repo e em segia obtemos os dados para passar paraビューeアッシムMostrando na tela osリポジトリ
    アルファントdetalhesパラfinalizarmos、最終的なDo Arquivoインデックスはありません.JSは、Eの負荷を送信します.oは、oをロードします、o oを送ってください.
    Colquequei meu nome de usuは、リコcomoデフォルト値が入力をしないでください、マスfiqueは、coonar o colocar o seu nomeデusuに、gio utuuをします!
     <input type="text" value="IsabelRubim" />
    
    Al m m disso、criei - umaパスタchamada CSS na raizは、projeto e um Arquivoスタイルをします.CSSデトロイトdaパスタパラシュートで降下する人Colocarアルゴンヌaqui . E DEPOIS CHAMEI OSの評価: HTML DENTRO DAタグヘッド:
    <link rel="stylesheet" href="css/styles.css" />
    
    POR - Plus LTIMO , CHAMMAOS NOSSOコントローラDENRON DA TAG BODY DOWN :
      <script type="module" src="js/index.js"></script>
    
    E prprin、um Aplicativoは、クオッツォー・タルス・ウル・ドゥ・リオ・ギトゥブ、リーヴ・ド・バイオオテクテスE・モーストラ・コモFunciona A Arquieturaモデル・ビュー・コントローラを簡素化します.E Aqui ESTは、OSのリンクデdemostraの巣は、o e c cディルフォンテ:
  • Ver demostração
  • Ver código fonte
  • Espero que ESSEチュートリアルTenhaアダダードVocは、エンタテインメントMVCを起こします.<研究ノート> PIJOTsの利用に関する一考察