inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실습 UI 개발로 배워보는 순수 javascript 와 VueJS 개발

추천 검색어 구현 1

getSearchResultsHTML VS getKeywordsHtml

273

쓰리윤빠

작성한 질문수 1

1

안녕하세요, 제목에 있는 2개 함수의 구현이 유사한데요,

전자는 데이터가 바인딩된 html 문자열을 다시 메소드로 분리하여 리턴하였고,

후자는 문자리터럴 그대로 html변수에 담아 리턴하였는데요, 어떤 이유가 있나요?

더 나은 코드는 무엇이며 왜 더 나은 지 알 수 있을까요?

MVC모델로 뭔가 작업하는 게 처음이라서,, 뭔가 잘게잘게 쪼개서 함수의 역할을 분리하는 것 같은데

어떤 기준으로 그렇게 되는 것인지 모르겠어서 질문 올립니다.

getSearchResultsHTML

ResultView.getSearchResultsHTML = function (data) {

return data.reduce((html, item) => {

html += this.getSearchItemHtml(item)

return html

}, '<ul>') + '</ul>'

}

ResultView.getSearchItemHtml = function (item) {

return `<li>

<img src="${item.image}" />

<p>${item.name}</p>

</li>`

}

getKeywordsHtml

KeywordView.getKeywordsHtml = function (data) {

return data.reduce((html, item, index) => {

html += `<li data-keyword="${item.keyword}"><span class="number">${index + 1}</span>${item.keyword}</li>`

return html

}, '<ul class="list">') + "</ul>"

}

javascript vuejs

답변 1

2

김정환

추천검색어는 하나의 함수 getKeywordsHtml 만 호출했느데, 검색결과는 getSearchResultsHtml, getSearchItemHtml 두개로 쪼겠느냐는 질문이시죠?

검색결과가 비교적 html이 많아서 함수로 분리한 것 뿐입니다. getKeywordsHtml도 분리하게 되면 좀 더 그럴듯한 코드가 될것 같네요.

KeywordView.getKeywordsHtml = function (data) {

return data.reduce((html, item, index) => {

html += this.getKeywordItemHtml(item, index)

return html

}, '<ul class="list">') + "</ul>"

}

KeywordView.getKeywordItemHtml = function (item, index) {

return `<li data-keyword="${item.keyword}">

<span class="number">${index + 1}</span>${item.keyword}

</li>`

}

강사님, 브랜치명 어떻게 만드셨어요?

2

209

1

이미지 파일 업데이트가 안돼있는 거 같습니다

1

502

1

git사용법을 잘 모르겠습니다..

1

495

1

@event 질문입니다.

1

254

1

return 문자열이 여러줄은 어떻게 설정하나요?

1

646

2

탭뷰에서 이벤트를 받아서 메인컨트롤러에게 전달만해주는 방식도 괜찮나요?

1

257

1

ResultComponent.vue 에러?

1

251

1

선생님 안녕하세요!

0

247

1

return new Promise 와 return Promise.resolve

2

474

1

바닐라

1

320

1

실습 관련 질무

1

248

1

event.preventDefault() 문의

1

291

1

컴퍼넌트 질문이 있습니다.

0

210

1

return this에 대해서 (재업로드)

0

355

1

return this에 대해서 이해가 잘 되지 않아요

0

1175

1

강의 내용을 따라 했는데도 안되는 문제

1

309

2

크롬으로 로컬 띄었더니 에러가나네요

1

323

0

에러가 나네요

1

329

2

git checkout 중에 질문드립니다.

1

302

1

bindEvent 메소드를 왜추가하는지 궁금해서 질문드립니다.

2

576

1

안녕하세요 vue.js 처음 입문하는데 강사님 강의로 시작하게 되었습니다.

0

217

1

index 페이지에서 main.js 관련 질문입니다

1

203

1

학습내용 정리 관련 질문입니다!

0

179

1

lite-server로 구현해야하는 이유는 무엇인가요~?

1

522

2