@forsakringskassan/docs-live-example

中文文档
3.0.3发布于 2026/10/02MITTypeScriptESM + CJS零依赖构建来源已验证近 30 天下载 3万

Components used for live examples

原始使用文档
文档目录4 节
  1. Användning
  2. Props
  3. Konfigurera exemplet
  4. createElement

@forsakringskassan/docs-live-example

live-example är en Vue-komponent som används för att presentera ett levande exempel samt tillhörande markup för att reproducera exemplet.

Komponenten består av tre ytor:

  • exempelyta: innehåller det kompilerade exemplet.
  • kontrollyta: innehåller de inmatningsfält som används för att konfigurera exemplet.
  • kodyta: visar HTML-markup och Vue-template för exemplet (om Vue-komponenter används).

Eftersom live-example kompileras i runtime så kan man direkt modifiera exemplet och den markup som visas genom att använda de inmatningsfält som lagts till i kontrollytan.

Användning

Installera paketet genom att köra:

npm install --save-dev @forsakringskassan/docs-live-example

Om du använder html-validate bör du även uppdatera din .htmlvalidate.json med följande rader för att registrera live-example elementet:

"extends": [
    "@forsakringskassan/docs-live-example/htmlvalidate:recommended",
],
"plugins": [
    "@forsakringskassan/docs-live-example/htmlvalidate"
],

Props

template

För att generera ett exempel så används template för att skicka in markup.

components (optional)

De Vue-komponenter som används i markup som skickas in till template måste läggas till i components.

livedata (optional)

Om exemplet behöver spara ett värde (till exempel v-model) så skickas detta in genom livedata.

livemethods (optional)

Om exemplet behöver köra en metod så skickas detta in genom livemethods.

forceSingleColumn (optional)

Om exemplets exempelyta hindras av kontrollytan i den högra kolumnen går det att ange forceSingleColumn för att forcera exemplet att visas i en kolumn.

Konfigurera exemplet

För att skapa ett konfigurerbart exempel börjar vi med att skapa en ny komponent AwesomeComponentLiveExample.vue. Vi rekommenderar att använda LiveExample som suffix på alla live-exempel.

Följande boilerplate kan användas:

<template>
    <live-example :components :template :livedata>
        <!-- Example configuration -->
    </live-example>
</template>

<script lang="ts">
import { defineComponent } from "vue";
import { LiveExample } from "@forsakringskassan/docs-live-example";

export default defineComponent({
    name: "AwesomeComponentLiveExample",
    components: { LiveExample },
    data() {
        return {};
    },
    computed: {
        livedata(): unknown {
            return {/* data used by generated code */};
        },
        components(): unknown {
            return {/* components used by generated code */};
        },
        template(): string {
            return /* HTML */ ` <div>Hello World!</div> `;
        },
    },
});
</script>

För att skapa en inställning lägger vi först in komponenter:

     <live-example :components :template :livedata>
+        <f-select-field v-model="tagName">
+            <template #label> Element </template>
+            <option value="div"> div </option>
+            <option value="p"> p </option>
+            <option value="em"> em </option>
+        </f-select-field>
+        <f-checkbox-field v-model="placeholderText" :value="true">
+            Use placeholder text
+        </f-checkbox-field>
     </live-example>
     data() {
-        return {};
+        return {
+            tagName: "div",
+            placeholderText: false,
+        };
     },

Därefter kan vi modifiera template att nyttja inställningar:

         template(): string {
-            return /* HTML */ ` <div>Hello World!</div> `;
+            const { tagName, placeholderText } = this;
+            const message = placeholderText ? "Lorem ipsum dolor sit amet" : "Hello World!" ;
+            return /* HTML */ ` <${tagName}>${message}</${tagName}> `;
         },

Det går också med fördel att använda createElement (se beskrivning längre ner):

         template(): string {
-            return /* HTML */ ` <div>Hello World!</div> `;
+            const { tagName, placeholderText } = this;
+            const message = placeholderText ? "Lorem ipsum dolor sit amet" : "Hello World!" ;
+            return createElement(tagName, message);
         },

Resultatet:

<template>
    <live-example :template>
        <div>
            <label for="config-element"> Element </label>
            <select id="config-element" v-model="tagName">
                <option value="div">div</option>
                <option value="p">p</option>
                <option value="em">em</option>
            </select>
        </div>
        <div>
            <label>
                <input
                    type="checkbox"
                    v-model="placeholderText"
                    :value="true"
                />
                Use placeholder text
            </label>
        </div>
    </live-example>
</template>

<script lang="ts">
import { defineComponent } from "vue";
import {
    LiveExample,
    createElement,
} from "@forsakringskassan/docs-live-example";

export default defineComponent({
    name: "AwesomeComponentLiveExample",
    components: { LiveExample },
    data() {
        return {
            tagName: "div",
            placeholderText: false,
        };
    },
    computed: {
        template(): string {
            const { tagName, placeholderText } = this;
            const message = placeholderText
                ? "Lorem ipsum dolor sit amet"
                : "Hello World!";
            return createElement(tagName, message);
        },
    },
});
</script>

createElement

A helper function to render the markup for the live example.

createElement(tagName);
createElement(tagName, content);
createElement(tagName, attributes);
createElement(tagName, attributes, content);

Create markup for a simple element:

createElement("div");
// <div>

Adding attributes:

createElement("div", { id: "my-awesome-id", class: ["foo", "bar"] });
// <div id="my-awesome-id" class="foo bar">

Attributes can be:

  • string - value is passed as-is: { key: "value" } becomes key="value".
  • number - value is converted to string: { key: 12 } becomes key="12".
  • boolean - key is set if value is true: { key: true } becomes key and { key: false } omits the attribute.
  • Array - each non-empty item is joined: { key: ["foo", "bar"] } becomes key="foo bar".
  • Object - nests attributes: { data: { key: "value" } } becomes data-key="value".
  • null and undefined are omitted from its context, e.g. { key: null } { key: [null] and { key: { value: null } } are all omitted.

Content can be added:

createElement("div", "lorem ipsum");
// <div> lorem ipsum </div>

createElement("div", [
    createElement("h1", "My Awesome Heading"),
    createElement("p", ["Lorem ipsum", "dolor sit amet"]),
]);
// <div> <h1> My Awesome Heading </h1> <p> Lorem ipsum dolor sit amet </p> </div>

Combined:

createElement("div", { id: "foo" }, "lorem ipsum");
// <div id="foo"> lorem ipsum </div>

版本与发布记录

@forsakringskassan/docs-live-example 共发布 26 个版本,首次发布于 2024/04/03;过去 12 个月发布了 8 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
3.0.3latest2026/10/021 个月前
3.0.22026/09/042 个月前
3.0.12026/08/212 个月前
3.0.02026/05/166 个月前
2.4.22026/03/257 个月前
2.4.12025/12/2610 个月前

关于 @forsakringskassan/docs-live-example 的常见问题

@forsakringskassan/docs-live-example 是什么?

Components used for live examples

如何安装 @forsakringskassan/docs-live-example?

在项目目录运行 npm install @forsakringskassan/docs-live-example,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:vue(^3.4.15)、prettier(^3.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@forsakringskassan/docs-live-example 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@forsakringskassan/docs-live-example 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@forsakringskassan/docs-live-example 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js ^22.16 || >= 24。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@forsakringskassan/docs-live-example 可以商用吗?

@forsakringskassan/docs-live-example 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@forsakringskassan/docs-live-example 的下载量有多少?

根据 npm 官方下载统计,@forsakringskassan/docs-live-example 在 2026/10/16 – 2026/11/14 这 30 天内被下载 29,781 次,日均约 993 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@forsakringskassan/docs-live-example 还在维护吗?

最新版本 3.0.3 发布于 2026/10/02(1 个月前);至今共发布 26 个版本,其中过去 12 个月发布了 8 个;首次发布于 2024/04/03。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。