Grails 2.4로 업그레이드했고 Asset-Pipeline1.8.7 플러그인을 사용하고 있습니다. Javascript에서 이미지에 액세스하는 방법을 궁금합니다. Google Maps Javascript V3 API를 사용 중이며 Javascript에서 일부 마커 아이콘을 설정해야합니다. 태그를 사용하여 GSP에 일부 자바 스크립트를 만들고 내 app.js 코드에서 파일에 액세스하는 방법이 있습니까? 이것이 가능하지 않다면, 자산에서 컴파일 된 이미지를 어떻게 참조 할 수 있습니까?Grails Asset-Pipeline 플러그인을 사용하여 Javascript에서 이미지에 어떻게 액세스합니까?
답변
나는 이상적인 솔루션이 경우에 무엇인지 모르지만 해결책이 될 수 있습니다 당신의 JS 코드에서 '../assets/use-control.png'와 같은
- 를 사용하여 상대 경로.
- dom에 img를 추가하고 js 코드에서 참조하십시오.
- dom의 해당 요소에
data-imgpath="${asset.assetPath(src: 'use-control.png')}"
속성을 추가하고이 링크를 사용하십시오.
이 답변은 효과가 있습니다. 충분한 평판이 없기 때문에 투표 할 수 없습니다. 전철기. –
어느 것이 작동할까요? – genuinefafa
나는이 답변도 좋아하지만 아직 평판 포인트가 부족하기 때문에 투표를 할 수 없다. –
예는 GSP에 ${assetPath(src: 'img.png')}
을 넣어
이것은 지금까지 가장 간단하고 정직한 대답입니다. – Gideon
@davydotcom, javascript 파일 o stylesheet file에서 $ {assetPath (src : 'img.png')}}을 어떻게 사용할 수 있습니까? grails : 자산 : url : https://assets.domain.com/ storagePath :/opt/domain/assets/ –
당신은 당신의 자산 디렉토리에 루트 경로를 보유하고 전 세계적으로 사용 가능한 객체를 정의하고 축적하기 위해 URL을 자산이를 사용할 수 있습니다. 다음과 같이 다른 곳에서 사용
<g:javascript>
window.grailsSupport = {
assetsRoot : '${ raw(asset.assetPath(src: '')) }'
};
</g:javascript>
그런 다음 레이아웃 헤드 섹션에이 코드를 추가
<g:javascript>
var pathToMyImg = window.grailsSupport.assetsRoot + 'images/google_maps_marker.png';
</g:javascript>
업데이트를 2015년 8월 6일
의 릴리스 노트를 확인하면서 asset-pipeline plugin 자산의 비 - 다이제스트 버전이 더 이상 WAR 파일에 저장되지 않는다는 것을 알았습니다. 이것은 나의 제안 된 솔루션을 나누기는 응용 프로그램이 WAR로 배포 할 때 것을 의미하지 않을 것이다 :
2015년 5월 31일 2.2.3 릴리스 - 더 이상 반 오버 헤드를 절단, 전쟁 파일에 비 소화 버전을 저장. 또한 Commons I/O 의존성을 삭제했습니다. 더 빠른 바이트 스트림.
이
명시 적 사전에 모든 이미지를 정의 할 필요가 더 이상 스크립트에서 동적으로 경로를 구성 할 수 있음을 의미합니다 :<g:javascript>
window.grailsSupport = {
myImage1 : '${assetPath(src: 'myImage1.jpg')}',
myImage2 : '${assetPath(src: 'myImage2.jpg')}'
};
</g:javascript>
업데이트 2016년 5월 25일
grails.assets.skipNonDigests
(기본값 : false
)을 설정하여 저작물의 다이제스트 버전이 내장 된 war 파일에 포함되어있는 경우 구성 할 수 있습니다.
일반적으로 'skipNonDigests'를 해제 할 필요는 없습니다. Tomcat은 자동으로 비 다이제스트 이름으로 파일을 제공하고
manifest.properties
별칭 맵을 통해 storagePath를 사용하여 파일을 복사합니다. 이것은 단순히 스토리지를 절반으로 줄입니다. 그러나 cdn-asset-pipeline 플러그인 외부의 cdn에 업로드하는 것과 'target/assets'의 내용을 통해 업로드하는 것과 같은 일을 시도하는 경우. 이것은 여전히 유용 할 수 있습니다.
브라우저에서 캐싱 문제를 해결하기 위해 제안 된 솔루션을 사용하여 미리 필요한 모든 이미지를 미리 정의 할 수 있습니다 (애셋의 다이제스트 버전은 파일 이름에 content-hash가 있음).
좋은 답변이지만 충분한 평판 포인트를 얻지 못했습니다. –
대신 HTML5의 data- * 속성을 사용할 수 있습니다.
여기 좀 더 설명했습니다 : load images from javascript
- 1. JavaScript에서 PHP 변수에 어떻게 액세스합니까?
- 2. 크롬 확장 프로그램은 페이지의 이미지에 어떻게 액세스합니까?
- 3. Grails 플러그인의 application.properties에있는 값에 어떻게 액세스합니까?
- 4. 정제소 CMS에서 업로드 된 이미지에 어떻게 액세스합니까?
- 5. 내 리소스에있는 내 애플리케이션 이미지에 어떻게 액세스합니까?
- 6. JavaScript에서 바이트 수준 정보에 어떻게 액세스합니까?
- 7. JavaScript에서 포함 된 ASP.NET GlobalResources에 어떻게 액세스합니까?
- 8. Grails 프로젝트에서 Java 리소스에 어떻게 액세스합니까?
- 9. Grails 구성에서 다른 환경의 변수에 어떻게 액세스합니까?
- 10. JavaScript에서 [] 연산자를 사용하여 Array로부터 상속 된 객체에 어떻게 액세스합니까?
- 11. Grails Shiro 플러그인을 사용하여 AuthorizingRealm 구현
- 12. grails 리소스 플러그인을 다시로드하지 못했습니다. grails 2.3을 사용하여
- 13. 액티브 grails 플러그인을 확인하십시오
- 14. Grails 플러그인을 어디에 설치해야합니까?
- 15. Grails Cxf 클라이언트 플러그인을 사용하여 disableCNCheck 설정하기
- 16. Groovy-Eclipse 플러그인을 사용하여 Grails 개발하기
- 17. javascript에서 액션에 의해 전달 된 매개 변수에 어떻게 액세스합니까?
- 18. 분류자를 사용하여 항아리에 어떻게 액세스합니까?
- 19. 다른 Grails 플러그인에서 grails 플러그인을 구성하는 방법
- 20. 레일 3.1의 이미지에 어떻게 액세스합니까? 이전에 내 샘플 프로젝트에서
- 21. Android Intent에서 카메라로 촬영 한 전체 크기 이미지에 어떻게 액세스합니까?
- 22. iOS : Apple에서 호스팅하는 IAP 콘텐츠의 이미지에 어떻게 액세스합니까?
- 23. 클라이언트 쪽 javascript에서 Passport의 req.user 변수에 어떻게 액세스합니까?
- 24. 내 HTML로 작성된 javascript에서 scope.postresult 값에 어떻게 액세스합니까?
- 25. javascript에서 함수의 재귀 호출에서 동일한 변수에 어떻게 액세스합니까?
- 26. JS - Dart interop을 통해 JavaScript에서`this '에 어떻게 액세스합니까?
- 27. Opera의 Javascript에서 8 비트 바이너리 데이터에 어떻게 액세스합니까?
- 28. grails 플러그인을 안전하게 업데이트하는 방법
- 29. 어떻게 PHP를 사용하여 요청을하고 jquery를 사용하여 액세스합니까?
- 30. LDAP 전용 보안 시스템을위한 Grails Spring Security 플러그인을 어떻게 오버라이드합니까?
자바 스크립트에서 resource plugins taglib을 사용하고 있습니까? 또는'$ {resource (dir : "", file : ""}}'와 같은 것? – wwarlock
Resources Plugin을 사용했지만 app.js 파일의 이미지 위치에 액세스하는 방법을 알 수 없습니까? Grails 2.4에서는 Asset-Pipeline Manager를 사용하고 있지만 동일한 문제가 있습니다. g : javascript 태그를 사용하여 GSP 내에서 JS Var을 선언했지만 내 app.js에서이 변수를 참조 할 수없는 예제를 보았습니다. –
리소스 플러그 인 taglib 및 리소스 메소드 (플러그인이 아닌 원시 grails 메소드)를 사용하여 루트 시작을 WEB-APPS에서 시작하십시오. asset-pipeline plugin taglib 및 assetPath 메소드를 사용하면 root는 grails-app/assets에서 시작합니다. 아래 예제를보십시오. './grails-app/assets/stylesheets/style.css'에있는 파일 그리고 코드에서 사용합니다 : 'assetPath (src : "stylesheets/style.css")' 또는 보기의 태그로 : ' 자원과 동일 –
wwarlock