2013-05-31 2 views
5

다트 웹 UI에서 간단한 웹 사이트를 만들고 있습니다. 각 페이지에는 머리글 (사이트 탐색 포함)과 바닥 글이 있습니다. 나는 머리글과 바닥 글에 사용되는 부품을했습니다, 각 페이지는 다음과 같은 :이 잘 작동하지만 구성 요소는 HTML 자체에 삽입하지만 다트 (또는 자바 스크립트)에서 동적으로로드되지 않습니다웹 UI 구성 요소를 HTML로 컴파일

<!DOCTYPE html> 
<html> 
<head> 
    <title>Test</title> 

    <link rel="import" href="header.html"> 
    <link rel="import" href="footer.html"> 
</head> 

<body> 
    <header-component></header-component> 

    Page content... 

    <footer-component></footer-component> 
</body> 
</html> 

암호. 웹 UI 컴파일러에서 HTML 파일 자체에 머리글과 바닥 글을 삽입하여 JavaScript가 비활성화 된 사용자와 검색 엔진에 표시되도록 할 수 있습니까?

답변

2

직접적인 방법은 없습니다.

이 일반적으로 서버 측 작업입니다 : 서버가 필요한 HTML을 생성하기 위해 처리합니다.

웹 구성 요소는 클라이언트 측에 대해 모두, 그래서 그들은 이미 브라우저에 전달 무슨에서 작동합니다. 당신은 당신이 원하는 것을 얻을 수있는 스크립트를 확장 할 수 있도록

그러나, build.dart 스크립트 프로젝트 변화 때마다 파일을 실행됩니다. 나는 이것이 좋은 접근법이라고 생각하지 않지만 당신의 문제를 해결합니다.

THIS IS A HEADER 

는 이제 확장 : 이제

<header></header> 

일부 내용으로 프로젝트에 header.html 파일을 추가 :

먼저 (내 경우 web/webuitest.html에) 대상 html 파일에 다음 자리 표시자를 추가 build.dart 스크립트이므로 header.html이 수정되었는지 확인하고, 수정 된 경우 webuitest.html :

0을 업데이트합니다.

이 접근법의 한 가지 결과는 대상을 다시 작성하면 build.dart이 다시 트리거되므로 출력 파일이 두 번 빌드되지만 큰 문제는 아닙니다. 물론

이 훨씬 더 할 수 있고, 사람도 라이브러리로 포장 할 수있다.

+0

그리 좋지는 않지만 작동합니다. 감사. – JJJ

+0

맞아, 지옥처럼 추악하다. 사실, 나는 이것을 위해 도서관을 짓는 것에 대해 생각했지만 그렇게하지 않기로 결정했다. 내가 자주보고 싶어하는 것이 아니기 때문이다. –

+0

@ Juhana, BTW, 처음에는'out' 디렉토리에있는 파일들만 재 작성하는 것에 대해 생각했지만 편집자도이 파일들을 모니터합니다. (나는 이것을 위해 제출 된 버그가 있다고 생각합니다.) 그래서 무한 재건 루프를 트리거합니다 –

2

현재로서는 아니요. 불가능합니다. 원하는 것은 서버 측 렌더링으로 템플릿의 페이지 렌더링 (검색 스파이더 포함)을 요청할 때 클라이언트에 직접 제공 할 수 있습니다.

당신은 그러나이 문제를 추적 할 수 있습니다 : 그것은 더 나은 것들을 찾고 끝낸 https://github.com/dart-lang/web-ui/issues/107?source=c

.

+0

잘 build.dart' 단순히 때 다른 파일 변경 파일을 다시 작성하도록 확장 할 수없는 이유 '이유가 없다. 못생긴, 확실하지만 복잡하지는 않습니다. –

+0

저는 서버 사이드 렌더링이 필요하지 않습니다. 단지 "이 페이지를 렌더링하기 전에 바로 여기에 파일을 삽입하십시오."하지만이 기능을 사용한다고 가정합니다. – JJJ

+0

아 글쎄, 단지 @ Zdeslav의 솔루션이 전혀 확장되지 않습니다 :) –

관련 문제