Node.만약 js로 서버 측면을 조금 만들면 마이크로소프트가 좋다

ZEIT가 만든 마이크로소프트라는 노드.js의 프레임워크가 있어 사용하기에 매우 편리하다.

ZEIT가 그 넥스트야.js를 만들고, 몬고우스를 만든 사람과 소켓을 만든다.IO를 만든 사람이 소속되어 있어 믿음직스럽다.
그나저나 ZEIT는 Now, Node입니다.또한 js(및 Doke rized)를 이동할 수 있는 서버 없는 서비스도 제공합니다.
ZEIT(시)와 Now(현재)의 세계관이 좋다.
걸음걸이가 빠르고 편하다.
[추기]
무엇 위에 마이크로소프트 8이라고 쓰여 있는데, 처음에는 이 이름의 틀인 줄 알았는데, 실제로는 8이 버전 이름인데, 마치 마이크로소프트인 것 같다.현재 버전은 9입니다.
이 가능하다, ~할 수 있다,...
(추서)

Features


README의 피처스가 아니라 개인의 의견입니다.
  • Express보다 이해하기 쉽습니다
  • 고속 부팅/재부팅
  • async/await 추천
  • 테스트는 쓰기 쉬울 것 같다
  • 알기 쉬운 오류 처리
  • 고급 함수를 통해 중간부품 제작
  • https://zeit.co/blog/micro-8
  • 단, Explicit를 중시하는 사상이기 때문에 남용을 권장하지 않는다
  • 좋은 느낌에 사용 가능
  • https://github.com/zeit/micro/issues/8#issuecomment-178362486
  • 기본 지원 JWT 토큰 인증
  • 에코 시스템 괜찮아 보여요.
  • https://github.com/apollographql/apollo-server#zeit-micro
  • 문서는 없지만 Example은 충실합니다.
  • https://github.com/amio/awesome-micro
  • 각각 알기 쉽다
  • Starter Projecthttps://github.com/zeit/micro/tree/master/examples 있음
  • 여기 코드https://github.com/littleStudent/micro-authentication-starter도 참고할 수 있어요.
  • 그리고 ZEIT의 블로그를 보고 웃는다
  • Type Script도 지원되는 것 같습니다.
    https://github.com/zeit/micro/issues/74
  • Setup

    yarn add micro
    yarn add -D micro-dev
    

    Hello World


    index.js
    const { json } = require('micro')
    
    module.exports = async (req, res) => {
        const body = await json(req)
        console.log(body)
        return 'hello'
    }
    
    에서 오다
    yarn micro-dev
    
    서버를 빠르게 시작합니다.

    로그 표시 실패


    주문한 일지는 이런 느낌이다.micro-dev를 시작하면 저장할 때마다 고속으로 재부팅됩니다.멋있다
    $ curl -X GET http://localhost:3000 --data '{"name":"kazuya"}'
    
    https://github.com/zeit/micro/pull/241
    잘못된 표시도 보기 쉽다.

    요구 내용(body 등)도 로그에 표시되기 때문에 간단하고 편리하다.

    Express 등에도 프로그램 라이브러리가 있는데 긴급한 상황이 있으면 적당한 중간부품을 쓰면 문제없지만 이런 부분은 기본적으로 들어와 주시면 감사하겠습니다.

    생태계


    Node.js처럼 각 기능이 분할됩니다.다음 내용을 사용해 보았습니다.
  • microrouter
  • micro-upload
  • apollo-server-micro
  • micro-jwt-auth
  • microrouter


    함수형처럼 루트를 선언적으로 쓸 수 있다.이런 느낌은 분할할 수 있다.
    const { get, post, router } = require('microrouter')
    
    function users() {
        return User.get()
    }
    
    module.exports = router(
      get('/', () => 'hello'),
      get('/users', users),
      post('/users', createUser()),
      () => 'not found',
    )
    

    micro-upload


    아주 간단합니다.여기까지 정리했습니다.

    apollo-server-micro


    특히 어려운 것을 고려하지 않아도 그래피큐어의 서버를 만들 수 있다.가장 작은 예는 바로 이런 느낌이다.
    index.js
    const { makeExecutableSchema } = require('graphql-tools')
    const { microGraphql } = require('apollo-server-micro')
    
    const users = [
      { id: 1, name: 'bob' },
      { id: 2, name: 'alice' },
    ]
    
    const schema = makeExecutableSchema({
      typeDefs: `
        type User {
          id: Int
          name: String
        }
    
        type Query {
          users: [User]
        }
      `,
      resolvers: {
        Query: {
          users: () => users,
        },
      },
    })
    
    module.exports = router(
      get('/', () => 'hello'),
      post('/graphql', microGraphql({ schema })),
    )
    
    GraphiQL로만 만들려고 하면 라우팅에 대한 의식이 줄어들기 때문에 코드상 마이크로소프트나 Express 모두 별다른 변화가 없을 수 있다.

    micro-jwt-auth


    여기까지 정리했습니다.

    감상


    익스프레스에서 같은 일을 하려면 익스프레스 외에 바디파서와 노드몬이 필요하지만 처음부터 이런 느낌이 든다.
    그냥 헬로월드가 하면 뭐라 하는 것 같아서 일단 쓰고 기사를 쓰려고요.

    좋은 웹페이지 즐겨찾기