본문 바로가기

공부/Node.js

(24)
[Node.js] Node.js 교과서 중간 후기 정확하게 8장까지 끝을 냈다. 일단 Do it보다는 훨씬 좋은 책이라는 느낌이 안들 수가 없다. 기본적으로 코드를 왠만하면 생략하지않고 쭉 따라갈 수 있게 만들었다. 물론 내가 어느정도 Node.js에 익숙해져서 그런걸지도 모르지만... 아무튼 좋다면 좋다고 말할 수 있다. 물론 개정 2판이라는 이미 검수를 한 책을 다시 검수한 책이고 최신판이니 더더욱 완성도는 높을 수 밖에 없지않을까 싶다.만... 백 엔드든 프론트 엔드든 내가 이때까지 배웠던 C++이나 Java 혹은 C#과의 차이가 너무나도 명확해서 그런가 사실 익숙해지는데 쉽지 않다... 일단 중간까지 왔다. 중간까지는 확실한 길라잡이였다. Node.js의 개념과 동작구조, 새로운 문법, 노드 내장 객체, 노드 내장 모듈, 예외처리, 이벤트 사용,..
[Node.js] 시퀄라이즈 (3) 이번에는 앞에서 설정한 시퀄라이즈를 토대로 CRUD를 워크벤치나 MySql에서가 아니라 노드에서 하는 코드를 따로 적어보려고 합니다. INSERT INTO nodejs.users (name, age, married, comment) VALUES ('zero', 24, 0, '자기소개1'); //MySql 쿼리 const { User } = require('../models'); User.create({ name: 'zero', age: 24, married: false, comment: '자기소개', }); //Sequelize로 대체 create함수를 사용해서 MySql에서 사용하는 INSERT INTO을 대체할수 있습니다. User가 미리 선언되어 있다는 가정하에 밑에서 코드를 적어보도록 하겠습니다...
[Node.js] 시퀄라이즈 (2) 설마 MySql에서 2개의 포스팅을 하게 될 줄은 몰랐네요 코드가 조금씩 길어지다보니 이렇게 되었지만 데이터베이스는 아주 중요하니 충분히 길게 적어도 좋을 것 같습니다. ... static associate(db) { db.User.hasMany(db.Comment, { foreignKey : 'commenter', sourceKey : 'id'}); } ... 이 코드는 User의 코드로 1 : N의 관계에서 hasMany는 1 -> N의 관계를 표현합니다. 반대로 1 comment로 들어가기 때문에 comment에 belongsTo를 달아주면 됩니다. 저장 후 npm start를 하면 로그에서 위와 같은 것을 볼 수 있는데 시퀄라이즈가 스스로 실행하는 SQL 문입니다. hasMany : 1 : M 에..
[Node.js] 시퀄라이즈 (1) 책에서 이번에는 Mysql연동에 대해서 이야기를 하던 와 중 '시퀄라이즈'라는 것이 언급되었습니다. 이전에는 C#과 같이 MySql을 사용했었지만 이번에는 node에서 사용하다보니 조금 더 쉽게 사용가능하도록 만든 거 같습니다. 일단 npm init으로 생성한 package.json을 저렇게 바꿔주었다. main과 스크립트의 start만 대충 시작해보았습니다. npx sequelize init 을 하니 갑자기 폴더가 여러개 생기면서 다운 받아지고 models의 index.js에도 상당한 양의 코드가 있었는데 불필요한 코드는 제거했습니다. const Sequelize = require('sequelize'); const env = process.env.NODE_ENV || 'development'; con..
[Node.js] 넌적스 오늘 뷰 엔진 종류를 두 가지 알게 되었다. 하나는 퍼그라고 HTML에 아주 간략화한 형태의 엔진이고 하나는 넌적스라고 해서 기본적인 HTML 형식에서 조금 더 발전해서 다양한 기능을 사용할 수 있는 엔진이다. 일단 내가 보고 있는 책의 기본적인 예제 진행방식을 넌적스로 잡았기 때문에 넌적스에 관해서 간단하게 포스팅해보겠다. 넌적스는 퍼그의 HTML 문법 진화에 적응하기 힘든 사람에게 적합한 엔진으로 파이어폭스를 만든 모질라에서 만들었다. 연결 const nunjucks = require('nunjucks') ... app.set('port', process.env.PORT || 3000); app.set('view engine', 'html'); nunjucks.configure('view', { ex..
[Node.js] REST REST(REpresentational State Transfer)의 줄임말이며, 서버의 자원을 정의하고 자원에 대한 주소를 지정하는 방법을 가리킨다. html, css 등과 같이 파일의 주소를 가리키는 역할을 한다고 보면 될 것 같다. HTTP의 메소드로 책에서는 총 6가지를 알려준다. GET : 서버 자원을 가져오고 싶을 때 사용 POST : 서버에 자원을 새로 등록하고자 할 때 사용 PUT : 서버의 자원을 요청에 들어 있는 자원으로 치환하고자 할 때 사용 PATCH : 서버 자원의 일부만 수정하고자 할 때 사용 DELETE : 서버의 자원을 샂게하고자 할 때 사용 OPTIONS : 요청을 하기 전에 통신 옵션을 설명하기 위해 사용 이 메소드들을 통해서 통신을 할 때 어떤 목적인지에 대해서 유추가 ..
[Node.js] 버퍼와 스트림 이전에 배웠던 언어들에서 주구장창 사용해왔지만 아직 정확하게 이해는 가지 않는 버퍼와 스트림에 대해서 확실하게 짚고 넘어갈겸 포스팅을 한다. 버퍼 그림으로 그리면 대충 이런 느낌인데 노드에서는 데이터를 전송할 때 버퍼에 저장해서 이 버퍼를 우리들이 다뤄서 데이터를 전송하는 방식이라고 한다. const buffer = Buffer.from('저를 버퍼로 바꿔보세요'); console.log('from()', buffer); console.log('length:', buffer.length); console.log('toString():', buffer.toString()); const array = [Buffer.from('띄엄 '), Buffer.from('띄엄 '), Buffer.from('띄어쓰기')..
[Node.js] 동기와 비동기 동기와 비동기에 관해서도 자세하게 설명이 되어있어 한 번 포스팅 해보려고 한다. 기본적으로 사용하는 메서드들은 대부분 비동기고 동기는 잘 없다. 아무래도 자원의 활용률이라던가 속도라던가 여러 부분에서 동기보다는 비동기가 좋아서 그런게 아닐까? 다만 둘 다 원한다면 사용은 가능하다. const readFile = require('fs'); const fs = require('fs'); console.log('시작'); fs.readFile('./readme2.txt', (err, data) => { if (err) {throw err;} console.log('1번',data.toString()); }); fs.readFile('./readme2.txt', (err, data) => { if (err) {..