Как правильно отображать исходный код на веб-странице с использованием Angular?

Как можно реализовать вывод блока кода на странице, который можно скопировать на различных языках программирования (php/java/js) из браузера?
Изображение к вопросу
Изображение к вопросу
Изображение к вопросу
  • 19 сентября 2023 г. 20:37
Ответы на вопрос 3
Для отображения исходного кода на веб-странице с использованием Angular вы можете использовать библиотеку Prism.js.

1. Установите Prism.js в свой проект Angular с помощью npm:

```
npm install prismjs --save
```

2. Создайте сервис CodeHighlightService для загрузки и инициализации стилей Prism.js:

```typescript
import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root'
})
export class CodeHighlightService {
  private isInitialized = false;

  constructor() {}

  initialize() {
    if (!this.isInitialized) {
      // Загрузка и инициализация стилей Prism.js
      const script = document.createElement('script');
      script.src = 'https://cdnjs.cloudflare.com/ajax/libs/prism/1.23.0/prism.min.js';
      script.onload = () => {
        this.isInitialized = true;
        Prism.highlightAll();
      };
      document.head.appendChild(script);
    }
  }
}
```

3. В компоненте, где вы хотите отобразить код, вызовите метод `initialize()` сервиса CodeHighlightService при загрузке компонента:

```typescript
import { Component, OnInit } from '@angular/core';
import { CodeHighlightService } from './code-highlight.service';

@Component({
  selector: 'app-code',
  templateUrl: './code.component.html',
  styleUrls: ['./code.component.css']
})
export class CodeComponent implements OnInit {

  constructor(private codeHighlightService: CodeHighlightService) { }

  ngOnInit(): void {
    this.codeHighlightService.initialize();
  }

}
```

4. В шаблоне компонента используйте тег `<pre>` для обертывания блока кода и добавьте класс `language-<lang>` для языка программирования (php/java/js), чтобы Prism.js использовал соответствующий синтаксический подсветчик:

```html
<pre class="language-php">
  <code>
    &lt;?php
    // Ваш код PHP здесь
    ?&rt;
  </code>
</pre>

<pre class="language-java">
  <code>
    // Ваш код Java здесь
  </code>
</pre>

<pre class="language-javascript">
  <code>
    // Ваш код JavaScript здесь
  </code>
</pre>
```

5. Подключите стили Prism.js в файле `angular.json`:

```json
"styles": [
  // Другие стили...
  "node_modules/prismjs/themes/prism-tomorrow.css"
],
```

Теперь блоки кода на вашей веб-странице будут отображаться с подсветкой синтаксиса для соответствующего языка программирования и будут кликабельными для копирования.
https://www.npmjs.com/package/ngx-highlightjs 
 Установите пакет ngx-highlightjs для подсветки синтаксиса веб-страниц.
Похожие вопросы