2011-05-11 3 views
6

나는 약간의 수수께끼가있다. 기본적으로 내 웹 응용 프로그램을위한 jQuery 용 WYSIWYG 편집기 플러그인을 개발 중입니다. 기능 중 하나는 사용자가 업로드 한 이미지를 기반으로 인라인 이미지 툴팁을 삽입하는 것입니다.AJAX와 PHP는 JS에 직접 입력

Hello there my name is [i="profile_pic.png"]A. Username[/i] 

나는과 같이 자바 스크립트에 직접 PHP 배열을 삽입할지 여부, 사용자가 사용할 수있는 이미지를 정의 할 때 발생하는 문제에 봉착 부분 :

var available_images = "<?=json_encode($User->Profile->images)?>"; 
예를 들어

또는 이미지 소스의 인코딩 된 배열을 반환하는 Ajax GET으로 이동 하시겠습니까? 불필요한 아약스 호출에 대한 필요성을 제거하기 때문에 인라인 PHP는 더 의미가 있다고 생각하지만 자바 스크립트에 인라인 PHP를 삽입하는 것은 끔찍한 좋은 형태라고 생각하지 않았다?

제안 사항?

+0

+1 좋은 질문입니다. AJAX 호출을하는 클래스에 넣으면 호출을 다른 곳에서 재사용 할 수 있습니다. 나는 프로젝트를위한 데이터 레이어 ('data.js')를 만들고 그것을 어플리케이션 전체에 걸쳐 사용했다. 웹 앱이 어떻게 구성되어 있는지 생각할 필요가 없습니다. – pixelbobby

답변

4

PHP에서 수집 한 데이터를 JS에 삽입하는 데는 아무런 문제가 없습니다. JS가 데이터를 얻는 방법은 다른가요? AJAX 호출을 고려해야하는 유일한 이유는 사용자가 새 이미지 을 업로드하는 동안 사용자가을 편집하는 것입니다. 이것은 정보가 업데이트되어야한다는 것을 의미하며, 페이지로드시 정적 JSON보다 AJAX 호출을 더 매력적으로 만듭니다.

+0

저는 방금 사용자가 이미지를 추가 할 수있는 기능이 필요하다는 것을 깨달았습니다.이 경우 AJAX 호출이 더 나은 아이디어입니다. 감사 – Dormouse

4

페이지의 수명이 다할 때까지 배열이 변경되지 않으면 코드 스 니펫에서 제안한 것과 똑같이 배열을 추출합니다. 추가 아약스 호출을 사용하면 실제로 얻을 수있는 이점이 없습니다. 배열의 크기가 너무 커서 초기 페이지로드 시간에 영향을 미치지 않을 것이기 때문입니다.

스택 오버 플로우 페이지를보고 보기 소스을 수행하는 경우, 그들은 항상 이런 종류의 일을합니다.

데이터 양이 많고 페이지로드 시간이 7 초 이상 늘어난다면 아약스 호출을 고려해보십시오. 최소한 페이지가 렌더링되고 사용자는 볼 수있는 것이 있습니다. 한편로드 또는 기타를 나타내는 상태 메시지가있는 떨림 이미지를 가질 수 있습니다.

나는 또한 그것 때문에 단지 불필요한 아약스 이동이 많이 있다고 말하고 싶다. 조기 최적화와 같아서 사람들은 가지고 있지 않은 문제를 해결하기 위해 복잡성을 추가합니다. 위에서 언급 한 페이지로 응답 시간 문제가 발생하면 간단한 작업을 시작한 다음 아약스가 어떤 이점을 가져다 줄 것인지 고려하십시오.

2

항상 이미지 배열을 가져 오나요? 가끔씩 만 (예 : 사용자의 동작에 응답하여) 가끔씩 만 나옵니까? 전 (前者)이라면, 그것을 인라인이라고 말하고 싶습니다. 그렇지 않으면 AJAX로해라. 즉, AJAX가 트래픽을 줄이는 경우에만 수행합니다.하지만 항상 수행해야한다면 어떤 이점도 보이지 않습니다. 내가 인라인 PHP와 자바 스크립트를 혼합하는 데 어떤 문제도 보이지 않는다. 다른 말로하면 캐싱 될 수있는 외부 .js 파일 (또는 배열을 채우는 부분) 대신 자바 스크립트 인라인을 사용해야한다는 것을 의미한다.