940 từ
5 phút
Expressive Code Example - Ví dụ về Expressive Code

Here, we’ll explore how code blocks look using Expressive Code. The provided examples are based on the official documentation, which you can refer to for further details.

Ở đây, chúng ta sẽ khám phá cách các khối mã (code blocks) hiển thị khi sử dụng Expressive Code Các ví dụ được cung cấp dựa trên tài liệu chính thức, bạn có thể tham khảo thêm để biết chi tiết.

Expressive Code#

Syntax Highlighting#

Tô sáng cú pháp#

Syntax Highlighting Tô sáng cú pháp

Regular syntax highlighting#

Tô sáng cú pháp thông thường#

console.log('This code is syntax highlighted!')

Rendering ANSI escape sequences#

Kết xuất chuỗi thoát ANSI#

Terminal window
ANSI colors:
- Regular: Red Green Yellow Blue Magenta Cyan
- Bold: Red Green Yellow Blue Magenta Cyan
- Dimmed: Red Green Yellow Blue Magenta Cyan
256 colors (showing colors 160-177):
160 161 162 163 164 165
166 167 168 169 170 171
172 173 174 175 176 177
Full RGB colors:
ForestGreen - RGB(34, 139, 34)
Text formatting: Bold Dimmed Italic Underline

Editor & Terminal Frames#

Khung trình soạn thảo & terminal#

Editor & Terminal Frames Khung trình soạn thảo & terminal

Code editor frames#

Khung trình soạn thảo mã#

my-test-file.js
console.log('Title attribute example')

src/content/index.html
<div>File name comment example</div>

Terminal frames#

Khung terminal#

Terminal window
echo "This terminal frame has no title"

PowerShell terminal example
Write-Output "This one has a title!"

Overriding frame types#

Ghi đè loại khung#

echo "Look ma, no frame!"

PowerShell Profile.ps1
# Without overriding, this would be a terminal frame
function Watch-Tail { Get-Content -Tail 20 -Wait $args }
New-Alias tail Watch-Tail

Text & Line Markers#

Văn bản & đánh dấu dòng#

Text & Line Markers Văn bản & đánh dấu dòng

Marking full lines & line ranges#

Đánh dấu toàn bộ dòng & phạm vi dòng#

// Line 1 - targeted by line number
// Line 2
// Line 3
// Line 4 - targeted by line number
// Line 5
// Line 6
// Line 7 - targeted by range "7-8"
// Line 8 - targeted by range "7-8"

Selecting line marker types (mark, ins, del)#

Chọn loại đánh dấu dòng (mark, ins, del)#

line-markers.js
function demo() {
console.log('this line is marked as deleted')
// This line and the next one are marked as inserted
console.log('this is the second inserted line')
return 'this line uses the neutral default marker type'
}

Adding labels to line markers#

Thêm nhãn cho đánh dấu dòng#

labeled-line-markers.jsx
<button
role="button"
{...props}
value={value}
className={buttonClassName}
disabled={disabled}
active={active}
>
{children &&
!active &&
(typeof children === 'string' ? <span>{children}</span> : children)}
</button>

Adding long labels on their own lines#

Thêm nhãn dài trên các dòng riêng#

labeled-line-markers.jsx
<button
role="button"
{...props}
value={value}
className={buttonClassName}
disabled={disabled}
active={active}
>
{children &&
!active &&
(typeof children === 'string' ? <span>{children}</span> : children)}
</button>

Using diff-like syntax#

Sử dụng cú pháp giống diff#

this line will be marked as inserted
this line will be marked as deleted
this is a regular line

--- a/README.md
+++ b/README.md
@@ -1,3 +1,4 @@
+this is an actual diff file
-all contents will remain unmodified
no whitespace will be removed either

Combining syntax highlighting with diff-like syntax#

Kết hợp tô sáng cú pháp với cú pháp giống diff#

function thisIsJavaScript() {
// This entire block gets highlighted as JavaScript,
// and we can still add diff markers to it!
console.log('Old code to be removed')
console.log('New and shiny code!')
}

Marking individual text inside lines#

Đánh dấu văn bản cụ thể trong dòng#

function demo() {
// Mark any given text inside lines
return 'Multiple matches of the given text are supported';
}

Regular expressions#

Biểu thức chính quy#

console.log('The words yes and yep will be marked.')

Escaping forward slashes#

Thoát ký tự gạch chéo (/)#

Terminal window
echo "Test" > /home/test.txt

Selecting inline marker types (mark, ins, del)#

Chọn loại đánh dấu trong dòng (mark, ins, del)#

function demo() {
console.log('These are inserted and deleted marker types');
// The return statement uses the default marker type
return true;
}

Word Wrap#

Tự động xuống dòng#

Word Wrap Tự động xuống dòng

Configuring word wrap per block#

Cấu hình tự động xuống dòng theo từng khối mã#

// Example with wrap
function getLongString() {
return 'This is a very long string that will most probably not fit into the available space unless the container is extremely wide'
}

// Example with wrap=false
function getLongString() {
return 'This is a very long string that will most probably not fit into the available space unless the container is extremely wide'
}

Configuring indentation of wrapped lines#

Cấu hình thụt dòng cho các dòng được xuống hàng#

// Example with preserveIndent (enabled by default)
function getLongString() {
return 'This is a very long string that will most probably not fit into the available space unless the container is extremely wide'
}

// Example with preserveIndent=false
function getLongString() {
return 'This is a very long string that will most probably not fit into the available space unless the container is extremely wide'
}

Collapsible Sections#

Các phần có thể thu gọn#

Collapsible Sections Các phần có thể thu gọn

5 collapsed lines
// All this boilerplate setup code will be collapsed
import { someBoilerplateEngine } from '@example/some-boilerplate'
import { evenMoreBoilerplate } from '@example/even-more-boilerplate'
const engine = someBoilerplateEngine(evenMoreBoilerplate())
// This part of the code will be visible by default
engine.doSomething(1, 2, 3, calcFn)
function calcFn() {
// You can have multiple collapsed sections
3 collapsed lines
const a = 1
const b = 2
const c = a + b
// This will remain visible
console.log(`Calculation result: ${a} + ${b} = ${c}`)
return c
}
4 collapsed lines
// All this code until the end of the block will be collapsed again
engine.closeConnection()
engine.freeMemory()
engine.shutdown({ reason: 'End of example boilerplate code' })

Line Numbers#

Số dòng#

Line Numbers Số dòng

Displaying line numbers per block#

Hiển thị số dòng theo từng khối mã#

// This code block will show line numbers
console.log('Greetings from line 2!')
console.log('I am on line 3')

// Line numbers are disabled for this block
console.log('Hello?')
console.log('Sorry, do you know what line I am on?')

Changing the starting line number#

Thay đổi số dòng bắt đầu#

console.log('Greetings from line 5!')
console.log('I am on line 6')
Expressive Code Example - Ví dụ về Expressive Code
https://tqp.io.vn/posts/cùng-học/expressive-code/
Tác giả
tqp
Ngày
2020-04-10
Giấy phép
CC BY-NC-SA 4.0