기본 콘텐츠로 건너뛰기

요즘 Node에 대해 공부 중이다.

요즘 Node에 대해 공부 중이다.

예전부터 조금씩 익혀오긴 했지만 본격적으로 Node 서버에 대해 샘플 프로그램을 작성해 보고 있다. 일반적으로 Mean(MongoDB + Express + angular.js+ NodeJS) 스택을 사용하는데, angular.js 가 익숙하지 못해 MongoDB + Express + Nodejs 까지만 적용해 봤다. 처음 시작할 때는 Javascript 에 대해서 익숙하고 Django를 하다보니 서버쪽도 많이 해봤고, cassandra 로 개발을 해봤기에 NoSQL 경험도 있기에 쉽게 생각했는데......

누군가 나처럼 Django에서 NodeJS 를 공부하는 사람들을 위해 몇가지 기록을 남긴다.

Django 로 개발할 때는 Eclipse + PyDev 를 주력으로 사용했는데, Node 의 경우 Eclipse 가 편하지 않았다. 세팅 환경 잡기도 어려웠다. 물론 내가 제대로된 가이드를 찾지 못해서가 원인 일 수도 있다. 어째든 vscode 로 환경을 설정했는데, 크게 불편하지는 않았다. (물론 난 vscode 로 파이썬을 개발하기도 한다. )

Django 를 주력으로 사용했던 사람이다 보니 뭔가 맨바닥에서 부터 시작한다는 느낌이 드는 것 같았다. Django 의 경우 UserModel 을 기본적으로 제공하는데 Express의 경우 그런게 따로 없다. 그래도 라이브러리가 있는데 Passport.js(http://www.passportjs.org/) 가 가장 많이 사용하는 것 같았다. 그리고 local에서 mongoDB 까지 User 를 생성하려면 아무래도 passport + passport-local + passport-local-mongoose 를 이용하는게 편하다. https://github.com/saintedlama/passport-local-mongoose 에 있는 test 내용을 잘 참고해서 환경을 구축하는게 좋은 것 같다.

Express 템플릿 엔진은 jade 와 ejs 가 있는데 HTML 에 익숙한 사람이라면 ejs 가 더 편하다. Jade 의 경우 기존 HTML 형태가 아니라 새로운 형태로 만들어야 한다. (물론 ejs 도 몇가지 자체 문법이 있다. )

내 경우, Bootstrap 템플릿을 이용해서 HTML 쪽을 구현하는 편이데, HTML 을 수시로 Copy & Paste 하는데 익숙하다보니 내가 개발하는 속도 상에서 너무 차이가 나서 ejs 를 사용했다. (물론 angular.js 를 사용한다면 딱히 템플릿엔진이 필요 할 수 없을 것 같다. )

MongoDB의 경우 모델링 개념 잡는데 조금 어려움을 겪었고, 그리고 그 데이터를 Query 하는데 더 많은 어려움을 겪었다. 모델링보다 Query 구문 만드는게 더 어렵다. 물론 Query 하나하나는 그렇게 까지 어렵지 않은데(물론 오타같은 것은 눈에 안 익어서 고치는게 오래걸린다... 이것 내 머리와 손의 문제다.... 그리고 에러 문구에 익숙해지는 것도 신기술을 배울 때 어쩔 수 없기 겪어야 하는 절차겠지....) 최적화해서 한 방에 Query 짜는 것은 기능을 모두 알지 못해 오래 걸리고 있다. 뭐, 이건 SQL 쪽에서 Query 최적화와 마찬가지니 계속 익혀나가는 수 밖에 없을 것 같다.

어느정도 샘플이 작성된다면 Git 에 올리도록 하겠다.

from http://yiunsr.tistory.com/755 by ccl(S) rewrite - 2020-03-06 19:54:53

댓글

이 블로그의 인기 게시물

[django] django rest framework 로그인 과정 | 장고 로그인 | 인증...

[django] django rest framework 로그인 과정 | 장고 로그인 | 인증... django 는 기능이 참 너무 많다 ^^; 지금은 서버는 django로, 프론트는 angular를 붙여서 간단한 웹을 만들어 보려고 한다. 웹 만들때 항상 회원가입/로그인 기능은 맨 앞에 구현한다. 어떻게 구현하면 좋을까... 찾아보다가 이 기능을 구현할 수 있는 방법이 너무 많아서 정보를 찾기 더 어려웠다. 일단 나는 django에서 django rest framework라는 것을 사용해서 API를 만드려고 한다. 순수 django 튜토리얼에는 바로 template 랑 연결해서 설명하는 부분이 많았다. 나는 그냥 API 만 만들고 싶다고!! 그래서 찾은 것이 django REST framework. https://www.django-rest-framework.org/api-guide/authentication django REST framework 설치 using pip pip install djangorestframework settings.py INSTALLED APPS 에 추가해야함 INSTALLED_APPS = [ ... 'rest_framework', ] django REST framework 에서도 인증 관련해서 제공하는 것이 1개가 아닌 여러 개다. 나는 그중에 TokenAuthentication을 이용해서 로그인을 구현해 보려고 한다. TokenAuthentication Token authentication is appropriate for client-server setups, such as native desktop and mobile clients. 이렇게 나와있어서 내가 하려는 것과 일치해서 이걸로 결정 ~ 솔직히 처음 로그인을 구현하려고 하면 도대체 그 과정이 어떻게 되는지 모를 수 도 있다. 나는 쉽게 정리하면 아래와 같은 과정이라고 생각한다. 로그인 로그아웃...

(주)레터플라이 채용 정보: 프로그래밍을 생각하면 가슴이 뛰는 개발자...

(주)레터플라이 채용 정보: 프로그래밍을 생각하면 가슴이 뛰는 개발자... Angular.js, Python, MySQL 중 한 가지 언어에 뛰어나신 분도 좋고 개발 업무 전반적으로 센스가 있으신 분도 환영합니다. 맡은 업무를 성실하게 수행해 나갈 수 있는 책임감과 태도를 갖고계신 분, 그리고 항상 새로운 방법론에 도전하고 포기를 모르는 분일수록 저희와 더욱 잘 맞을 것 같습니다. Angular.js, Python, MySQL 중 한 가지 언어에 뛰어나신 분도 좋고 개발 업무 전반적으로 센스가 있으신 분도 환영합니다. 팀 내 뛰어난 풀스택 개발자분들이 Angular.js, Python, MySQL 모두 작업 가능하시니 오셔서 함께 배우며 즐겁게 작업하시면 됩니다. 맡은 업무를 성실하게 수행해 나갈 수 있는 책임감과 태도를 갖고계신 분, 그리고 항상 새로운 방법론에 도전하고 포기를 모르는 분일수록 저희와 더욱 잘 맞을 것 같습니다. 개발 업무: 레터플라이의 핵심 기능인 편지, 사진을 제작하는 레터에디터, 포토에디터 개발. 이 기능들은 "모바일 웹을 통한 출력제품 생산 자동화 기술"(특허 출원 준비중)로서 레터플라이에서 자체개발했습니다. 근무 지역: 광화문역 5번출구 바로 앞 근무 환경: 책임과 존중을 중요시하는 수평적인 분위기, 도전적이며 서로에게 배우는 문화 근무 시간: 10-19시, 출근시간 자유 지정. 급여: 연봉/스톡옵션 협의 지원 방법: 팀 지원하기 더 많은 내용은 더 많은 내용은 더팀스 에서 확인하세요! from http://theteams.tistory.com/721 by ccl(A) rewrite - 2020-03-20 09:20:18

jqxGrid 정렬, 필터 메뉴 숨기기

jqxGrid 정렬, 필터 메뉴 숨기기 How I can remove filter to particular grid column - Angular, Vue, React, Web Components, Javascript, HTML5 Widgets Hi, I tried that it's working. I set properties to those columns as sortable: false, filterable: false. but when I clicked on the column one drop down is appearing with options "sort ascending", "sort descending", "remove sort" and those are all in disable www.jqwidgets.com from http://devesim.tistory.com/90 by ccl(A) rewrite - 2020-03-11 04:20:29