[javascript] Firebase - 여러 디렉토리에 파일 놓기


Answers

이것은 어려운 문제였습니다. Firebase에 배포 할 때 Firebase는 공개 디렉토리에서 index.html 파일을 찾습니다. 이 공용 디렉토리는 루트 디렉토리라고도합니다.

난 각도 애플 리케이션과 함께 일하고 있었고, 나는 부분적으로 잘못된 경로를 사용하고있었습니다. 그래도 꽤 까다 롭습니다.

나는 페이지의 제목을 얻기 위해 $document 종속성을 주입 한 각도 컨트롤러를 설정해야했다. 페이지의 제목이 루트 페이지의 제목과 일치하면 ng-href 를 사용하여 views 디렉토리를 상대 URL 앞에 추가합니다.

그렇지 않으면, 당신이 views 디렉토리에 있었고, 더 많은 뷰를 검색했다면, views/views/page1.html 과 같은 경로를 보여줄 것입니다. 이것이 우리가 다른 ng-href 조건으로 사용하는 이유입니다.

내 탐색이 어떻게 생겼는지

<ul class='nav navbar-nav'>

        <li><a ng-href="{{ page == home ? 'views/help.html' : 'help.html' }}">Help</a></li>
        <li><a ng-href="{{ page == home ? 'views/achievements.html' : 'achievements.html' }}">Achievements</a></li>
        <li><a ng-href="{{ page == home ? 'views/scores.html' : 'scores.html' }}">Scores</a></li>
        <li><a ng-href="{{ page == home ? 'views/shop.html' : 'shop.html' }}">Shop</a></li>
        <li><a ng-href="{{ page == home ? 'views/faq.html' : 'faq.html' }}">FAQs</a></li>
        <li><a ng-href="{{ page == home ? 'views/related.html': 'related.html' }}">More Games</a></li>
</ul>

결국, 내 디렉터리 구조는 다음과 같습니다.

public
  assets
    stylesheets
      styles.css
  views
    partials
      scripts.html
      header.html
      footer.html
    page1.html
    ...
  scripts
    controllers
    script1.js
    ...
  index.html

firebase.json 파일을 변경하면 색인 디렉토리를 views 디렉토리 내에 둘 수 있습니다.

{
    "firebase": "firebase-app",
    "public": "root/views",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ]
}

firebase 앱에서 공개 키워드를 변경하기 만하면됩니다. 조건부로 경로를 변경해야한다는 것을 잊었 기 때문에 주위를 둘러 보았습니다. 또한, 이전 디렉토리로 돌아가려면 ../ 과 같은 것을해야 할 것입니다.

Question

나는 프로젝트를보다 정비성있게 구성하려고 시도하고있다. 나는 많은 수의 html 템플릿을 가지고 있으며 공개 디렉토리에 모든 템플릿을 넣어야합니다. 정말 이걸 정리하고 싶었어.

public directory
  views
    index.html
    register.html
    terms.html
    privacy.html
    support.html
  stylesheets
    styles.css
  scripts
    script.js
    authentication.js

하지만 대신이게 보입니다.

public
  index.html
  register.html
  terms.html
  privacy.html
  support.html
  script.js
  authentication.js
  styles.css

firebase.json 파일입니다.

   {
  "firebase": "funmathgame",
  "public": "mathgame",
  "ignore": [
    "firebase.json",
    "**/.*",
    "**/node_modules/**"
  ]
}

내가 얻은 오류 메시지는 다음과 같습니다.

페이지를 찾을 수 없음

파일이 존재하지 않으며 현재 디렉토리에 index.html 이 없거나 루트 디렉토리에 404.html 이 없습니다.

왜 내가 이걸보고 있니?

응용 프로그램에 잘못된 디렉토리를 배포했을 수 있습니다. firebase.json 을 확인하고 public 디렉토리가 index.html 파일이있는 디렉토리를 가리키고 있는지 확인하십시오.

이 페이지를 사용자 정의 오류 페이지로 바꾸려면 사이트 루트에 404.html 을 추가 할 수도 있습니다.

첫 번째 구조는 코드를 분리하기 때문에 더 좋습니다. 이 구조는 텍스트 편집기에서 파일을 실행할 때마다 작동합니다. 하지만 firebase에 배포 할 때마다 작동하지 않습니다.

예를 들어, 이것은 내 스타일 시트를 참조하는 방법입니다.

<head>
  <title>Frequently Asked Questions</title>
  <link rel='stylesheet' href='https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css'> 
  </link>
<link rel='stylesheet' href='../stylesheets/styles.css'></link>

위의 디렉토리 구조에서 public/views 디렉토리에 있습니다. 나는 한 디렉토리를 공용 디렉토리로 옮긴 다음 스타일 시트 디렉토리로 전달합니다. 그러나 여기에 내 index.html 파일은 공용 디렉토리가 아니라 public/views 디렉토리에 있습니다.

필자는 Firebase 웹 사이트를 살펴 봤지만 여전히 아이디어를 찾을 수 없습니다.

https://www.firebase.com/docs/hosting/guide/full-config.html




Links