# 필드 ({{ }})

> 바뀌는 값을 {{이름}} 으로 적고, 데이터 한 줄이 라벨 한 장이 됩니다.

Source: https://82label.app/docs/fields/

글자, 바코드 값, QR 값, 이미지 주소 어디에나 `{{이름}}` 을 넣을 수 있습니다. 인쇄할 때 넘긴 데이터의 같은 이름 값으로 바뀝니다. 고정 글자와 섞어 써도 됩니다: `'주문 {{orderNo}} · {{qty}}개'`.

```js
const template = {
  v: 1,
  name: '가격표',
  paper: { kind: 'roll' },
  label: { width: 40, height: 30 },
  elements: [
    { type: 'text', x: 2, y: 2, w: 36, h: 8, text: '{{name}}', size: 9, bold: true, fit: 'wrap' },
    { type: 'text', x: 2, y: 10, w: 36, h: 7, text: '{{price}}원', size: 14, bold: true, align: 'right' },
    { type: 'barcode', x: 2, y: 18, w: 36, h: 10, format: 'ean13', value: '{{ean}}' },
  ],
};

const rows = [
  { name: '유기농 우유 900ml', price: '3,480', ean: '880123456789' },
  { name: '통밀 식빵', price: '4,200', ean: '880123456790' },
];

Label82.print(template, rows);
```

## 데이터

- `print(template, rows)` 의 `rows` 는 객체 하나 또는 배열입니다. 배열의 한 항목이 라벨 한 장입니다.
- 값은 문자열이나 숫자. `null`·`undefined`·없는 이름은 빈 칸이 됩니다.
- 값은 글자로만 들어갑니다(HTML·SVG 로 해석하지 않음). 고객이 입력한 주소를 그대로 넣어도 안전합니다.
- 같은 라벨을 여러 장: `{ copies: 3 }`. 행마다 3장씩 나옵니다. 행마다 다르게 찍으려면 `{ qtyField: '수량' }`(그 열의 숫자만큼).

## 필드 목록과 예시값

디자이너는 서식 안의 `{{ }}` 를 모아 필드 표를 만들고, 예시값을 `fields` 에 저장합니다. 데이터 없이 미리보기할 때 이 예시값이 쓰입니다.

```js
import { extractFields, exampleRow, fill } from '@82label/core';

extractFields(template); // ['name', 'price', 'ean']
exampleRow(template);    // { name: '…', price: '…', ean: '…' } (fields[].example, 없으면 이름)
fill('{{name}} {{price}}원', { name: '우유', price: '3,480' }); // '우유 3,480원'
```

찍히는 모양을 바꾸는 `{{가격|won}}`, `{{날짜|date:YYYY.MM.DD}}`, 일련번호 `{{seq:0001}}`, 오늘 날짜 `{{today+365}}` 는 [값 서식·일련번호·날짜](https://82label.app/docs/formats/)에 있습니다. 엑셀 파일로 코드 없이 찍으려면 [대량 출력](https://82label.app/docs/bulk/).

> 필드 이름에는 한글도 됩니다(`{{상품명}}`). 다만 코드에서 다루기 쉽게 영문 이름을 권합니다.
