0

오버플로 스택이 새로 생겼고 실제로 require.js 설정에 대해 궁금해했습니다. 사용하는 첫 번째 시간이기 때문입니다. 그리고 여러 가지 접근법/예를 보았을 때, 지금까지 한 일이 맞는지 확실하지 않습니다. 그래서, 내 인덱스에 나는 "머리"정적 웹 사이트에 대한 require.js 설정 및 라이브러리 인 것처럼 사용자 정의 코드로드

<script data-main="js/app" src="js/vendor/require-2.2.0-min.js"></script> 

에 내 '몸'나는 Google 웹 로그 분석 조각이의 말에 있습니다. 다른 스크립트는 색인에서 직접로드되지 않습니다. 내 $의 projectroot/JS 폴더 안에 app.js에

내가 가진 :

requirejs.config({ 
    "baseUrl": "js/vendor", 
    "paths": { 
     "app": "..", 
     "jquery" : ['//code.jquery.com/jquery-1.12.4.min','jquery-1.12.4.min'], 
     "modernizr" : 'modernizr-2.8.3-respond-1.4.2.min', 
     "bootstrap" : ['//maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min','bootstrap.min'], 
     "plugins": '../plugins' 
    }, 
    "shim": { 
     "bootstrap": ["jquery"], 
     "plugins": ["bootstrap"] 
    } 
}); 

requirejs(["app/main"]); 

는 또한, app.js와 같은 폴더에 내 main.js가 포함

define([ 
    "jquery", 
    "modernizr", 
    "bootstrap", 
    "plugins" 
], function($) 
{ 
$(function() 
{ 
console.log('required plugins loaded...'); 
}); 
}); 

마지막으로, 내 plugins.js는 라이브러리가 아니지만 마지막으로로드해야하는 사용자 정의 js 코드입니다. 지금까지 괜찮은가요? 이 접근법의 단점은 무엇입니까? 유사한 방식으로 나머지 사용자 정의 js 코드를 추가해도 괜찮습니까? 답변 해 주셔서 대단히 감사합니다 !!

+1

이것은별로 좋은 질문이 아닙니다. 근본적으로 코드 검토를 요구하고 있지만 우리는 [이 사이트를 가지고 있습니다] (http://codereview.stackexchange.com/). 또한 "단점"에 대해 묻는 것은 사람들이 "단점"이 무엇인지에 대한 아이디어가 매우 다르기 때문에 의견을 근거로 질문을 만듭니다. (예를 들어, CDN 사용에 대한 다른 의견을 읽었습니다. 하루가 끝날 때 * 의견 *입니다. 가장 적합한 것은 프로파일 링을 통해 사례별로 결정되어야합니다.) – Louis

+0

죄송합니다! 나는 여기 새로 왔으므로 두 사이트 사이의 '라인이 그려지는 곳'을 실제로 이해할 수는 없다. 그러나 어쨌든 여기에있다. http://codereview.stackexchange.com/q/130058/107098 – dimk

답변

1

귀하의 질문에 대답하기 위해, 내가 바꿀 것 한 가지가 main.js에서 글로벌 dependecies을 넣어이다 파일 : 당신의 app.js에

define([ 
    "jquery", 
    "modernizr", 
    "bootstrap", 
    "plugins" 
] 

그렇게 같은 파일 :

requirejs(["app/main","jquery","modernizr","bootstrap","plugins"]); 

이것은 전역 종속성이 main.js 파일 대신 모든 모듈에서 공유됨을 의미합니다. 즉, 사용하려는 모든 파일에 포함시키지 않아도됩니다.

외에도 괜찮아 보입니다.

+1

나는 그때부터 확장 해왔다. 내 예를 들어, Google Maps, Facebook Javascript SDK, MomentJS - MomentJS Timezone, 날씨 위젯 등을 추가 했으므로 몇 가지 사실을 배웠습니다. 일단 색인 alt 페이지를 작성하면 다른 언어)와 거기에 일부 현지화 된 콘텐츠 (예 : Google지도, 현재 시간과 날짜, 그리스어로 날씨와 페이스 북 위젯)를 보여주고 싶었고, 그것이 나쁜 습관 인 중복을 제거하고 절대 싫어하기 때문에 절대적으로 정확합니다. 이것으로 해결되었습니다 - SE는 어쨌든 그러한 질문에 대한 잘못된 장소였습니다! 고맙습니다. 제라드! – dimk

+0

걱정할 필요가 없습니다! 희망은 모든 것이 작동합니다 –

+0

지금까지 모든 것이 작동해야합니다 ..! 페이스 북의 경우 비동기 플러그인 대신 'Facebook 모듈 로더'를 사용했는데 두 게시물을 비교 한 게시물을 읽은 후에 더 나은 솔루션처럼 보였습니다. 일단 끝나면 codereview에서 내 게시물/코드를 업데이트 할 것입니다. 아마도 누군가에게 도움이 될 수 있습니다. – dimk