웹 프론트엔드 JS 튜토리얼 highlight.js를 사용하여 코드 강조 표시

highlight.js를 사용하여 코드 강조 표시

Aug 21, 2017 am 10:39 AM
javascript 가장 밝은 부분

이 글은 코드를 강조하기 위해 highlight.js를 사용하는 js를 주로 소개합니다. 필요한 친구들이 참고할 수 있습니다.

다른 사람들의 하이라이트를 사용하는 코드의 예를 보았습니다. java, js, php 또는 기타 언어이든 문법은 자동으로 키워드를 강조 표시합니다.

그래서 며칠전에 블로그에 글을 쓰게 되었는데, 코드를 접하면서 자연스럽게 다른 분들의 웹사이트가 얼마나 아름다운지 생각이 나더라구요.

공식적인 팅커링이 시작되었습니다.

교체하기 전에 다른 웹사이트로 가서 확인해 보세요. 짧은 책을 붙여넣었을 때의 효과는 다음과 같습니다.

키워드, 메소드 이름, 문자열이 모두 다른 색상으로 표시되어 있지만 코드가 크게 강조되지는 않았지만 무난합니다. 그래서 문서를 보러 가서 다음을 발견했습니다:


<pre class="hljs javascript"><code class="javascript"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">getPersonInfo</span>(<span class="hljs-params">name,age,sex</span>) </span>{
  <span class="hljs-built_in">console</span>.log(name+age+sex);
}
<span class="hljs-comment">//要是我这样传,name就成了18,age成了王二了。</span>
getPersonInfo(<span class="hljs-string">&#39;18&#39;</span>,<span class="hljs-string">&#39;王二&#39;</span>,<span class="hljs-string">&#39;男&#39;</span>);
<span class="hljs-comment">//所以可以这样写</span>
<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">getPersonInfo</span>(<span class="hljs-params">args</span>)</span>{
  <span class="hljs-built_in">console</span>.log(args.name+args.age+args.sex);
}
getPersonInfo({name:<span class="hljs-string">&#39;王二&#39;</span>,age<span class="hljs-string">&#39;18&#39;</span>,sex:<span class="hljs-string">&#39;男&#39;</span>});</code>
로그인 후 복사

hljs? ? 확실히 이것이다. 그래서 우리는 주인공인highlight.js를 찾았습니다.

highlight.js 공식 홈페이지

highlightjs의 사용법은 공식 홈페이지에서 직접 보실 수 있습니다

여기에서는 주로 사용하면서 겪은 함정과 최종 해결 방법을 적어보겠습니다.

1. 뜨거운 두부를 먹기가 너무 불안하다면 시작이 가장 어렵다

공식 홈페이지에 있는 문서에 따르면 코드 세 줄만 있으면 사용이 매우 편리하다고 합니다. 테스트하기 위해 작은 데모를 작성했습니다. 여전히 매우 효과적입니다.


<link href="http://cdn.bootcss.com/highlight.js/8.0/styles/monokai_sublime.min.css" rel="external nofollow" rel="stylesheet"> 
<script src="http://cdn.bootcss.com/highlight.js/8.0/highlight.min.js"></script> 
<script >hljs.initHighlightingOnLoad();</script>
로그인 후 복사

여기에서는 bootstarp에서 제공하는 CDN을 사용합니다. 위의 연결을 통해 CDN에 직접 접속하여 필요한 버전을 선택하면 됩니다. 그렇게 간단합니다.

이 배색도 별로 안 예쁘네요. 예쁜 색상을 원하시면 공식 홈페이지를 직접 참고하시면 됩니다. https://highlightjs.org/static/demo/

2.사용하기 쉬우면 실제 개발에 적용해야죠

적용하기 너무 쉽고 너무 만족스러워서 신청했어요 프로젝트에 넣습니다.

결과적으로 *문제가 발생했습니다....

프로젝트는 require.js를 사용하여 js를 로드하고 전체 애플리케이션은 각도 프레임워크를 사용합니다.

이렇게 직접 작성하면 당연히 사양을 따르지 않으므로 코드를 변경하고 require.js를 사용하여highlight.js를 로드합니다.

require.config에 하이라이트 경로 구성을 추가하세요


&#39;highlight&#39;:&#39;http://cdn.bootcss.com/highlight.js/8.0/highlight.min&#39;,
로그인 후 복사

require 콜백 함수에서 hljs.initHighlightingOnLoad()를 실행하세요.


require(loadList, function ($, angular) {
    $(function () {
      angular.bootstrap(document, [&#39;blogApp&#39;]);
    });
    hljs.initHighlightingOnLoad();
  });
로그인 후 복사

css는 여전히 링크를 통해 로드되거나 less의 @import를 사용하여 로드할 수 있습니다. , 프로젝트의 사용량이 적기 때문에 @import


@import "/lib/highlight/styles/tomorrow-night-eighties.css";
로그인 후 복사

를 선택한 다음 html 페이지에 코드 테스트를 작성했습니다.


<body>
    <p ng-include="&#39;template/header.html&#39;"></p>
    <p>
      <pre class="brush:php;toolbar:false">
        <code class="lang-javascript">
    function init(){
      $scope.req.getArticle();
      $(&#39;pre code&#39;).each(function(i, block) {
        hljs.highlightBlock(block);
      });
    }
        </code>
      

cloud blog by@ermu
로그인 후 복사

그런 다음 브라우저를 열고 살펴보았습니다.

매우 완벽한.

그러나 ng-bind-html을 사용하여 백그라운드에서 반환된 문서를 표시하는 경우:

코드가 전혀 강조 표시되지 않습니다. 주의 깊게 생각해 보세요. 온로드 중에는 렌더링을


hljs.initHighlightingOnLoad();
로그인 후 복사

실행하지 않습니다. 즉, 그 이후의 문서 변경 사항은 실행되지 않습니다. 따라서 인터페이스에서 검색된 문서의 코드를 강조할 수는 없습니다.

구글에서 angular-highlightjs라는 것을 찾았는데, 계속해서 오류가 발생했습니다. 다행히도 코드가 github에 호스팅되어 있어서 살펴보았습니다. 그리고 지침과 공식 웹사이트도 마찬가지로 짧고 문제에 대해 이 질문을 하는 사람이 없어서 누군가가 대답할 수 있기를 바라면서 질문했습니다. 질문 주소

내 생각에는 하이라이트.js가 이에 상응하는 방법을 제공해야 한다고 생각합니다. 로딩이 완료된 후 한 번만 실행해야 하는데 아쉽게도 API 문서가 영어로 되어 있어 읽기가 어려워서 다른 방법을 생각해 보기로 했습니다.

문제에 대한 최종 해결책은 인터페이스가 하이라이트.js를 사용하여 컴파일된 HTML을 반환한다는 것입니다. 백엔드가 노드를 사용하기 때문에 cnode 포럼에서 검색한 결과 마크가 이 문제를 해결한 것으로 나타났습니다.

표시된 구성에 하이라이트 항목만 추가하면 됩니다(npm installhighlight.js 먼저):

var marked = require(&#39;marked&#39;);
var highlight = require(&#39;highlight.js&#39;);
marked.setOptions({
  renderer: new marked.Renderer(),
  gfm: true,
  tables: true,
  breaks: false,
  pedantic: false,
  sanitize: false,
  smartLists: true,
  smartypants: false,
  highlight: function (code) {
  return highlight.highlightAuto(code).value;
 }
});
로그인 후 복사

반환된 문서에는 해당 클래스가 이미 추가되어 있습니다.

rreee

위 내용은 highlight.js를 사용하여 코드 강조 표시의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

WebSocket과 JavaScript를 사용하여 온라인 음성 인식 시스템을 구현하는 방법 WebSocket과 JavaScript를 사용하여 온라인 음성 인식 시스템을 구현하는 방법 Dec 17, 2023 pm 02:54 PM

WebSocket 및 JavaScript를 사용하여 온라인 음성 인식 시스템을 구현하는 방법 소개: 지속적인 기술 개발로 음성 인식 기술은 인공 지능 분야의 중요한 부분이 되었습니다. WebSocket과 JavaScript를 기반으로 한 온라인 음성 인식 시스템은 낮은 대기 시간, 실시간, 크로스 플랫폼이라는 특징을 갖고 있으며 널리 사용되는 솔루션이 되었습니다. 이 기사에서는 WebSocket과 JavaScript를 사용하여 온라인 음성 인식 시스템을 구현하는 방법을 소개합니다.

WebSocket 및 JavaScript: 실시간 모니터링 시스템 구현을 위한 핵심 기술 WebSocket 및 JavaScript: 실시간 모니터링 시스템 구현을 위한 핵심 기술 Dec 17, 2023 pm 05:30 PM

WebSocket과 JavaScript: 실시간 모니터링 시스템 구현을 위한 핵심 기술 서론: 인터넷 기술의 급속한 발전과 함께 실시간 모니터링 시스템이 다양한 분야에서 널리 활용되고 있다. 실시간 모니터링을 구현하는 핵심 기술 중 하나는 WebSocket과 JavaScript의 조합입니다. 이 기사에서는 실시간 모니터링 시스템에서 WebSocket 및 JavaScript의 적용을 소개하고 코드 예제를 제공하며 구현 원칙을 자세히 설명합니다. 1. 웹소켓 기술

JavaScript 및 WebSocket을 사용하여 실시간 온라인 주문 시스템을 구현하는 방법 JavaScript 및 WebSocket을 사용하여 실시간 온라인 주문 시스템을 구현하는 방법 Dec 17, 2023 pm 12:09 PM

JavaScript 및 WebSocket을 사용하여 실시간 온라인 주문 시스템을 구현하는 방법 소개: 인터넷의 대중화와 기술의 발전으로 점점 더 많은 레스토랑에서 온라인 주문 서비스를 제공하기 시작했습니다. 실시간 온라인 주문 시스템을 구현하기 위해 JavaScript 및 WebSocket 기술을 사용할 수 있습니다. WebSocket은 TCP 프로토콜을 기반으로 하는 전이중 통신 프로토콜로 클라이언트와 서버 간의 실시간 양방향 통신을 실현할 수 있습니다. 실시간 온라인 주문 시스템에서는 사용자가 요리를 선택하고 주문을 하면

WebSocket과 JavaScript를 사용하여 온라인 예약 시스템을 구현하는 방법 WebSocket과 JavaScript를 사용하여 온라인 예약 시스템을 구현하는 방법 Dec 17, 2023 am 09:39 AM

WebSocket과 JavaScript를 사용하여 온라인 예약 시스템을 구현하는 방법 오늘날의 디지털 시대에는 점점 더 많은 기업과 서비스에서 온라인 예약 기능을 제공해야 합니다. 효율적인 실시간 온라인 예약 시스템을 구현하는 것이 중요합니다. 이 기사에서는 WebSocket과 JavaScript를 사용하여 온라인 예약 시스템을 구현하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 1. WebSocket이란 무엇입니까? WebSocket은 단일 TCP 연결의 전이중 방식입니다.

JavaScript와 WebSocket: 효율적인 실시간 일기예보 시스템 구축 JavaScript와 WebSocket: 효율적인 실시간 일기예보 시스템 구축 Dec 17, 2023 pm 05:13 PM

JavaScript 및 WebSocket: 효율적인 실시간 일기 예보 시스템 구축 소개: 오늘날 일기 예보의 정확성은 일상 생활과 의사 결정에 매우 중요합니다. 기술이 발전함에 따라 우리는 날씨 데이터를 실시간으로 획득함으로써 보다 정확하고 신뢰할 수 있는 일기예보를 제공할 수 있습니다. 이 기사에서는 JavaScript 및 WebSocket 기술을 사용하여 효율적인 실시간 일기 예보 시스템을 구축하는 방법을 알아봅니다. 이 문서에서는 특정 코드 예제를 통해 구현 프로세스를 보여줍니다. 우리

간단한 JavaScript 튜토리얼: HTTP 상태 코드를 얻는 방법 간단한 JavaScript 튜토리얼: HTTP 상태 코드를 얻는 방법 Jan 05, 2024 pm 06:08 PM

JavaScript 튜토리얼: HTTP 상태 코드를 얻는 방법, 특정 코드 예제가 필요합니다. 서문: 웹 개발에서는 서버와의 데이터 상호 작용이 종종 포함됩니다. 서버와 통신할 때 반환된 HTTP 상태 코드를 가져와서 작업의 성공 여부를 확인하고 다양한 상태 코드에 따라 해당 처리를 수행해야 하는 경우가 많습니다. 이 기사에서는 JavaScript를 사용하여 HTTP 상태 코드를 얻는 방법과 몇 가지 실용적인 코드 예제를 제공합니다. XMLHttpRequest 사용

자바스크립트에서 insertBefore를 사용하는 방법 자바스크립트에서 insertBefore를 사용하는 방법 Nov 24, 2023 am 11:56 AM

사용법: JavaScript에서 insertBefore() 메서드는 DOM 트리에 새 노드를 삽입하는 데 사용됩니다. 이 방법에는 삽입할 새 노드와 참조 노드(즉, 새 노드가 삽입될 노드)라는 두 가지 매개 변수가 필요합니다.

JavaScript 및 WebSocket: 효율적인 실시간 이미지 처리 시스템 구축 JavaScript 및 WebSocket: 효율적인 실시간 이미지 처리 시스템 구축 Dec 17, 2023 am 08:41 AM

JavaScript는 웹 개발에 널리 사용되는 프로그래밍 언어인 반면 WebSocket은 실시간 통신에 사용되는 네트워크 프로토콜입니다. 두 가지의 강력한 기능을 결합하면 효율적인 실시간 영상 처리 시스템을 만들 수 있습니다. 이 기사에서는 JavaScript와 WebSocket을 사용하여 이 시스템을 구현하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 첫째, 실시간 영상처리 시스템의 요구사항과 목표를 명확히 할 필요가 있다. 실시간 이미지 데이터를 수집할 수 있는 카메라 장치가 있다고 가정해 보겠습니다.

See all articles