47일차 수업정리(jquery)
**javascript나 css에서 min.이 붙는 파일
=> 내용은 min.이 없는 파일과 같으나 줄바꿈이 공백을 없애서 파일의 크기를 최소화한 파일
=> min.이 없는 파일은 학습용, min. 배포용에서 사용
=> 특별한 경우가 아니면 다운로드 받아서 프로젝트에 삽입하는 형식으로 사용
**jquery
=> UI 구성, CrossBrowsing 구현을 쉽게 해주는 라이브러리
=> ajax 사용을 쉽게 해줌
=> 다양한 플러그인이 존재
1. 사용방식
=> 외부링크 이용
=> 다운로드 받아서 프로젝트에 포함시켜서 사용
2. jquery를 사용할 때 스크립트 순서
1) jquery 링크 설정
2) jquery plugin 링크 설정
3) 사용자 스크립트
3. $(document).ready(function(){})
=> 문서의 구조파악이 끝나면 수행되는 이벤트 핸들러 지정
=> window의 load 이벤트와 유사한데 load 이벤트보다 먼저 처리
- window.addEvnetListener("load", function(event){ })
=> jquery에서는 위의 코드 대신 아래 코드를 주로 사용
- $(document).ready(function(){ })
4. jquery에서 선택자
=> 형식 : $('선택자')
=> 기본 선택자
- $('*') : 전체 선택
- $('태그이름') : 태그를 선택
- $('.클래스이름') : 클래스를 선택
- $('#아이디') : 아이디를 선택
5. 속성 접근
=> javascript : 속성에 직접 접근하여 값을 가져오거나 설정, jquery : 메소드를 호출하는 방식으로 속성에 접근
=> html 메소드와 val 메소드를 이용
- html 메소드 -> innerHTML : 여는 태그와 닫는 태그 사이의 내용
- val 메소드 -> value : 입력 도구의 값
- html메소드나 val메소드에 매개변수 미대입시 getter의 역할, 매개변수 대입시 setter의 역할 수행
=> attr 메소드 : 속성이름 대입시 속성에 해당하는 값 리턴, 속성이름과 값 대입시 속성에 값을 설정
6. 객체의 순서를 설정하여 편집하는 메소드
=> after, before, append, appendTo, prepend, prependTo, clone 과 같은 메소드들이 존재
7. 스타일 시트 편집
=> 동적으로 스타일 시트를 편집하고자 하는 경우 style('속성명', '값')이용
8. 수치 조작
=> width, height, innerHeight, innerWidth등과 같은 메소드를 이용
9. 이벤트 핸들링
=> event : 객체에 발생하는 사용자의 동작이나 사용자의 동작으로 발생하는 시스템의 사건등
=> event handling : 이벤트가 발생했을 때 수행되는 코드를 작성
=> event handler : 이벤트가 발생했을 때 호출되는 함수나 메소드를 소유한 객체
1) 별도의 함수를 이용
=> click(함수), dbclick(함수), hover(함수1, 함수2)등을 이용
2) on, delegate, one등의 함수를 이용하여 이벤트와 함수를 같이 설정
=> delegate : 이벤트가 발생 했을 때 자신이 직접 처리하지 않고 다를 객체에게 이벤트처리를 위임
3) preventDefault()
=> 기본적으로 제공되는 이벤트를 제거(수행하지 않음)
4) stopPropagation()
=> 이벤트 버블링을 제거
=> 이벤트 버블링 : 부모와 자식요소에 동일한 이벤트에 대한 핸들러가 각각 존재하는 경우 자식 요소에 이벤트 발생
시 자식 요소의 이벤트 핸들러가 호출되고 부모에게 이벤트를 전달
<!-- jquery 스크립트 설정-->
<script src="js/jqurey.js"></script>
<!-- 사용자 스크립트-->
<script>
/* $(document).ready(function(){
//자바스크립트를 이용한 스타일 변경
document.getElementById("msg1").style.color="red";
document.getElementById("msg1").innerHTML="글자 변경";
//jquery를 이용한 스타일 변경
$("#msg2").css('color', 'blue');
$("#msg2").html("내용변경");
//jquery의 이벤트 처리
$('#outer').click(function(){
$('#outer').css('color', 'red');
});
$('#inner').click(function(){
$('#inner').css('color', 'blue');
//이벤트 버블링을 취소
event.stopPropagation();
})
}); */
</script>
<body>
<!-- <p id="msg1">javascript만으로 스타일 변경</p>
<p id="msg2">jquery로 스타일 변경</p>
<div id="outer">외부
<p id="inner">내부</p>
</div> -->
</body>
5) trigger(이벤트 이름, 데이터)
=> 이벤트를 강제로 발생시키는 것
10. animation 관련 함수 추가
11. ajax 사용을 쉽게 해줌
=> ajax(Asynchronous JAvascript XML) : 비 동기적으로 데이터를 받아오는 기술
- 전체화면의 갱신없이 데이터를 비동기적으로 받아와서 일부분만 수정하는데 주로 이용
- SPA(Single Page Application)에서 많이 사용됨
=> 형식 : $.ajax(url, 옵션객체);
- 옵션객체는 객체이므로 { }안에 묶어서 설정
- async : Boolean 타입으로 설정하는데 비동기 여부
- complete : 작업이 전부 끝나면 호출되는 핸들러 지정
- data : 요청 파라미터(클라이언트가 서버에게 넘겨주는 데이터) - 객체의 형태로 설정
- datatype : 결과로 넘어오는 데이터 타입을 설정 - xml, json, script, text등
- success : 데이터를 가져오는데 성공한 경우 호출될 핸들러 설정
- error : 데이터를 가져오는데 실패했을 경우 호출될 핸들러 설정
- success에 핸들러를 지정할 때 매개변수를 1개 설정(매개변수는 전달된 데이터)
=> json : 파싱을 수행하여 객체형태로 대입, xml, html : 태그 형태로 전달
=> find메소드를 이용하여 원하는 태그를 골라내야 함
=> jsonp
- ajax는 자신의 도메인 내의 데이터만 로드 가능, jsoup는 다른 도메인에서도 ajax 요청이 가능게 해주는 서비스
- 서버에서 설정
- 서버에서 jsoup를 미제공하는 경우 proxy서버를 구축하여 ajax로 요청시, 타 프로그래밍 언어가 다운로드를 받아
서 다시 전달하는 형태로 구현 필요
12. 날씨 open api를 이용하여 ajax로 날씨를 가져와서 출력
1) openweather API
=> https://openwheathermap.org
=> 회원가입을 하고 api key를 받아야 함
=> api key : 8cb79fa7fc8457f9fc0c7c59625471a1
=> 도시이름으로 조회
- http://api.openweathermap.org/data/2.5/weather?q=도시이름&APPID=앱키
- ex) http://api.openweathermap.org/data/2.5/weather?q=busan&APPID=8cb79fa7fc8457f9fc0c7c59625471a1
=> 도시 ID로 조회(서울)
- http://api.openweathermap.org/data/2.5/weather?id=1835847&APPID=8cb79fa7fc8457f9fc0c7c59625471a1
=> 위도 경도를 이용하여 검색
- http://api.openweathermap.org/data/2.5/weather?lat=위&lng=경&APPID=8cb79fa7fc8457f9fc0c7c59625471a1
2) jquery 사용을 위한 설정
=> js 디렉토리 생성 : 자바스크립트, css, 사용하는 자원은 코드와 분리시켜 놓는 게 좋으므로 별도 디렉토리에 생성
=> 웹사이트에서 jquery를 다운로드
=> js 디렉토리를 만들고 코드를 붙여넣기
3) html
4) css 디렉토리를 만들고
5) weather.html 파일에 css 적용
6) js 디렉토리에 javascript파일을 만들고 작성 - weather.js
7) wather.html 파일에 스크립트 링크를 작성
- <!-- 사용자 정의 스크립트 사용을 위한 설정 -->
<script src="js/weather.js"></script>
- { } : 객체 - 속성명 / [ ] : 배열
13. openAPI 사용
1) url : 요청 주소
- http://dapi.kakao.com/v2/search/vclip
2) parameter - 클라이언트가 서버에게 넘겨주는 데이터
=> key-value 형태
=> 파라미터는 url?이름=값&이름=값...
=> ajax 요청을 할 때는 url뒤에 붙이지 않고 별도로 설정이 가능
- {이름:값, 이름:값...}으로 생성한 후, javascript일 때는 send(생성한 객체)를 호출
- jquery에서는 data:생성한 객체로 설정해도 됨
- url 뒤에 붙이는 경우는 반드시 인코딩 해야하고 별도로 묶어서 전송하는 경우에는 자동으로 인코딩 설정
3) header 존재 여부 확인
=> header도 파라미터와 동일한 방식으로 생성하고 data대신에 headers에 설정
4) respons - result
=> open api 호출 결과
14. Kakao 동영상 검색 결과를 이용한 페이징 구현
1) Kakao에서 검색 API를 사용하려면 rest api키가 있어야 함
- key : f9e2c5d96fd9f8f18c1757ee858596ec
2) html파일을 생성하고 본문을 작성
tip!
1. 디자인을 빠르게 하고 싶을때는 jqurey를 검색해서 넣고, bootstrap등의 사이트에서 가져다가 쓰자(font등)
2. 외래키 작성(primary key, unique)
1 : 1 -> 양쪽의 기본키를 상대방 테이블의 외래키로 추가
1 : N -> 1쪽의 기본키를 n쪽 테이블의 외래키로 추가
N : N -> 양쪽 테이블의 기본키를 외래키로 갖는 새로운 테이블을 생성