반응형

참조사이트

 

비슷해보이지만 뭔가 나오면 또 궁금해지기 마련.

문법적으로는 약간 차이가 있긴 한것 같지만 뭐라도 하나 만들어봐야 체감이 클듯.

 

 

 

비교 요약


1. 성능
    Bun : 초당 110,000 요청 처리 가능. 동시 연결 처리에 강함  ( 높으면 좋은것 ? )
    Node.js : 초당 60,000 요청 처리
    Deno : 초당 67,000 요청 처리​​

 

2. 보안 및 의존성 관리
    Deno : 샌드박스 환경을 기본으로 사용
    Node.js : 최근 보안 모델 도입
    Bun : 권한 모델 미도입, 'trustedDependencies' 기능 도입​​​​

 

3. 커뮤니티 및 생태계
    Node.js : 가장 큰 커뮤니티와 풍부한 생태계
    Deno : 작지만 빠르게 성장하는 커뮤니티
    Bun : 초기 단계 커뮤니티, 개발자 수 증가 중​​

 

4. JavaScript 엔진
    Node.js와 Deno : V8 JavaScript 엔진 사용
    Bun : JavaScriptCore 엔진 사용​​. 빠른 시작이 목표 
   

5. TypeScript 및 JSX 지원
    Node.js : 외부 의존성 필요 ( NPM 설치해서 하는것 귀찮았는데 )
    Deno와 Bun : 내장 지원, 별도 변환 단계 없음​​
   

6. 모듈 시스템
    Node.js : CommonJS 및 ES 모듈 지원  ( require )
    Deno : 표준 준수 ECMAScript 모듈 사용 ( import )
    Bun : 중앙 집중식 패키지 관리자, NPM 패키지 호환​​​​   ( import )

 

 

NODEJS 예제 : Express와 MySQL 사용

더보기
import express, { Request, Response } from 'express';
import mysql from 'mysql2/promise';

const app = express();
app.use(express.json());

const db = await mysql.createConnection({
    host: 'localhost',
    user: 'yourUsername',
    password: 'yourPassword',
    database: 'yourDatabase'
});

const router = express.Router();

router.get('/login', async (req: Request, res: Response) => {
    const { userID, userPass } = req.query;
    const [results] = await db.execute('SELECT * FROM userData WHERE userID = ? AND userPass = ?', [userID, userPass]);
    res.json({ success: results.length > 0 });
});

app.use(router);

app.listen(3000, () => {
    console.log('Server running on port 3000');
});

 

 

DENO  예제 : Oak와 MySQL 사용

더보기
import { Application, Router } from 'https://deno.land/x/oak/mod.ts';
import { Client } from 'https://deno.land/x/mysql/mod.ts';

const db = await new Client().connect({
    hostname: 'localhost',
    username: 'yourUsername',
    password: 'yourPassword',
    db: 'yourDatabase',
});

const router = new Router();

router.get('/login', async (context) => {
    const { userID, userPass } = context.request.url.searchParams;
    const users = await db.query('SELECT * FROM userData WHERE userID = ? AND userPass = ?', [userID, userPass]);
    context.response.body = { success: users.length > 0 };
});

const app = new Application();
app.use(router.routes());
app.use(router.allowedMethods());

await app.listen({ port: 3000 });

 

 

BUN 예제 : 챗GPT도 예제가 적다고 가정적 예제를 사용하네요

더보기
import { createConnection } from 'mysql2/promise';

const db = await createConnection({
    host: 'localhost',
    user: 'yourUsername',
    password: 'yourPassword',
    database: 'yourDatabase'
});

const router = async (req: Request) => {
    const url = new URL(req.url);
    const path = url.pathname;
    const userID = url.searchParams.get('userID');
    const userPass = url.searchParams.get('userPass');

    if (path === '/login') {
        const [results] = await db.execute('SELECT * FROM userData WHERE userID = ? AND userPass = ?', [userID, userPass]);
        return new Response(JSON.stringify({ success: results.length > 0 }));
    }
};

Bun.serve({
    fetch: router
});

 

 

반응형