Skip to content

[200116] mission005Β #10

@eastjun-dev

Description

@eastjun-dev

πŸͺ κ°€κ²Œ μ°ΎκΈ°

  • μ „κ΅­μ˜ κ°€κ²Œλ₯Ό μ‘°νšŒν•  수 μžˆλŠ” μ›ΉνŽ˜μ΄μ§€λ₯Ό λ§Œλ“­λ‹ˆλ‹€.

κΈ°λ³Έ μš”κ΅¬μ‚¬ν•­

1. 메인 화면을 κ΅¬ν˜„ν•©λ‹ˆλ‹€.

  • 메인 ν™”λ©΄μ—λŠ” 검색창, κ²€μƒ‰λœ 갯수, 검색λͺ©λ‘, νŽ˜μ΄μ§€λ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€.

2. κ°€κ²Œ 검색 κΈ°λŠ₯을 κ΅¬ν˜„ν•©λ‹ˆλ‹€.

  • ν™”λ©΄ μƒλ‹¨μ˜ κ²€μƒ‰μ°½μ—μ„œ κ°€κ²Œλ₯Ό 검색할 수 μžˆμŠ΅λ‹ˆλ‹€.
  • 검색어 μž…λ ₯ ν›„, enter ν‚€λ₯Ό λˆ„λ₯΄κ±°λ‚˜ 검색 λ²„νŠΌμ„ 클릭 μ‹œ κ²€μƒ‰λ©λ‹ˆλ‹€.
  • κ²€μƒ‰λœ λͺ©λ‘μ€ 번호, κ°€κ²Œλͺ…, μ£Όμ†Œλ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€.

3. νŽ˜μ΄μ§€λ₯Ό κ΅¬ν˜„ν•©λ‹ˆλ‹€.

  • 검색λͺ©λ‘μ€ ν•œνŽ˜μ΄μ§€λ‹Ή 10κ°œμ”© κ΅¬μ„±λ©λ‹ˆλ‹€.
  • νŽ˜μ΄μ§€λŠ” ν•œλ²ˆμ— 5κ°œκΉŒμ§€ λ³Ό 수 있으며, 이전과 λ‹€μŒλ²„νŠΌμœΌλ‘œ 이동가λŠ₯ν•©λ‹ˆλ‹€.

demopage


μΆ”κ°€ μš”κ΅¬μ‚¬ν•­

1. 검색 νžˆμŠ€ν† λ¦¬

  • 검색 νžˆμŠ€ν† λ¦¬μ— μžˆλŠ” 검색어λ₯Ό ν΄λ¦­ν•˜λ©΄ λ‹€μ‹œ κ²€μƒ‰λ©λ‹ˆλ‹€.
  • 졜근 검색어 5κ°œκΉŒμ§€ λ³΄μ—¬μ€λ‹ˆλ‹€.
  • 검색 νžˆμŠ€ν† λ¦¬λŠ” μ€‘λ³΅λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
  • 검색 νžˆμŠ€ν† λ¦¬λŠ” localStorage에 μ €μž₯되며, 첫 μ‹€ν–‰μ‹œ μ €μž₯된 졜근 검색어λ₯Ό λΆˆλŸ¬μ˜΅λ‹ˆλ‹€.

2. 검색 κ²°κ³Όκ°€ 느린 경우 μ²˜λ¦¬λ°©λ²•

  • 검색 κ²°κ³Όκ°€ 느리게 λ‚˜μ˜€λ„λ‘ μ„€μ •ν•©λ‹ˆλ‹€.
  • κ²°κ³Όκ°€ λ‚˜μ˜¬λ•ŒκΉŒμ§€ λ‘œλ”© 효과 λ“±μœΌλ‘œ μ‚¬μš©μžμ—κ²Œ μ•Œλ¦¬λ©°, μ˜€μž‘λ™ν•˜μ§€ μ•Šλ„λ‘ ν•©λ‹ˆλ‹€.

3. 카카였맡 APIλ₯Ό μ‚¬μš©ν•˜μ—¬ Modal UI둜 ν‘œμ‹œ

  • 검색결과 λͺ©λ‘ 쀑 ν•˜λ‚˜λ₯Ό μ„ νƒν•˜μ—¬ ν΄λ¦­ν•˜λ©΄ Modal UI에 카카였맡이 ν‘œμ‹œλ©λ‹ˆλ‹€.
    ([191226] mission003Β #8 λ―Έμ…˜3μ—μ„œ μ‚¬μš©ν•œ UIλ₯Ό μ°Έμ‘°)
  • μΉ΄μΉ΄μ˜€λ§΅μ—μ„œ κ°€κ²Œ μ£Όμ†Œλ‘œ κ²€μƒ‰ν•œ κ²°κ³Όκ°€ ν‘œμ‹œλ˜λ©° κ°€κ²Œλͺ…μ΄λ¦„μœΌλ‘œ 마컀 πŸ“κ°€ ν‘œμ‹œλ©λ‹ˆλ‹€.
  • ESCλ₯Ό λˆ„λ₯΄κ±°λ‚˜ Modal UIκ°€ μ•„λ‹Œ 곳을 λˆ„λ₯΄λ©΄ 창이 λ‹«νž™λ‹ˆλ‹€.

마컀


κ°€κ²Œμ°ΎκΈ° API μ‚¬μš©λ°©λ²•

κ°€κ²Œμ°ΎκΈ° API 뢈러였기

  • API μ„€λͺ… : https://floating-harbor-78336.herokuapp.com
  • API : https://floating-harbor-78336.herokuapp.com/fastfood
  • 뢈러였기(κΈ°λ³Έκ°’ : page=1, perPage=10, searchKeyword="")
    fetch('https://floating-harbor-78336.herokuapp.com/fastfood').then()...
    μ˜ˆμ‹œ(판ꡐλ₯Ό κ²€μƒ‰ν•˜κ³ , νŽ˜μ΄μ§€λ‹Ή 10개λͺ©λ‘μ„ ν‘œμ‹œν•  λ•Œ 1νŽ˜μ΄μ§€ λͺ©λ‘λ³΄κΈ°)
    fetch('https://floating-harbor-78336.herokuapp.com/fastfood?searchKeyword=판ꡐ&perPage=10&page=1').then()...
  • json ν˜•μ‹
{
    "list": [
        {
            "name": κ°€κ²Œλͺ…,
            "addr": κ°€κ²Œμ£Όμ†Œ,
        }
    ],
    "total": 총 갯수
}

카카였맡 API μ‚¬μš©λ°©λ²•

μΌλ°˜μ„€λͺ…

<script type="text/javascript" src="//dapi.kakao.com/v2/maps/sdk.js?appkey=05384f5ffa79058c52233387b2b1142b"></script>
 - 지도λ₯Ό λ„μš°λŠ” μ½”λ“œ μž‘μ„±
var container = document.getElementById('map'); //지도λ₯Ό 담을 μ˜μ—­μ˜ DOM 레퍼런슀
var options = { //지도λ₯Ό 생성할 λ•Œ ν•„μš”ν•œ κΈ°λ³Έ μ˜΅μ…˜
	center: new kakao.maps.LatLng(33.450701, 126.570667), //μ§€λ„μ˜ μ€‘μ‹¬μ’Œν‘œ(ν•„μˆ˜μ†μ„±).
	level: 3 //μ§€λ„μ˜ 레벨(ν™•λŒ€, μΆ•μ†Œ 정도)
};
var map = new kakao.maps.Map(container, options); //지도 생성 및 객체 리턴
  • API ν‚€ : 05384f5ffa79058c52233387b2b1142b

μ£Όμ†Œλ‘œ μž₯μ†Œ ν‘œμ‹œν•˜λŠ” μ˜ˆμ‹œ

  • http://apis.map.kakao.com/web/sample/addr2coord/
  • μœ„ 링크의 μ•„λž˜μͺ½ javascript + html μ˜ˆμ‹œμ½”λ“œλ₯Ό μ°Έκ³ ν•˜μ—¬μ£Όμ„Έμš”.
  • μ½”λ“œμ£Όμ„μ˜ κ΄„ν˜Έ 3ꡰ데(APP KEY, μ£Όμ†Œμž…λ ₯, κ°€κ²Œλͺ… μž…λ ₯μœ„μΉ˜)λ₯Ό μ°Έκ³ ν•˜μ‹œλ©΄μ„œ μ½”λ“œλ₯Ό μˆ˜μ •ν•΄μ£Όμ„Έμš”.
// (μ•„λž˜μ— APP KEYλ₯Ό λ„£μ–΄μ£Όμ„Έμš”)
<script type="text/javascript" src="//dapi.kakao.com/v2/maps/sdk.js?appkey=05384f5ffa79058c52233387b2b1142b&libraries=services"></script>
<script>
var mapContainer = document.getElementById('map'), // 지도λ₯Ό ν‘œμ‹œν•  div 
    mapOption = {
        center: new kakao.maps.LatLng(33.450701, 126.570667), // μ§€λ„μ˜ μ€‘μ‹¬μ’Œν‘œ
        level: 3 // μ§€λ„μ˜ ν™•λŒ€ 레벨
    };  

// 지도λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€    
var map = new kakao.maps.Map(mapContainer, mapOption); 

// μ£Όμ†Œ-μ’Œν‘œ λ³€ν™˜ 객체λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€
var geocoder = new kakao.maps.services.Geocoder();

// μ£Όμ†Œλ‘œ μ’Œν‘œλ₯Ό κ²€μƒ‰ν•©λ‹ˆλ‹€ (μ•„λž˜μ— κ°€κ²Œ μ£Όμ†Œκ°€ μž…λ ₯되게 ν•΄μ£Όμ„Έμš”)
geocoder.addressSearch('μ œμ£ΌνŠΉλ³„μžμΉ˜λ„ μ œμ£Όμ‹œ μ²¨λ‹¨λ‘œ 242', function(result, status) {

    // μ •μƒμ μœΌλ‘œ 검색이 μ™„λ£ŒλμœΌλ©΄ 
     if (status === kakao.maps.services.Status.OK) {

        var coords = new kakao.maps.LatLng(result[0].y, result[0].x);

        // κ²°κ³Όκ°’μœΌλ‘œ 받은 μœ„μΉ˜λ₯Ό 마컀둜 ν‘œμ‹œν•©λ‹ˆλ‹€
        var marker = new kakao.maps.Marker({
            map: map,
            position: coords
        });

        // μΈν¬μœˆλ„μš°λ‘œ μž₯μ†Œμ— λŒ€ν•œ μ„€λͺ…을 ν‘œμ‹œν•©λ‹ˆλ‹€
        var infowindow = new kakao.maps.InfoWindow({
        // (μ•„λž˜μ— κ°€κ²Œλͺ…이 μž…λ ₯되게 ν•΄ μ£Όμ„Έμš”)
            content: '<div style="width:150px;text-align:center;padding:6px 0;">μš°λ¦¬νšŒμ‚¬</div>' 
        });
        infowindow.open(map, marker);

        // μ§€λ„μ˜ 쀑심을 κ²°κ³Όκ°’μœΌλ‘œ 받은 μœ„μΉ˜λ‘œ μ΄λ™μ‹œν‚΅λ‹ˆλ‹€
        map.setCenter(coords);
    } 
});    

μ£Όμ˜μ‚¬ν•­

  • 카카였맡 APIλŠ” λ“±λ‘λœ 도메인 μ£Όμ†Œμ—μ„œλ§Œ μž‘λ™ν•©λ‹ˆλ‹€.
  • ν˜„μž¬ https://127.0.0.1:5500 으둜 도메인 등둝이 λ˜μ–΄μžˆλŠ”λ° 변경이 ν•„μš”ν•œ 뢄은 μ•Œλ €μ£Όμ„Έμš”.
  • μΉ΄μΉ΄μ˜€λ§΅μ— μ£Όμ†Œ κ²°κ³Όκ°€ μ—†λŠ” κ²½μš°μ—λŠ” λ§ˆμ»€κ°€ ν‘œμ‹œλ˜μ§€ μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

기타

ν…œν”Œλ¦Ώ

  • ν…œν”Œλ¦Ώκ³Ό, css νŒŒμΌμ€ 브랜치 sample/mission005에 μ—…λ‘œλ“œν•˜μ˜€μœΌλ‹ˆ μ°Έκ³ ν•˜μ„Έμš”.

μ°Έκ³ 

  • μžλ°”μŠ€ν¬λ¦½νŠΈ ν”„λ‘ νŠΈμ—”λ“œ ν”„λ‘œμ νŠΈ κ°€μ΄λ“œ μ±…
  • μˆ˜μ—…λ•Œ μΆ”κ°€λ―Έμ…˜ 사항

πŸ‘¨β€πŸ’» Reviewer Match πŸ‘©β€πŸ’»

μ½”λ“œλ¦¬λ·° κ°€μ΄λ“œ

Reviewee

Reviewer x 3


@eastjun

@YongHoonJJo @s280493 @HoseokNa


@YongHoonJJo

@eastjun @StellaKim1230 @amorfati0310


@StellaKim1230

@YongHoonJJo @ganeodolu @HoseokNa


@ganeodolu

@YongHoonJJo @StellaKim1230 @amorfati0310


@s280493

@eastjun @ganeodolu @amorfati0310


@amorfati0310

@ganeodolu @s280493 @HoseokNa


@HoseokNa

@eastjun @StellaKim1230 @s280493


λ―Έμ…˜μ„ ν™•μΈν•˜μ‹œκ³  κ°œμ„ μ΄ ν•„μš”ν•œ 뢀뢄이 있으면 μ•Œλ €μ£Όμ„Έμš”!!

Metadata

Metadata

Assignees

Labels

missionImprovements or additions to documentation

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions