รหัสเน้นไวยากรณ์ด้วย Javascript [ปิด]


109

ไลบรารี Javascript ใดที่คุณสามารถแนะนำสำหรับไวยากรณ์ที่เน้น <code> บล็อกใน HTML

(โปรดขอคำแนะนำหนึ่งข้อต่อหนึ่งคำตอบ)


คำตอบ:


103

StackOverflow ใช้ไลบรารีPrettify


ฉันสองสิ่งนี้ Google Code ใช้สำหรับการไฮไลต์ repo ของตนเอง (เนื่องจากเขียนไว้) และตรวจจับภาษาโดยอัตโนมัติ
Karan

แน่นอนว่าการใช้ภาษาที่ตรวจจับภาษา "โดยอัตโนมัติ" นั้นทำให้เครื่อง / เบราว์เซอร์ของลูกค้ามีน้ำหนักมากขึ้น ...
James

2
คุณสามารถให้ภาษา Prettify ได้ถ้าคุณรู้มันจะช่วยเพิ่มประสิทธิภาพ สิ่งนี้ไม่ได้ใช้ใน StackOverflow เนื่องจากผู้ชมภาษาจำนวนมาก
Vincent Robert

เพิ่งเพิ่มสิ่งนี้ในเว็บไซต์ของฉันและมันยอดเยี่ยมและใช้งานง่ายมาก!
Lawrence Dol

@ Vincent: ปรับปรุงมากกว่าประสิทธิภาพ ;-)
SamB

44

ฉันเพิ่งพัฒนาสิ่งที่เรียกว่าสายรุ้ง

เป้าหมายหลักในการออกแบบคือการทำให้ไลบรารีหลักมีขนาดเล็กและทำให้นักพัฒนาสามารถขยายได้ง่าย

ดูhttp://rainbowco.de


2
ฉันเพิ่งวิ่งข้าม Rainbow ในวันนี้ - สำหรับฉันแล้วดูเหมือนว่ามันสามารถแยกแยะได้ละเอียดกว่า Prettify (เช่นสามารถบอกได้ว่าเมื่อrdf:typeใดที่ใช้เป็นองค์ประกอบและเมื่อเป็นแอตทริบิวต์)
Roger_S

3
นี่ต้องขึ้นไปด้านบนเครก ฉันลองวิธีแก้ปัญหาอื่น ๆ ทั้งหมดและมีเพียง Rainbow เท่านั้นที่จัดการ Python ได้อย่างถูกต้องและมีสไตล์ชีตธีมที่อ่านได้ ปลั๊กอินที่น่าทึ่ง!
Blender


15

jQuery Syntax Highlighterเป็นเครื่องมือใหม่ที่ใช้ Prettify ของ Googleเน้นข้อความแบบ JavaScript ธรรมดาที่ได้รับความนิยมอย่างมาก

รองรับสิ่งต่างๆเช่นcodeและpreบล็อกสามารถใช้ชื่อคลาสlanguage-javascriptเพื่อระบุว่าเราต้องการให้ไฮไลต์รวมถึงการตัดคำ คุณสามารถคัดลอกและวางโค้ดได้โดยเลือกตามปกติแทนที่จะต้องเปิดมุมมองดิบเหมือนคนอื่น ๆ สามารถปรับแต่งเพิ่มเติมได้โดยใช้แอตทริบิวต์ข้อมูล HTML5 data-shหรือผ่านการระบุตัวเลือกเมื่อเริ่มต้น ทางเลือกที่มีเสถียรภาพที่ยอดเยี่ยมซึ่งได้รับการอัปเดตเป็นประจำ


ผู้เขียนบอกว่ามันขึ้นอยู่กับ Prettify ของ Google ไม่ใช่ SyntaxHighlighter ดูเหมือน SyntaxHighlighter 3 แต่ดูเหมือนว่าจะต้องใช้งานน้อยกว่ามากในการตั้งค่า ขอบคุณสำหรับลิงค์!
Tieson T.

15

สิ่งที่เกี่ยวกับปริซึมโดย Lea Verou

จากการประกาศโพสต์บล็อกของเธอในเดือนมิถุนายน (2555):

  • มันเล็กมาก แกนมีขนาดเพียง 1.5KB minified & gzipped
  • มันขยายได้อย่างเหลือเชื่อ ไม่เพียง แต่การเพิ่มภาษาใหม่ ๆ เป็นเรื่องง่าย (ซึ่งจะได้รับจากเครื่องมือเน้นไวยากรณ์ทุกภาษาในปัจจุบัน) แต่ยังขยายภาษาที่มีอยู่
  • รองรับการทำงานแบบขนานผ่าน Web Workers เพื่อประสิทธิภาพที่ดีขึ้นในบางกรณี
  • ไม่ได้บังคับให้คุณใช้มาร์กอัปเฉพาะของปริซึมไม่ใช่แม้แต่ชื่อคลาสเฉพาะของปริซึม แต่เป็นมาร์กอัปมาตรฐานเท่านั้นที่คุณควรใช้ต่อไป ดังนั้นคุณสามารถลองใช้เวลาสักครู่ลบออกหากคุณไม่ชอบและไม่ทิ้งร่องรอยไว้ข้างหลัง

สิ่งนี้กลายเป็นตัวเลือกที่ดีที่สุดสำหรับคำตอบทั้งหมดสำหรับฉันเนื่องจากความสะดวกในการเพิ่มคำจำกัดความภาษาใหม่
Mike Grace


5

หากคุณใช้ jQuery มี Chilli:

http://code.google.com/p/jquery-chili-js/

สิ่งที่คุณต้องทำคือใส่ jquery-Chili.js และ recipes.js แล้วทำไฮไลต์ด้วย

$("code").chili();

มันควรจะเข้าใจภาษาด้วยตัวมันเอง


ลิงก์ไปยังตัวอย่างในหน้านั้นทั้งหมดนำไปสู่โดเมนที่หมดอายุซึ่งเต็มไปด้วยโฆษณาดังนั้นจึงเป็นเรื่องยากเล็กน้อยที่จะทราบว่าปากกาเน้นข้อความนี้มีลักษณะอย่างไร
Nathan Osman

5

ฉันมีความสุขมากกับSHJS รองรับหลากหลายภาษาและดูเหมือนจะรวดเร็วและแม่นยำ

นี่คือตัวอย่างที่ผมใช้มันในบล็อกของฉัน ฉันใช้ไฟล์ CSS ที่กำหนดเองซึ่งจำลองการเน้นไวยากรณ์ของ Coda ส่งอีเมลถึงฉันหากคุณต้องการใช้


4

jQuery.Syntaxเป็นปากกาเน้นข้อความไวยากรณ์ที่รวดเร็วและมีน้ำหนักเบามาก มีการโหลดไฟล์ซอร์สไวยากรณ์แบบไดนามิกและรวมอย่างสมบูรณ์โดยใช้ CSS หรือ modelines

ได้รับการพัฒนาโดยเฉพาะเพื่อเติมเต็มช่องว่างนั่นคือ: ตัวแยกวิเคราะห์ไวยากรณ์ฝั่งไคลเอ็นต์ที่รวดเร็วและสะอาด


น่าเสียดายที่คิดว่าข้อความ FpML มาตรฐานเป็นสแปม :)
ehosca

@ehosca คุณสามารถให้คำชี้แจงเกี่ยวกับปัญหาที่คุณพบได้หรือไม่?
ioquatix

เมื่อฉันวาง xml ในgoo.gl/PPcDxไปที่goo.gl/qSqm9มันขึ้นว่าเนื้อหาไม่ถูกต้องดูเหมือนจะเป็นสแปม หวังว่านี่จะช่วยได้
ehosca

คุณต้องมีการแบ่งบรรทัดในข้อความมิฉะนั้นจะดูเหมือนสแปมลิงก์ ฉันจำสูตรที่ฉันใช้ไม่ได้ แต่ฉันคิดว่าหากคุณมี URL มากกว่าหนึ่งรายการต่อบรรทัดข้อความนั้นจะถือว่าเป็นสแปมนั่นเป็นเพราะบอทจำนวนมากกำลังสแปมระบบ ( syntax-highlighing.com )
ioquatix

3

หากคุณกำลังมองหาการเน้นไวยากรณ์ในการแก้ไขในเบราว์เซอร์ลองCodeMirror


3

ฉันไม่ได้โต้แย้ง แต่คิดว่ามันคุ้มค่าที่จะกล่าวถึงว่าหากคุณใช้ CMS หรือแพลตฟอร์มบล็อกการใช้ปากกาเน้นข้อความแบ็กเอนด์จะดีกว่าด้วยเหตุผลที่ชัดเจน - ดูGeshi ( http://qbnz.com/highlighter/ ) หากคุณสนใจ จริงๆแล้วคุณสามารถตั้งค่าเซิร์ฟเวอร์ของคุณเพื่อแยกวิเคราะห์เนื้อหา HTML ผ่านเทคโนโลยีแบ็กเอนด์ได้ดังนั้นจึงไม่จำเป็นต้องใช้เครื่องมือเน้นข้อความ JS เลย (ฟังก์ชันเดียวที่เพิ่มเข้ามาคือความสามารถในการพิมพ์ / คัดลอก [โดยใช้ swf])


2
มันไม่ชัดเจนสำหรับฉัน เหตุใดการใช้ปากกาเน้นข้อความแบ็กเอนด์จึงดีกว่า
Evan P.

1
ใช่ฉันเกินไปจะจริงๆชอบที่จะรู้ว่าอะไรคือ "เห็นได้ชัด" เกี่ยวกับการเลือกที่จะส่งการตอบสนองที่มีขนาดใหญ่ให้กับลูกค้า ...
ZenMaster

1
ฉันต้องการให้การเน้นไวยากรณ์ยังคงปรากฏบนอุปกรณ์ที่ไม่ได้เปิดใช้งาน JS นอกจากนี้ไฮไลต์ฝั่งไคลเอ็นต์ยังมีต้นทุนรันไทม์ซึ่งอาจค่อนข้างสูงหากคุณมีโค้ดจำนวนมากที่จะเน้น ที่กล่าวว่าขึ้นอยู่กับกรณีการใช้งานเฉพาะของคุณ :)
James

อุปกรณ์ใดบ้างที่ไม่ได้เปิดใช้งาน JS
Jack Giffin


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.