Angular9와 Firebase에서 블로그를 만들어 보는 6

6389 단어 AngularMarkdown
지난번 , 블로그 내용을 Firestore에서 가져올 수 있습니다.

이번에는 표시를 리치로 해 보자고 생각합니다.

정책



나중에, 블로그는 Qiita와 같이 마크다운으로 걸게 하고 싶다-라고 생각하고 있으므로, 우선은 표시를 마크다운에 대응시키고 싶습니다.

ngx-markdown 을 사용합니다.

설치


npm install ngx-markdown --save

angular.json 수정


  • marked.js의 경로를 지정합니다.
  • 강조 표시를 위해 prism.js/css 경로도 설정하십시오.

    angular.json
    {
      ・・・
      "projects": {
        "my-blog": {
          ・・・
          "architect": {
            "build": {
              ・・・
              "options": {
                ・・・
                "styles": [
                  "node_modules/prismjs/themes/prism-okaidia.css",
                  ・・・
                ],
                "scripts": [
                  "node_modules/marked/lib/marked.js",
                  "node_modules/prismjs/prism.js"
                ]
    

    MarkdownModule 가져오기



    src/app/app.module.ts
    ・・・
    import { MarkdownModule } from 'ngx-markdown';
    
    @NgModule({
      ・・・
      imports: [
        ・・・
        MarkdownModule.forRoot(),
    

    마크다운 형식의 문자열 출력


  • 보기만 하면 markDown 지시어를 지정합니다.
  • ngPreserveWhitespaces에서 줄 바꿈을 사용합니다.


  • src/app/blogs/detail/detail.component.html
    <div *ngIf="detail" class="blog-detail">
        <div class="title-area">
            <h1>{{detail.title}}</h1>
            <span class="date">作成日:{{detail.created_at | date: 'yyyy/MM/dd HH:mm'}}</span>
        </div>
        <div class="contents-area">
            <div markdown ngPreserveWhitespaces>
                {{contents}}
            </div>    
        </div>
    </div>
    
  • 컴포넌트 측에서 \n<br>를 줄 바꿈 코드로 변환합니다.

    src/app/blogs/detail/detail.component.ts
      get contents() {
        return this.detail.contents.replace(/(\\n|\<br>)/g, '\n');
      }
    

    Firestore에 데이터 등록


  • Firestore에는 개행을 등록할 수 없으므로 \n 로 등록합니다
  • Angular에서 \n<br>를 줄 바꿈 코드로 변환합니다.

  • # マークダウンに対応しました\n\n## リスト\n\n- リスト1\n- リスト2\n\n## テーブル\n\n|列1|列2|\n|---|---|\n|値1|値2|\n\n## コード\n\n```test.txt\nコード\n```\n\n## 引用\n\n> test\n\n
    

    이런 느낌이 들었습니다.





    요약



    다음에는 반응형 대응하여 다양한 화면 폭으로 좋은 느낌으로 보이게 하고 싶습니다.

    (추기)
    Angular9와 Firebase로 블로그를 만들어 보는 7(Qiita의 투고 이력을 표시한다)

    좋은 웹페이지 즐겨찾기