2012-06-15 7 views
0

나는 많은 페이지에서 드롭 다운 목록 컨트롤이있는 Asp.net MVC에서 웹 프로젝트를 가지고있다. 이러한 드롭 다운 목록의 값이 변경되면 일부 div 태그를 새로 고치려면 컨트롤러 작업에 대한 요청을 수행해야합니다.너무 많은 javascript 파일

는이를 위해, 나는 JQuery와의 $ (문서) .ready() 함수를 사용하고 난이 같은 함수 작성 :

$("#ComboBox").change(function() { /* do something here */ }); 

$.get('@Url.Action("Action", "Controller")', function (result) { 
    // TODO: process the results of the server side call 
}); 

이 문제는 내가 큰 자바 스크립트를 작성하지 않으된다 jquery의 문서 준비 이벤트가 발생할 때 모든 페이지에서 수행해야하는 모든 작업 목록을 포함하는 파일.

예를 들어 한 페이지에서 컨트롤러 x의 작업 x에 대한 요청을 만들고 다른 페이지에는 컨트롤러 y의 작업 y에 대한 요청을 만드는 다른 콤보 상자가 있습니다.

각 페이지마다 별개의 javascripf 파일을 만드는 것이 좋은 전략인지 확실하지 않습니다.

어떻게해야합니까? 각 특정 문서 준비 기능을위한 자바 스크립트를 만드시겠습니까? 동일한 문서의 모든 함수를 동일한 자바 스크립트 파일의 준비 함수로두면 jquery로 컨트롤에서 참조하는 id와 클래스의 충돌 이름은 어떻게됩니까? 그리고 모든 기능이 동일한 자바 스크립트에있는 경우 문서 준비 기능에서 기능의 90 %를 사용하지 않는 페이지는 무엇입니까?

+0

나는 모든 js 파일을 함께 가져올 수있는 자동 빌드 도구가 필요하다고 생각합니다. –

답변

0

자바 스크립트가 클라이언트 측에서 점점 더 커지면 유지 관리에 대해 정말로 생각해야합니다. jQuery는 사용하기 쉽지만 문제는 갑자기 많은 장소에서 콜백/처리기가 관리하기 어렵다는 것을 알 수 있습니다. 백본과 같은 클라이언트 측에서 MVC 라이브러리를 사용하는 것이 좋습니다.js을 사용하면 코드를보다 효과적으로 구성하는 데 도움이됩니다.

두 번째는 개발 관점으로서 애플리케이션에서 사용되는 전체 자바 스크립트를 모듈/컨트롤러별로 별도의 파일로 분리해야합니다. 모든 자바 스크립트를 단일 파일로 결합하는 데 도움이되는 축소 프레임 워크를 사용할 수 있습니다.

ASP.NET MVC 4 자체는 js 또는 css 파일 세트를 결합하고 축소하는 데 도움이되는 바인 링/축소 기능을 지원합니다.

http://ofps.oreilly.com/titles/9781449320317/ch_ClientOptimization.html#BundlingAndMinification http://weblogs.asp.net/scottgu/archive/2011/11/27/new-bundling-and-minification-support-asp-net-4-5-series.aspx

+0

이 단계에서는 backbone.js를 사용하지 않는 것이 좋습니다. 자바 스크립트의 총량이 매우 많은 것처럼 들리지는 않습니다. 단지 많은 페이지에 흩어져 있습니다. OP와 클라이언트의 mv *와 mvc를 혼합하면 OP가 js에 대해 더 많은 경험을 할 때까지 혼란 스러울 것입니다. –

+0

나도이 단계에서 권장하지 않으며 그 조언은 미래를위한 것입니다. – VJAI

1

하나의 큰 자바 스크립트 파일을 갖는 것이 문제가되지 않습니다. 대부분의 자바 스크립트를 하나의 파일에 배치하면 브라우저가이 파일을 캐시 할 수 있으며 후속 페이지로드시 서버에서 자바 스크립트를 가져올 필요가 없어 페이지로드가 빨라집니다. 자바 스크립트 파일을 계속 분할하고 싶지만 유지 관리를 위해 필요할 수 있습니다. 예 : 모든 고객 관련 페이지에 대해 customer.js 파일을 갖는 것이 합리적 일 수 있습니다.

문서 준비 이벤트에서 개별 이벤트 처리기를 설정하려면 서버로드시 인라인 자바 스크립트를 포함하면 서버가 생성 된 경우 실제 제어 ID를 설정할 수 있습니다 (예 : < % Combo.ClientID %>). 이 코드는 기본 js 파일에서 적절한 함수를 호출 할 수 있습니다.

0

응용 프로그램이 상당히 큰 경우에는 기능 영역별로 구성하는 것이 좋습니다. js 파일이 많을 경우 함께 배치하는 것이 좋습니다. 즉, 다른 자바 스크립트 파일을 함께 최소화하거나 그룹화 할 수있는 훌륭한 도구가 있고 (빌드 프로세스의 일부 또는 라이브로) 심지어 변경 사항을 모니터링 할 수도 있습니다. 둘 다 .less/coffeescript 등을 CSS로 번역 할 수도 있습니다.

스컹크와 chirpy를 확인하십시오. 둘 다 Nuget에서 사용할 수 있다고 생각합니다.

Squishit : http://www.codethinked.com/squishit-the-friendly-aspnet-javascript-and-css-squisher

쾌활한 : http://chirpy.codeplex.com/

일반 wizdom 당신이 첫 페이지에로드되는 하나 개의 js 파일이있는 경우이 이후의 페이지 뷰 동안 캐시됩니다 볼 수 있다는 것입니다. 일반적으로 모든 파일에 대해 하나의 파일을 제공하려는 경우가 있습니다 (개발할 때 파일을 분리하여 보관할 수도 있음).