이 글은 주로 Koa2를 사용하여 웹 프로젝트를 구축하는 방법을 소개합니다. 편집자는 꽤 좋다고 생각해서 지금 공유하고 참고용으로 제공하겠습니다. 편집자를 따라 살펴보겠습니다. 모두에게 도움이 되기를 바랍니다.
Node.js의 인기가 높아짐에 따라 다양한 프레임워크가 속속 등장하기 시작했고, 점차 서버 요청을 처리하는 시나리오에 Node.js가 적용되기 시작했습니다. 웹 프로젝트 구축을 위한 프레임워크(express, koa, koa2, egg 등)도 나타나기 시작했습니다. 물론 품질을 이해하려면 소스 코드를 직접 읽어야 합니다. 이 글에서는 소스코드는 다루지 않고 초보자들이 Koa2의 기본적인 사용법을 간략하게 이해할 수 있도록 안내할 것입니다. 댓글을 통해 누구나 서로 소통하고 배울 수 있습니다.
참고: koa2는 ES7 구문을 사용하므로 사용 시 Node 버전을 최신 버전으로 업그레이드하시기 바랍니다. 자세한 소스 코드 정보는 git의 koajs/koa를 참조하세요
1. 프로젝트 디렉터리 구조
2. 패키지 구조 파일
[ package.json]
{ "name": "weixin-node-koa", "version": "1.0.0", "description": "node.js with koa2", "private": true, "dependencies": { "koa": "^2.0.0", "koa-router": "^7.0.0", "mysql":"2.13.0" }, "scripts": { "start": "node app.js" }, "engines": { "node": ">=6.0.0" }, "author": "Fly", "license": "CENTERM" }
2.2. 항목 파일 시작
[app.js]
const Koa = require('koa'); const app = new Koa(); const router2controller = require('./app/router2controller.js'); const config = require('./config/config.local.js'); app.use(router2controller()); app.listen(config.port); console.log("Server started and listen on port " + config.port);요청한 메시지 본문이 XML 형식인 경우 다음 코드를 추가할 수 있습니다. 자동으로 메시지를 구문 분석합니다(참고: 인용된 koa-xxx 버전은 koa2와 일치해야 합니다)
const Koa = require('koa'); const app = new Koa(); const router2controller = require('./app/router2controller.js'); const config = require('./config/config.local.js'); //start接收到的xml数据请求单独解析存储 const xmlParser = require('koa-xml-body'); app.use(xmlParser()).use((ctx,next) => { ctx.data = ctx.request.body; return next(); }); //end app.use(router2controller()); app.listen(config.port); console.log("Server started and listen on port " + config.port);코드에서 router2controller.js 파일이 도입된 것을 볼 수 있습니다. 이 파일은 전면에서 라우팅 프로세스입니다. 특정 처리 방법에 대한 요청 종료
[router2controller.js]이 클래스는 컨트롤러 폴더의 파일을 자동으로 스캔하여 요청 매핑을 개별적으로 구성할 필요가 없습니다.
koa-router는 다음과 같은 방법을 제공합니다 ]
***Controller.js는 특정 요청 정보를 처리하고 데이터를 반환하는 데 사용되며, userController.js는 사용자 정보를 얻기 위해 GET 요청을 처리하고, 사용자 정보를 저장하기 위해 POST 요청을 처리합니다
router .get('/', async (ctx,next) => { this.body = 'Hello World!'; }) .post('/users', async (ctx,next) => { //TODO }) .put('/users/:id', async (ctx,next) => { //TODO }) .del('/users/:id', async (ctx,next) => { //TODO });
는 ***Dao.js에서 얻은 데이터를 처리하고 캡슐화합니다. 컨트롤러로 돌아가기
const fs = require('fs'); const router = require('koa-router')(); function addMapping(router, mapping) { for (var url in mapping) { if (url.startsWith('GET ')) { var path = url.substring(4); router.get(path, mapping[url]); console.log(`register URL mapping: GET ${path}`); } else if (url.startsWith('POST ')) { var path = url.substring(5); router.post(path, mapping[url]); console.log(`register URL mapping: POST ${path}`); } else if (url.startsWith('PUT ')) { var path = url.substring(4); router.put(path, mapping[url]); console.log(`register URL mapping: PUT ${path}`); } else if (url.startsWith('DELETE ')) { var path = url.substring(7); router.del(path, mapping[url]); console.log(`register URL mapping: DELETE ${path}`); } else { console.log(`invalid URL: ${url}`); } } } function addControllers(router, dir) { fs.readdirSync(__dirname + '/' + dir).filter((f) => { return f.endsWith('.js'); }).forEach((f) => { console.log(`process controller: ${f}...`); let mapping = require(__dirname + '/' + dir + '/' + f); addMapping(router, mapping); }); } module.exports = function (dir) { var controllersDir = dir || 'controller'; addControllers(router, controllersDir); return router.routes(); };2.6 데이터 수집
들어오는 매개변수를 요청하여 사용자 데이터를 가져옵니다
const userService = require('./../service/userService.js'); var getUserinfo = (ctx, next) => { let query = ctx.query; let userId = query.id; let userInfo = userService.getUserById(userId); let html = '<html><body>' + '<p> userinfo: ' + userInfo + '</p>' + '</body></html>'; ctx.response.type ='text/html'; ctx.response.body = html; }; var saveUserinfo = (ctx, next) => { const requestString = ctx.data; //TODO数据处理 Console.log(requestString); }; module.exports = { 'GET /getUserinfo': getUserinfo, 'POST /saveUserinfo': saveUserinfo };2.7. 데이터베이스 작업
데이터베이스 연결 풀 제어, 연결 설정 및 해제 관리, Dao가 시작한 데이터베이스 작업 요청 실행이 포함됩니다. ㅋㅋㅋ nodejs에서
위 내용은 Node는 Koa2를 사용하여 웹 프로젝트를 구축합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!