설명기um 단순화 프로젝트 MVC do zero com JavaScript
24132 단어 mvcgithubjavascripttutorial
O 간단한 건축 프로젝트로 API를 사용하여 완벽한 벽판을 건설한다😜
유럽 축구팀에 관한 경기로 이탈리아 축구팀의 MVC를 소개했다.
모형은 보호판을 채택하여 보호판을 설치할 필요가 없다.
특히, 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:
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:Reference
이 문제에 관하여(설명기um 단순화 프로젝트 MVC do zero com JavaScript), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/isabelrubim/construindo-um-simples-projeto-mvc-do-zero-com-javascript-2efj텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)