목차
1 이상의 node.js 환경이 필요합니다. 프로젝트 만들기
둘째, 라우팅 구성
3을 통해 액세스할 수도 있습니다. 위 색인에서. .html, CSS 등 정적 리소스를 도입해야 한다면 koa-static
위 라우팅에서는 fs 모듈을 직접 사용합니다. html 파일 읽기
Express가 웹스톰이라면 Koa는 숭고합니다
웹 프론트엔드 JS 튜토리얼 Koa를 사용하여 Node.js를 통해 프로젝트 빌드

Koa를 사용하여 Node.js를 통해 프로젝트 빌드

Jun 13, 2018 am 11:38 AM
node.js

요즘에는 많은 프런트엔드 엔지니어들이 NodeJ, Express 프레임워크, Koa 프레임워크 등의 신기술에 더 많은 관심을 기울이고 있습니다. 최근에 여가 시간이 많은 경우가 드물기 때문에 설날이 공식적으로 도착하기 전에 이 자유 시간을 활용하여 이에 참여하고 그 비밀을 엿볼 수 있었습니다.

Koa는 Express의 원팀이 만든 초경량 서버사이드 프레임워크입니다

Express에 비해 자유도가 더 높고 미들웨어를 직접 도입할 수 있다는 점과 더 중요하게는 ES6+를 사용한다는 점입니다. async, 콜백 지옥을 피하세요

하지만 코드 업그레이드 때문이기도 하므로 Koa2에는 v7.60

1 이상의 node.js 환경이 필요합니다. 프로젝트 만들기

프로젝트 디렉터리를 수동으로 만든 다음 빠르게 패키지를 생성하세요. .json 파일

npm init -y
로그인 후 복사

koa 설치 //현재 버전 2.4.1

npm install koa -S
로그인 후 복사

그런 다음 app.js를 만듭니다

// app.js

const Koa = require('koa');
const app = new Koa();

app.use(async ctx => {
 ctx.body = 'Wise Wrong';
});

app.listen(3000);
로그인 후 복사

마지막으로 package.json에 시작 명령을 추가합니다

이렇게 하면 가장 기본적인 Koa 애플리케이션이 완성됩니다.

npm start를 실행하고 브라우저에서 http://localhost:3000/을 방문하여 효과를 확인할 수 있습니다.

프로젝트를 수동으로 생성하는 것이 너무 번거롭다고 생각되면 스캐폴딩 koa-generato를 사용하여 프로젝트 생성

npm install koa-generator -g
로그인 후 복사
koa2 project_name
로그인 후 복사

그런 다음 프로젝트 아래에 npm을 설치하여 종속 항목을 설치하고, npm start 프로젝트를 시작하세요

koa를 처음 접하시는 분이라면 이 블로그를 먼저 읽어보신 후 스캐폴딩 도구를 사용하시는 걸 추천드립니다. 각 종속 패키지의 역할을 더 잘 이해하세요

둘째, 라우팅 구성

app.js에 ctx 위에 하나가 있는데, 이는 Koa에서 제공하는 Context 객체로 요청과 응답을 캡슐화합니다

모든 HTTP 요청은 Context 객체를 생성합니다

Context.request.path를 통해 사용자 요청의 경로를 얻은 다음 Context.response를 통해 body가 사용자에게 콘텐츠를 보냅니다.

Koa의 기본 반환 유형은 text/plain입니다. 또는 모듈 파일), Context.response.type

을 수정해야 합니다. 또한 Context.response는 Context.response.type은 Context.type, Context.response.body는 다음과 같이 축약될 수 있습니다. Context.type

프로젝트 아래에 html 파일을 저장할 디렉터리 뷰를 만들고, 이 디렉터리에 index.html을 만든 후 app.js를 수정합니다.

// app.js// 原生路由

const Koa = require('koa');
const fs = require('fs');
const app = new Koa();

app.use(async (ctx, next) => {
 if (ctx.request.path === '/index') {
 ctx.type = 'text/html';
 ctx.body = fs.createReadStream('./views/index.html');
 } else {
 await next();
 }
});

app.listen(3000);
로그인 후 복사

그런 다음 브라우저에서 http://localhost:3000/index에 액세스합니다. 그리고 index.html 페이지가 보이실 텐데, 다른 주소에 접속하면 찾을 수 없습니다

이렇게 URL을 처리하는 게 너무 서툴러 보여서 라우팅 미들웨어를 도입해야 합니다 koa-router

npm install koa-router -S
로그인 후 복사

가져올 때 주의하셔야 할 점 koa-router를 사용하려면 끝에 대괄호를 추가해야 합니다.

const router = require('koa-router')();
로그인 후 복사

와 동일:

const koaRouter = require('koa-router');
const router = koaRouter();
로그인 후 복사

라우팅 파일을 저장할 경로 디렉터리를 생성하고 해당 디렉터리에 index.js를 생성합니다.

// routes/index.js

const fs = require('fs');
const router = require('koa-router')()

router.get('/index', async (ctx, next) => {
 ctx.type = 'text/html';
 ctx.body = fs.createReadStream('./views/index.html');
});

module.exports = router
로그인 후 복사

다음을 사용할 수도 있습니다. 파일의 모든 인터페이스에 baseUrl을 추가하려면 여기에 prefix 메서드를 추가하세요

// router.prefix('/about')

Modify app.js

// app.js

const Koa = require('koa');
const app = new Koa();

const index = require('./routes/index')
app.use(index.routes(), index.allowedMethods())

app.listen(3000);
로그인 후 복사

위의 allowedMethods를 사용하면 요청 메서드를 확인하는 데 사용됩니다. get 인터페이스에 액세스하기 위한 게시물 요청은 직접 실패를 반환합니다

또한 URL에 변수를 추가한 다음 Context.params.name

router.get('/about/:name', async (ctx, next) => {
 ctx.body = `I am ${ctx.params.name}!`;
});
로그인 후 복사

3을 통해 액세스할 수도 있습니다. 위 색인에서. .html, CSS 등 정적 리소스를 도입해야 한다면 koa-static

npm install koa-static -S
로그인 후 복사
를 사용해야 합니다

정적 리소스를 저장할 public 디렉터리를 생성합니다

그런 다음 app.js에 추가합니다. 다음 코드

const static = require('koa-static');
// 将 public 目录设置为静态资源目录
const main = static(__dirname + '/public');
app.use(main);
로그인 후 복사

실제로 이 세 줄의 코드도 최적화할 수 있습니다

app.use(require('koa-static')(__dirname + '/public'));
로그인 후 복사

그러면 해당 파일을 index.html

Four.템플릿 엔진

위 라우팅에서는 fs 모듈을 직접 사용합니다. html 파일 읽기

개발할 때 페이지를 렌더링하려면 koa-views 미들웨어를 사용하는 것이 좋습니다

npm install koa-views -S
로그인 후 복사

views 디렉터리를 app.js의 템플릿 디렉터리로 설정

const views = require('koa-views')
app.use(views(__dirname + '/views'));
로그인 후 복사

그런 다음 라우팅 파일에서 렌더링 메서드

// routes/index.js

const router = require('koa-router')()

router.get('/index', async (ctx, next) => {
 await ctx.render('index');
});

module.exports = router
로그인 후 복사

를 사용할 수 있습니다. 위의 방법은 html 파일을 직접 렌더링하는 방법입니다. 템플릿 엔진을 도입하고 싶다면 확장 필드를 추가하여 템플릿 유형을 설정하면 됩니다

app.use(views(__dirname + '/views', {
 extension: 'pug' // 以 pug 模版为例
}))
로그인 후 복사

5. 결론

Express가 웹스톰이라면 Koa는 숭고합니다

Express가 대중화되자 많은 개발자들로부터 Express의 복잡한 종속성이 비난을 받았습니다

그래서 Express 팀은 Express를 가장 기본적인 뼈대까지 분해하여 개발자들이 직접 조립하게 했습니다. 이것이 바로 Koa

입니다.

글에서 언급했듯이 처음부터 시작하는 것은 너무 번거롭습니다. 스캐폴딩 koa-generato를 사용하면 빠르게 개발할 수 있습니다

하지만 Koa에 익숙해진 후 자신의 프로젝트에 적합한 스캐폴딩을 구축하는 것이 좋습니다

위 내용은 다음과 같습니다. 내가 당신을 위해 정리한 내용 네, 그것이 미래에 모든 사람에게 도움이 되기를 바랍니다.

관련 글 :

express와 koa의 사용 비교(상세 튜토리얼)

Vue에서 처음으로 스타일러스 설치 방법 사용(상세 튜토리얼)

Vue 프레임워크에서 관련 상품 컴포넌트 개발

위 내용은 Koa를 사용하여 Node.js를 통해 프로젝트 빌드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Node V8 엔진의 메모리와 GC에 대한 자세한 그래픽 설명 Node V8 엔진의 메모리와 GC에 대한 자세한 그래픽 설명 Mar 29, 2023 pm 06:02 PM

이 기사는 NodeJS V8 엔진의 메모리 및 가비지 수집기(GC)에 대한 심층적인 이해를 제공할 것입니다. 도움이 되기를 바랍니다.

Node의 메모리 제어에 관한 기사 Node의 메모리 제어에 관한 기사 Apr 26, 2023 pm 05:37 PM

Non-Blocking, Event-Driven 기반으로 구축된 Node 서비스는 메모리 소모가 적다는 장점이 있으며, 대규모 네트워크 요청을 처리하는데 매우 적합합니다. 대규모 요청을 전제로 '메모리 제어'와 관련된 문제를 고려해야 합니다. 1. V8의 가비지 수집 메커니즘과 메모리 제한 Js는 가비지 수집 기계에 의해 제어됩니다.

최고의 Node.js Docker 이미지를 선택하는 방법에 대해 이야기해 볼까요? 최고의 Node.js Docker 이미지를 선택하는 방법에 대해 이야기해 볼까요? Dec 13, 2022 pm 08:00 PM

Node용 Docker 이미지를 선택하는 것은 사소한 문제처럼 보일 수 있지만 이미지의 크기와 잠재적인 취약점은 CI/CD 프로세스와 보안에 상당한 영향을 미칠 수 있습니다. 그렇다면 최고의 Node.js Docker 이미지를 어떻게 선택합니까?

Node.js 19가 공식적으로 출시되었습니다. Node.js의 6가지 주요 기능에 대해 이야기해 보겠습니다! Node.js 19가 공식적으로 출시되었습니다. Node.js의 6가지 주요 기능에 대해 이야기해 보겠습니다! Nov 16, 2022 pm 08:34 PM

Node 19가 정식 출시되었습니다. 이 글에서는 Node.js 19의 6가지 주요 기능에 대해 자세히 설명하겠습니다. 도움이 되셨으면 좋겠습니다!

Node의 파일 모듈에 대해 자세히 이야기해 보겠습니다. Node의 파일 모듈에 대해 자세히 이야기해 보겠습니다. Apr 24, 2023 pm 05:49 PM

파일 모듈은 파일 읽기/쓰기/열기/닫기/삭제 추가 등과 같은 기본 파일 작업을 캡슐화한 것입니다. 파일 모듈의 가장 큰 특징은 모든 메소드가 **동기** 및 ** 두 가지 버전을 제공한다는 것입니다. 비동기**, sync 접미사가 있는 메서드는 모두 동기화 메서드이고, 없는 메서드는 모두 이기종 메서드입니다.

Node의 이벤트 루프에 대해 이야기해 봅시다. Node의 이벤트 루프에 대해 이야기해 봅시다. Apr 11, 2023 pm 07:08 PM

이벤트 루프는 Node.js의 기본 부분이며 메인 스레드가 차단되지 않도록 하여 비동기 프로그래밍을 가능하게 합니다. 이벤트 루프를 이해하는 것은 효율적인 애플리케이션을 구축하는 데 중요합니다. 다음 기사는 Node.js의 이벤트 루프에 대한 심층적인 이해를 제공할 것입니다. 도움이 되기를 바랍니다!

pkg를 사용하여 Node.js 프로젝트를 실행 파일로 패키징하는 방법에 대해 이야기해 보겠습니다. pkg를 사용하여 Node.js 프로젝트를 실행 파일로 패키징하는 방법에 대해 이야기해 보겠습니다. Dec 02, 2022 pm 09:06 PM

nodejs 실행 파일을 pkg로 패키징하는 방법은 무엇입니까? 다음 기사에서는 pkg를 사용하여 Node 프로젝트를 실행 파일로 패키징하는 방법을 소개합니다. 도움이 되기를 바랍니다.

노드가 npm 명령을 사용할 수 없으면 어떻게 해야 합니까? 노드가 npm 명령을 사용할 수 없으면 어떻게 해야 합니까? Feb 08, 2023 am 10:09 AM

노드가 npm 명령을 사용할 수 없는 이유는 환경 변수가 올바르게 구성되지 않았기 때문입니다. 해결 방법은 다음과 같습니다. 1. "시스템 속성"을 엽니다. 2. "환경 변수" -> "시스템 변수"를 찾은 다음 환경을 편집합니다. 3. nodejs 폴더의 위치를 ​​찾습니다. 4. "확인"을 클릭합니다.

See all articles