React 및 Tailwind CSS를 사용하여 요약 응용 프로그램을 구축하는 방법
따라서 본고에서 React, Tailwind CSS, 그리고 제 요약 API(https://medrum.herokuapp.com를 사용하여 간단하게 만드는 방법을 설명하겠습니다.본고의 마지막 부분에서 우리는 유사한 것을 구축할 수 있을 것이다-https://ey6n5.csb.app/
현장 체험을 원하신다면 다음 비디오를 보실 수 있습니다.
여기서 제 채널을 구독하세요: https://bit.ly/oyetoketoby
만약 네가 동영상을 볼 수 없다면, 너는 아래의 내용을 계속 읽을 수 있다.
선결 조건
프로젝트 설정
여기서 첫 번째 단계는 Create react App을 사용하여 우리의react 프로젝트를 설정하는 것입니다.설치되지 않으면 설치 프로세스here를 읽을 수 있습니다.
응용 프로그램을 만들려면 다음 명령을 실행하십시오.
$ npx create-react-app feed-app
CRA 응용 프로그램을 성공적으로 만든 후 다른 설정으로 이동합니다.
홈 디렉토리의 src
폴더로 이동하여 생성합니다.
$ npx create-react-app feed-app
components
폴더에 세 개의 파일(components
, sidebar.js
, main.js
을 만듭니다.$ mkdir components
$ touch config.js components/sidebar.js components/main.js components/articles.js
다음 단계는 프로젝트에 뒷바람 CSS를 추가하는 것입니다.이것을 할 수 있는 방법은 많지만 가장 간단하고 빠른 방법은 CDN을 사용하는 것이다.here를 통해 CDN을 가져오거나 다음 중 하나를 간단히 사용할 수 있습니다.<link href="https://unpkg.com/tailwindcss@^1.0/dist/tailwind.min.css" rel="stylesheet">
현재 articles.js
폴더에서 config.js
을 열고 Tailwind CSS로 업데이트합니다.Feed API- Medrum API의 작동 원리 이해
인코딩과 프로젝트의 다음 단계를 시작하기 전에 개요 API가 어떻게 작동하는지 이해해 봅시다.Medrum은 Python, Beautiful Soup, Scrapy를 사용하여 인터넷에서 글, 뉴스, 기타 각종 내용을 긁어내어 만든 것이다.
Medrum에는 두 개의 종점public
과 index.html
이 있습니다.문장에서, 어느 원본에서 읽을 것인지를 진정으로 지정할 수는 없지만, 요약에서 읽을 수 있습니다.
기본적으로 최신 기사를 얻으려면 이 단점에 요청을 보낼 수 있습니다 - https://medrum.herokuapp.com/articles/. 이 단점은 다음과 같습니다.
[{"title": "Juno Makes Writing Julia Awesome", "url": "https://towardsdatascience.com/juno-makes-writing-julia-awesome-f3e1baf92ea9", "comment_url": null, "ago": "3h", "date": "2020-02-02 04:06:09AM UTC"}, {"title": "Introducing Leya: The Meta-Statistical Lisp-like language", "url": "https://towardsdatascience.com/introducing-leya-the-meta-statistical-lisp-like-language-ef9012affbdb", "comment_url": null, "ago": "8h", "date": "2020-02-01 11:26:32PM UTC"}, {"title": "Transform Reality with Pandas", "url": "https://towardsdatascience.com/transform-reality-with-pandas-96f061628030", "comment_url": null, "ago": "10h", "date": "2020-02-01 09:34:26PM UTC"}, {"title": "Using Stringr and Regex to Extract Features from Textual, Alphanumeric and Punctuation Data in R", "url": "https://towardsdatascience.com/using-stringr-and-regex-to-extract-features-from-textual-alphanumeric-and-punctuation-data-in-r-2565256c0a77", "comment_url": null, "ago": "13h", "date": "2020-02-01 06:31:13PM UTC"}, {"title": "Getting Browser User Permission with the Permissions API", "url": "https://levelup.gitconnected.com/getting-browser-user-permission-with-the-permissions-api-eafbc9c7f4d7", "comment_url": null, "ago": "15h", "date": "2020-02-01 04:03:06PM UTC"}, {"title": "Get More Out of Google Colab", "url": "https://medium.com/analytics-vidhya/get-more-out-of-google-colab-5bf9d9519a56", "comment_url": null, "ago": "16h", "date": "2020-02-01 03:34:54PM UTC"}]
긁은 물건의 간격을 여과할 수 있습니다.그것은 articles
, feeds
, latest
, day
, week
일 수 있다.예를 들어, - https://medrum.herokuapp.com/articles/?interval=week 를 사용하여 이번 주에 발표된 모든 기사를 얻을 수 있습니다.
요약을 얻기 위해서는 원본 id를 지정해야 합니다. 여기서 찾을 수 있습니다. - https://medrum.herokuapp.com/sources/month
개요를 가져오려면 dev.To-source id dev.to
의 조합을 사용해야 합니다. 아래와 같습니다.
https://medrum.herokuapp.com/feeds/?source=5bbb1af8af62ff6841b4b26e&page=1&sort=popular
5bbb1af8af62ff6841b4b26e
및 page
sort
, popular
를 사용하여 끝점을 필터링할 수 있습니다.
멋있어요. 무료로 사용할 수 있어요.
Patreonhttps://www.patreon.com/oyetoketoby에서 무료 API 구축 지원
Feed 애플리케이션 구축
이제 API의 작동 원리를 이해하고 이를 애플리케이션에 통합하는 방법을 살펴보겠습니다.
열기latest
파일:
export const SOURCES_URL = "https://medrum.herokuapp.com/sources/"
export const FEEDS_URL = "https://medrum.herokuapp.com/feeds"
이것은 우리가 응용 프로그램에서 사용할 두 개의 단점을 포함한다.
이제 config.js
파일을 열고 다음을 붙여넣습니다.
import React, { useState, useEffect } from "react";
import Sidebar from "./sidebar";
import Articles from "./articles";
import { SOURCES_URL, FEEDS_URL } from "../config";
import axios from "axios";
function Main() {
const [sources, setSources] = useState([]);
const [articles, setArticles] = useState([]);
const [source, setSource] = useState([]);
const fetchSource = id => {
setSource(id);
setArticles([]);
axios.get(`${FEEDS_URL}?source=${id}`).then(res => {
setArticles(res.data);
});
};
useEffect(() => {
axios.get(SOURCES_URL).then(res => {
setSources(res.data);
});
fetchSource("5718e53d7a84fb1901e05914");
}, []);
return (
<div className="flex">
<div className="w-1/4 bg-gray-500 p-3">
<Sidebar source={source} sources={sources} fetchSource={fetchSource} />
</div>
<div className="w-3/4 bg-gray-400 p-3">
<Articles articles={articles} />
</div>
</div>
);
}
export default Main;
다음은 우리가 위에서 한 일이다.
[{"title": "Juno Makes Writing Julia Awesome", "url": "https://towardsdatascience.com/juno-makes-writing-julia-awesome-f3e1baf92ea9", "comment_url": null, "ago": "3h", "date": "2020-02-02 04:06:09AM UTC"}, {"title": "Introducing Leya: The Meta-Statistical Lisp-like language", "url": "https://towardsdatascience.com/introducing-leya-the-meta-statistical-lisp-like-language-ef9012affbdb", "comment_url": null, "ago": "8h", "date": "2020-02-01 11:26:32PM UTC"}, {"title": "Transform Reality with Pandas", "url": "https://towardsdatascience.com/transform-reality-with-pandas-96f061628030", "comment_url": null, "ago": "10h", "date": "2020-02-01 09:34:26PM UTC"}, {"title": "Using Stringr and Regex to Extract Features from Textual, Alphanumeric and Punctuation Data in R", "url": "https://towardsdatascience.com/using-stringr-and-regex-to-extract-features-from-textual-alphanumeric-and-punctuation-data-in-r-2565256c0a77", "comment_url": null, "ago": "13h", "date": "2020-02-01 06:31:13PM UTC"}, {"title": "Getting Browser User Permission with the Permissions API", "url": "https://levelup.gitconnected.com/getting-browser-user-permission-with-the-permissions-api-eafbc9c7f4d7", "comment_url": null, "ago": "15h", "date": "2020-02-01 04:03:06PM UTC"}, {"title": "Get More Out of Google Colab", "url": "https://medium.com/analytics-vidhya/get-more-out-of-google-colab-5bf9d9519a56", "comment_url": null, "ago": "16h", "date": "2020-02-01 03:34:54PM UTC"}]
https://medrum.herokuapp.com/feeds/?source=5bbb1af8af62ff6841b4b26e&page=1&sort=popular
이제 API의 작동 원리를 이해하고 이를 애플리케이션에 통합하는 방법을 살펴보겠습니다.
열기
latest
파일:export const SOURCES_URL = "https://medrum.herokuapp.com/sources/"
export const FEEDS_URL = "https://medrum.herokuapp.com/feeds"
이것은 우리가 응용 프로그램에서 사용할 두 개의 단점을 포함한다.이제
config.js
파일을 열고 다음을 붙여넣습니다.import React, { useState, useEffect } from "react";
import Sidebar from "./sidebar";
import Articles from "./articles";
import { SOURCES_URL, FEEDS_URL } from "../config";
import axios from "axios";
function Main() {
const [sources, setSources] = useState([]);
const [articles, setArticles] = useState([]);
const [source, setSource] = useState([]);
const fetchSource = id => {
setSource(id);
setArticles([]);
axios.get(`${FEEDS_URL}?source=${id}`).then(res => {
setArticles(res.data);
});
};
useEffect(() => {
axios.get(SOURCES_URL).then(res => {
setSources(res.data);
});
fetchSource("5718e53d7a84fb1901e05914");
}, []);
return (
<div className="flex">
<div className="w-1/4 bg-gray-500 p-3">
<Sidebar source={source} sources={sources} fetchSource={fetchSource} />
</div>
<div className="w-3/4 bg-gray-400 p-3">
<Articles articles={articles} />
</div>
</div>
);
}
export default Main;
다음은 우리가 위에서 한 일이다.main.js
구성 요소Sidebar
, Articles
, useState
, sources
articles
: 원본 요약을 가져오는 데 사용됩니다.source
, fetchSource
, useEffect
및 source
구성 요소에 전달하고, sources
구성 요소에 도구로 전달fetchSource
구성 요소를 엽니다.import React from "react";
function Sidebar({ sources, fetchSource, source }) {
if (!sources.length) return <p>Loading...</p>
return (
<>
{sources.map((s, k) => {
if (s.contentType!=="news") return null;
return (
<p
key={k}
className="mb-3"
style={{background: s.id===source ? "#ccc": "transparent"}}
onClick={() => {
fetchSource(s.id);
}}
>
{s.name}
</p>
);
})}
</>
);
}
export default Sidebar;
위의 내용은 사실 이해하기 쉽지만, 아래는 세목이다.Sidebar
, 원본 id는param이며, 현재 원본 id가 활성 원본 id이면 배경을 추가합니다.articles
파일을 엽니다.import React from "react";
function Articles({ articles }) {
if (!articles.length) return <p>Loading...</p>
return (
<>
{articles.map((a, k) => {
return (
<p className="mb-4" key={k}>
<a href={a.url} target="_blank">{a.title}</a>
</p>
);
})}
</>
);
}
export default Articles;
여기서 우리는 아무것도 하지 않았습니다. 우리는 Articles
아이템을 비추어 모든 요점을 표시합니다.마지막으로
sidebar.js
파일에서 sources
구성 요소를 가져오는 것입니다.import React from "react";
import "./styles.css";
import Main from "./components/main";
function App() {
return (
<div className="wrapper">
<Main/>
</div>
);
}
그렇습니다!모든 것이 순조롭다면 다음과 같은 내용을 보셔야 합니다.그게 다야.당신은 여기서 현장 시연을 볼 수 있습니다: https://ey6n5.csb.app/.여기 있는 코드 샌드박스에서 코드를 볼 수 있습니다: https://codesandbox.io/s/boring-moore-ey6n5
다른 사람과 나누는 것을 잊지 마라. 만약 네가 나를 지지하고 싶다면, 이것은 나의 파트론이다. https://www.patreon.com/oyetoketoby
Reference
이 문제에 관하여(React 및 Tailwind CSS를 사용하여 요약 응용 프로그램을 구축하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/oyetoket/how-to-build-a-feed-app-with-react-and-tailwind-css-8c3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)