CI 묻고 답하기

제목 PC & Mobile 코드 공용화를 어느수준까지 하는 것이 좋을지 의견을 여쭙고 싶습니다.
카테고리 CI 2, 3
글쓴이 골드잉여 작성시각 2016/12/20 11:00:03
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 18963   RSS

안녕하십니까.

평소에 코드이그나이터 포럼을 통해서 큰 도움을 얻고 있습니다.

대부분 검색을 통해서 구글링+스택오버플로우+포럼을 통해서 문제를 해결했는데,

위의 문제는 명쾌한 답을 구하지 못해서 포럼에 질문을 드립니다.

답이 없는 문제일 가능성이 크다라고 생각되지만, 경험 많으신 선배님들의 의견을 여쭙고 싶습니다.

 

제가 생각하기로 모바일 페이지 구축에는 3가지 코딩 방법이 있을 것 같습니다.

1. PC code + Mobile 코드를 완전히 분리하여 코드 구축

  공용화 없이 작업하기 때문에 제일 단순하지만, 유지보수가 발생할 시 2군데를 꼭 수정해줘야 합니다.

 

2. code가 100% 똑같은 파일은 공유하고, 다른 부분 별도의 파일로 작성

  아래의 경우, m/header_v, m/main_v는 다른 부분이 있는 파일이고, footer_v의 경우 같은 파일

$this->load->view('m/header_v');
$this->load->view('m/main_v', $data);
$this->load->view('footer_v');

  현재 제가 만든 홈페이지가 위와 같이 되어있으며, 70-80%의 파일은 공유가 되어있습니다.

  하지만 문제는 나머지 20-30% 파일도 대부분의 코드 내용은 비슷하기 때문에 굳이 새로운 파일을 만들어야 할까 의문이 생깁니다.

  만약 수정이 생길 경우, moblie과 PC 코드 두개를 동시에 고치지 않으면 문제가 생깁니다.

 

3. PHP 파일을 100% 공유하되 get 변수로 moblie 환경을 구분하여 코드가 달라지는 부분만 if문으로 관리한다.

  현재 2번과 같은 사이트를 3번과 같은 방식으로 바꾸려고 합니다.

  예를 들면, www.codeigniter-kr.org/bbs/write?device=moblie 과 같이 get 변수로 받아서 모바일 환경을 구분하여 처리하려고 합니다.

  get 값을 받지 않으면 깔끔하겠지만, moblie에서도 PC 환경을 원하는 사람이 있기 때문에 변수로 control을 해야하지 않을까 하는 것이 제 생각입니다.

  대부분의 대형사이트에서는 2번과 같이 별도로 코드를 만드는 것으로 생각됩니다. 하지만 제가 만드는 페이지는 모바일 페이지의 복잡성과 차별성이 크지 않아서 굳이 따로 만들고, 관리하는 것이 유지보수 측면에서 오히려 낭비일 것 같다는 생각이 듭니다.

 

현재 2번에서 3번의 사이트로 변경을 추진하는 것에 있어서 고려할 점이나, 문제점이 있을까 걱정이 됩니다.

제가 놓치고 있는 부분이 있다면 참고하여 진행하겠습니다.

읽어주셔서 감사합니다.

 다음글 서버에서 앱으로 자바스크립트 호출 질문드려요 (1)
 이전글 image_lib 를 이용한 helper (5)

댓글

/ 2016/12/20 11:14:17 / 추천 0

2번이나 3번이다 둘다 많이 사용하는데, 페이지가 많고 무거우면 2번방법이 편한거 같고,

간단한 프로그램이다 하면 3번이 더 나은거 같아요. 2번의 장점은 파일자체를 나누므로 좀 더 구조화 된다는 점이 있자만 반대로 구조화된 코드를 관리해야 하는 이슈가 있을거 같고, 3번의 경우는 파일자체를 나누지 않으므로 파일 자체를 적게 만들어도 되니 쉽게 만들 수 있는 반면 규모가 좀 커지면 계속 if문을 좀더 자주 사용하니 점점 귀찮아 지는 감이 있다고 생각합니다.

변종원(웅파) / 2016/12/20 11:21:21 / 추천 0

전 공용부분은 같이 사용하고 파라미터에 따라 분리해야하는 부분은 분리합니다.

하나의 파일에서 분기처리하는 것은 다른 개발자가 유지보수할때 시간이 더 걸릴 수 있습니다.

kaido / 2016/12/20 12:12:06 / 추천 0

저도 선택적인 분기가 필요하다고 생각 됩니다.

단순 코드 분기로 처리하기엔 복잡해지는 구조도 있습니다. 선언 위치라든지...

모바일에서 밖에 사용 하지 않는 특수한 구조가 붙으면 결국 파일 분기는 필요하다고 생각 합니다만

모든 구조를 그렇게 하진 않고 일부 필요한 페이지만 적용 할것 같군요.

 

다만 이건 동일 합니다.

PC페이지이든 모바일 전용이든 해당 컨트롤러와 모델 구조는 동일 해야 한다.

결국 view 차이 라고 생각 합니다.

골드잉여 / 2016/12/21 13:02:37 / 추천 0

답변 감사합니다.

어떤 부분을 조금 더 고민해서 코딩을 해야할지 힌트를 주신 것 같습니다.

kaido 님의 "PC페이지이든 모바일 전용이든 해당 컨트롤러와 모델 구조는 동일 해야 한다. 결국 view 차이 라고 생각 합니다." 부분이 특히 마음에 와 닿습니다.

한 번 열심히 수정해보겠습니다.

감사합니다.

골드잉여 / 2016/12/23 16:24:26 / 추천 0

후기 남깁니다.

홈페이지가 복잡하지 않아서 생각보다 어렵지 않게 수정할 수 있었습니다.

1. header_v.php에서 cookie를 확인하여 mobile 또는 PC를 설정하는 flag값이 있는지 확인하고 없으면 device에 맞는 값을 설정하였습니다.

2. controller, model, view의 대부분은 기존에도 비슷했기 때문에, 분기가 필요한 부분에서만 cookie값을 확인하여 상황에 맞게 처리하였습니다. 모바일 css, 모바일 view를 부르는 부분에서만 분기가 필요했던 것 같습니다.

ps. setcookie를 아무 생각없이 사용했다가, path가 다르게 생성되는 것을 확인 못하고 한참을 고생했습니다. ㅎㅎ 덕분에 cookie path 개념에 대해서 조금 더 공부하게 되었습니다. (setcookie와 set_cookie가 차이가 있는지도 몰랐습니다..)

답변 주신 분들 다시 한 번 감사합니다.