이 튜토리얼에서는 프론트 엔드 애플리케이션과 함께 서버리스 기능을 배포하고 이미지를 생성하고 링크에서 메타 데이터를 잡는 API를 만들 수있는 방법을 확인할 것입니다.
서버리스 기능을 사용하여 개발자는 백엔드 서버를 설정하고 관리하는 고통을 겪지 않고 애플리케이션에서 최신 기능과 기능을 생성하고 구현할 수 있습니다. 이 기능은 클라우드 컴퓨팅 회사에서 호스팅 및 배포됩니다.
NetLify 함수는 NetLify에서 호스팅되는 응용 프로그램을 위해 서버리스 기능을 쉽게 작성하고 배포 할 수 있도록합니다.
키 테이크 아웃
uppeteer 및 netlify 함수를 활용하여 URL에서 메타 데이터 및 스크린 샷을 가져 오는 서버리스 링크 미리보기를 구축합니다.
스타일을위한 Tailwind CSS로 VUE 3 응용 프로그램을 설정하여 현대적이고 반응이 좋은 디자인을 보장합니다.
서버를 관리하지 않고 API 생성과 같은 백엔드 프로세스를 처리하기 위해 NetLify 기능을 구현하고 확장 성 및 배포 용이성을 향상시킵니다.
Netlify 기능 내에서 인형극을 사용하여 스크린 샷 캡처 및 웹 페이지에서 메타 데이터 추출과 같은 브라우저 작업을 자동화합니다.
간소화 된 업데이트 및 유지 보수를 위해 GIT 리포지토리에서 지속적인 배포를 활용하여 NetLify에 응용 프로그램을 배포하십시오.
서버리스 기능과 상호 작용하는 VUE 구성 요소를 통합하여 프론트 엔드에 동적으로 링크 미리보기를 표시하여 사용자 경험을 향상시킵니다.
전제 조건
이 튜토리얼을 따라 가려면 javaScript, vue.js, git, github 및 netlify에 익숙해야합니다. 또한 Vetur가 설치된 (IntelliSense 용)와 함께 vs code와 같은 텍스트 편집기와 컴퓨터에 설치된 최근 버전의 노드가 있어야합니다. 여기에 노드를 설치할 수 있습니다. 명령 노드를 실행하여 노드 버전을 확인할 수 있습니다.
당신은 또한 netLify에 대한 계정이 있어야합니다. 아직하지 않은 경우 하나를 만들 수 있습니다.
우리가 구축하는 것
프론트 엔드 애플리케이션으로 서버리스 기능을 쉽게 설정할 수있는 방법을 보여 주려면 사용자 정의 링크 미리보기 구성 요소가있는 앱을 구축합니다.
이 구성 요소는 서버리스 기능에 URL이 포함 된 요청을 보냅니다. 그런 다음이 기능은 PUPPETEER를 사용하여 URL을 사용하여 대상 사이트에서 메타 데이터를 가져오고 사이트의 스크린 샷을 생성합니다.
기능은 메타 데이터와 스크린 샷을 프론트 엔드의 구성 요소로 다시 보내서 응용 프로그램의 링크 미리보기로 표시합니다.
다음은 NetLify에 배포 된 예제 프로젝트에 대한 링크입니다. 그리고 다음은 따라야 할 github 리포입니다 vue 응용 프로그램을 생성하고 설정
우리는 vue cli를 사용하여 vue 3 응용 프로그램을 만들 것입니다. 또한 많은 맞춤 CSS를 쓰지 않고도 앱에 사용할 수있는 클래스를 제공하는 유틸리티 우선 CSS 프레임 워크 인 Tailwind CSS를 설치하고 설정합니다.
vue vue 응용 프로그램을 신속하게 발판하려면 Vue Cli를 사용합니다. Vue Cli를 설치하려면 실행 :
CLI가 설치되면 다음을 실행하여 프로젝트를 만들 수 있습니다.
이렇게하면 설치를 위해 사전 설정을 선택하라는 메시지가 표시됩니다. 필요한 기능을 선택할 수 있도록 "수동 선택 기능"을 선택합니다. 내가 선택한 옵션은 다음과 같습니다.
이 옵션을 선택한 후 옵션을 나중에 사용할 수 있도록 사전 설정으로 저장할 것인지 묻습니다. y (예) 또는 n (아니오)을 선택하고 설치를 계속하십시오.
CD Link-Previewer를 실행하여 새로 생성 된 프로젝트를 입력하십시오
Tailwind CSS를 설치하고 설정하십시오
테일 윈드를 설치하려면 PostCSS 7 호환성 빌드를 사용할 것입니다. Tailwind는 Postcss 8에 따라 달라 지므로 글을 쓰는 시점에 아직 VUE 3에 의해 지원되지 않습니다. 이전의 Tailwind 설치를 제거하고 호환성 빌드를 다시 설치하십시오. :
<span>npm install -g @vue/cli
</span>
테일 윈드 구성 파일을 만듭니다
다음, tailwind.config.js 및 postcss.config.js 파일을 생성하십시오
Please pick a preset: Manually <span>select features
</span>? Check the features needed <span>for your project: Choose Vue version, Babel, PWA, Router, Vuex, Linter
</span>? Choose a version of Vue.js that you want to start the project with: <span>3.x
</span>? Use <span>history mode for router? (Requires proper server setup for index fallback in production) Yes
</span>? Pick a linter / formatter config: Basic
? Pick additional lint features: Lint on save
? Where <span>do you prefer placing config for Babel, ESLint, etc.? In dedicated config files
</span>
이것은 NetLify CLI를 전 세계적으로 설치하므로 모든 디렉토리에서 NetLify 명령을 실행할 수 있습니다. 버전, 사용법 등을 얻으려면 실행할 수 있습니다.
netlify dev 로 앱을 실행하십시오
Netlify CLI로 로컬로 프로젝트를 실행하려면 Dev 서버를 중지하고 (활성 인 경우) 실행하십시오.
그리고 다음은 다음과 같습니다.
면밀히 살펴보면 몇 가지 일이 일어나고 있습니다 :
netlify는 .env 파일에서 빌드 프로세스로 환경 변수를 주입하려고 시도한 다음 NetLify 함수에 의해 액세스 할 수 있습니다. 이 경우 .env 파일이 없으므로 프로세스에 정의 된 기본값을로드합니다.
둘째, Functions 디렉토리에있는 기능을로드하거나 배포합니다. Functions Server는 다르고 임의의 포트에 배포됩니다 - 36647.
마지막으로, 응용 프로그램이 구축 된 프레임 워크를 자동으로 감지하고 응용 프로그램을 배포하기 위해 필요한 빌드 프로세스를 실행합니다. 이 경우 "Vue.js를 사용하여 Netlify Dev 시작"을 볼 수 있습니다. 또한 React 및 기타 인기있는 프레임 워크를 지원합니다
그런 다음 NetLify는 http : // localhost : 8888에서 개발 서버를 시작합니다
이제 서버가 시작되었고 기능이 발전되었으므로 호출/호출 할 수 있습니다. 기본적 으로이 경로를 사용하여 기능에 액세스 할 수 있습니다 : /.netlify/functions/.
주목해야 할 중요한 사항 중 하나는 기능 서버가 실행중인 포트를 지정할 필요가 없다는 것입니다. 위의 기본 경로를 사용하여 기능 서버와 통신 할 수 있습니다. NetLify는 무대 뒤에서 URL과 포트를 자동으로 해결합니다.
이제 NetLify 기능이 작동하므로 미리보기 API를 구축하기 시작할 수 있습니다. 다음은 우리의 기능 API가 할 일에 대한 빠른 요약입니다.
는 프론트 엔드에서 전송 될 대상 URL을 수신합니다.
는 데이터를 PUPPETEER에게 전달합니다
Puppeteer는 새로운 헤드리스 브라우저 인스턴스를 시작합니다
인형극은 브라우저에서 새 페이지를 열고 대상 URL로 탐색합니다.
인형극은 대상 페이지 에 대한 설명을 위해 및 태그의 내용을 추출합니다.
는 페이지의 스크린 샷을 캡처합니다
스크린 샷 데이터를 프론트 엔드로 다시 보냅니다.
이제 우리는 기능 API가 무엇을할지에 대한 기본 아이디어를 얻었으므로 기능을 만들 수 있습니다. NetLify 기능을 위해 인형극을 설치하고 설정하여 시작하겠습니다.
인형극을 설치하고 구성하십시오
인형극은 헤드리스 크롬 또는 크롬 브라우저를 제어하기위한 고급 API를 제공하는 노드 라이브러리입니다. 전체 (비 헤드리스) 크롬 또는 크롬을 사용하도록 구성 할 수도 있습니다. Puppeteer를 사용하여 브라우저에서 수동으로 할 수있는 대부분의 작업을 수행 할 수 있습니다. 인형극에 대한 자세한 내용은 Puppeteer 문서에서 찾을 수 있습니다.
인형극을 시작하려면 프로젝트에 설치하겠습니다. 지역 개발 및 생산을위한 인형극
Puppeteer는 API와 함께 작동하는 것을 보장하는 최근 버전의 Chromium (~ 170MB MacOS, ~ 282MB Linux, ~ 280MB Windows)을 다운로드합니다.
우리는 생산을 위해 전체 인형극 패키지를 사용할 수 없습니다. Netlify 함수는 최대 크기가 50MB이고 크롬 패키지가 너무 크기 때문입니다.
IRE Aderinokun 의이 매우 유용한 기사 덕분에 우리는 여전히 현지 및 생산에서 인형극과 함께 일할 수 있습니다. 우리가해야 할 일은 다음과 같습니다.
로컬 배치의 경우 Puppeteer를
개발 종속성으로 설치하십시오
인형극자가 로컬 및 생산량 모두에서 작동하려면 꼭두각시의 종속성 로 인형극 코어와 Chrome-Aws-Lambda를 설치해야합니다.
꼭두각시와 인형극의 차이점을 여기에서 확인할 수 있습니다. 그러나 주요 차이점은 Puppeteer-Core가 설치시 Chromium을 자동으로 다운로드하지 않는다는 것입니다.
Puppeteer-Core는 브라우저를 다운로드하지 않기 때문에 Netlify 기능에서 사용할 수있는 AWS Lambda 및 Google Cloud 기능의 크롬 이진 인 Chrome-Aws Lambda를 설치합니다. 이들은 생산에서 작동 할 패키지입니다
이제 패키지를 설치 했으므로 기능을 만들어 봅시다.
Puppeteer에 이미 설치된 브라우저를 사용하십시오
로컬에서 작업하기 위해 전체 브라우저를 설치하는 인형극이 문제가되는 경우 네트워크 나 대역폭 문제로 인해 발생할 수 있습니다. 인형극에 이미 설치된 크롬 또는 크롬 브라우저를 사용하는 해결 방법이 있습니다.
우리에게 필요한 것은 로컬 컴퓨터의 브라우저로가는 길입니다. 우리는 이것을 ExecutablePath로 사용하여 Puppeteer.launch () 메소드로 전달됩니다. 이것은 인형극자에게 브라우저 실행 파일을 찾을 위치를 알려줍니다.
실행 가능한 경로를 어디에서 찾을 수 있는지 정확히 모르는 경우 브라우저를 열고 Chrome : // 버전으로 이동하여 Chrome 버전을 표시하십시오.
경로를 복사하고 프로젝트의 루트에서 .env 파일을 만듭니다.
<span>npm install -g @vue/cli
</span>
.env 파일의 내용을 얻으려면 다른 패키지를 설치합니다. DOTENV : .
이제 패키지를 성공적으로 설치 했으므로 NetLify 기능을 만들어 봅시다.
생성 예약 함수를 만듭니다
새 파일을 만듭니다. ./functions/generate-preview.js :
위의 코드에서 우리는 여러 가지 일을하고 있습니다. 먼저, 이벤트의 요청 페이로드에서 대상을 얻습니다. 이것은 사후 요청과 함께 전송됩니다. 다음으로 Chrome-Aws Lambda 패키지를 사용하여 브라우저를 시작합니다. Puppeteer.launch () 메소드를 사용하여이를 수행합니다. 이 방법은 객체를 몇 가지 선택적 특성을 가진 인수로 간주합니다. 우리 가이 방법으로 전달하는 중요한 속성은 ExecutablePath입니다.
우리는 ExecutablePath를 process.env.excecutable_path ||에 할당합니다 chromium.ExecutablePath를 기다릴 수있는 패키지가 사용 가능한 헤드리스 브라우저를 찾을 수 있습니다.
브라우저가 시작되면 Browser.newPage () 메소드를 사용하여 브라우저에서 새 페이지를 열 수 있습니다. 또한 Page.SetViewPort () 메소드를 사용하여 페이지에 대한 원하는 브라우저 뷰포트를 설정했습니다.
기능을 실행할 때 Await 키워드를 사용하고 있음을 알 수 있습니다. 인형극이 비동기식으로 작동하고 일부 기능이 실행되기까지 시간이 걸릴 수 있기 때문입니다.
우리는 또한 Page.emulatemediaFeatures () 메소드를 사용하여 Puppeteer와 함께 페이지의 미디어 기능을 정의하는 것과 같은 작업을 수행 할 수 있습니다. 그것이 우리가 선호하는 컬러 체계를 어두운 곳으로 설정하는 방법입니다
사이트 메타 데이터 및 스크린 샷을 얻으십시오