문제

Grails의 뷰를 2 개의 파일 A .gsp 파일과 .js 파일로 나누어 내 뷰에서 더 깨끗한 JavaScript 분리를 얻을 수 있습니다. 예를 들어 다음과 같습니다.

views/index.gsp
views/index.js
views/home/index.jsp
views/home/index.js

그러나 단순히 index.js 스크립트 참조를 다음과 같이 추가하면 다음과 같습니다.

<script src="index.js" type="text/javascript"></script>

내가 얻는 것은 404입니다.

누구든지 이것을 다루는 방법을 알고 있습니까?

큰 이점은 인덱스 .js 파일 내에서보기 데이터를 사용하여 원하는 컨텐츠를 생성 할 수있는 기능을 갖추는 것입니다.

마티아스.

도움이 되었습니까?

해결책

실제로, JS 파일 (또는 다른 파일 유형)을 귀하의 GSP로 제공하는 것이 완벽하게 가능해야합니다. grails-app/views/ 예배 규칙서. 당신이해야 할 유일한 일은 해당 GSP에 적합한 URL 매핑을 정의하는 것입니다.

"/javascript/home/index"(view:'/home/index.js')

이 URL 매핑을 사용하면 JS 코드를 grails-app/views/home/index.js.gsp (후행 .gsp 참고) JS 소스에서 성배 태그를 사용할 수 있습니다. JS가 올바른 콘텐츠 유형으로 제공되도록하기 위해 배치 할 수 있습니다.

<%@ page contentType="text/javascript"%>

GSP의 시작 부분에.

불행히도, createLink 태그는 링크 재 작성을 지원하지 않지만 해당 링크를 만들기 위해 자신의 태그를 쉽게 작성할 수 있어야합니다.

어쨌든, 이것은 앱의 성능에 긍정적 인 영향을 미치지 않을 것임을 명심하십시오. 예를 들어 동적 재료를 매개 변수로 전달하는 동시에 정적 JS 파일 (정적 자원으로도 제공하는 것이 더 좋습니다). 이것은 또한 당신을 약간의 두통으로부터 유지할 것입니다. 캐싱 등

다른 팁

Update 2:

성배는 빌드 라이프 사이클에 연결할 가능성을 제공합니다. 맞춤형 이벤트.

아래의 모든 JavaScript 파일을 동기화하는 이벤트 핸들러를 작성할 수 있습니다. grails-app/views 대상 폴더와 함께 web-app/js.

사용자 정의 코드를 $ project/scripts/events.groovy에 배치하십시오. 그만큼 PackagingEnd 직후에 발생하기 때문에 호출의 좋은 목표입니다. web.xml 생성됩니다.

eventPackagingEnd = {  ->
     // for each js file under grails-app/views move to web-app/js
}

업데이트

JavaScript 파일을 단순히 'Meshed'함께 원한다면 Symlinks를 사용하여 수행 할 수 있습니다.

grails -app/views/view1/index.js-> webapp/js/view1/index.js

내가 아는 한, 성배가 웹 애플 외부에있는 콘텐츠를 직접 제공하도록 강요하는 방법은 없습니다.

또는 JavaScript를 인화 할 수 있지만 성능에 영향을 줄 수 있습니다.


JavaScript 파일은 아래에 속합니다 web-app/js.

그런 다음 사용하여 참조 할 수 있습니다 <g:javascript src="index.js" />.

아이디어는 좋지만 Grails에는이 디렉토리 구조가 이유가 있습니다. 보기 폴더는 특정 아티팩트 유형 (보기)을위한 것입니다.

Web-INF에서 View 폴더 구조를 복제 할 수 있지만, 이에 대한 아이디어는 편의상 이유를 위해 관련 파일을 가깝게 유지하는 것입니다.

비록 JavaScript 소스를 올바른 디렉토리에 복사하기 위해 빌드 이벤트를 사용하여 빌드 프로세스에 연결하려는 Robert의 아이디어를 좋아했습니다. 당신이 그 도로를 내려 가기로 결정했다면 당신은 당신이 그 도로에있는 동안 소스를 압축 할 수도 있습니다. 수축 인기있는 도서관입니다.

나는 당신이 js 내부보기에 액세스 할 수 있다고 생각하지 않습니다.

그렇게해야한다면 ... 여기에 트릭이 있습니다

  1. JS를 만들고 이름을 바꿉니다 myjs.gsp (사용”") 이니 사이드 _MYJS.GSP 유형 JS
... 여기에 JS를 적어 ...
  1. 내부 GSP (예 : index.gsp, view.gsp 등)이 태그를 입력하여 JS를 업로드합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top