Importar en un proyecto
El cliente oficial de Waline ofrece archivos en varias versiones. Puedes importar y usar el cliente oficial de varias formas.
Paquetes de NPM
El cliente oficial de Waline se publica en npm como @waline/client; puedes instalarlo con el siguiente comando:
pnpm add -D @waline/clientnpm i -D @waline/clientyarn add -D @waline/clientPara ver los módulos que exporta @waline/client, consulta Referencia del cliente → Archivos.
Importar en un proyecto normal
Aquí tienes un ejemplo de cómo importar y usar @waline/client en un proyecto web normal.
import { init } from '@waline/client';
import '@waline/client/style';
init({
el: '#waline',
// ...
});import { init } from '@waline/client';
import '@waline/client/style';
init({
el: '#waline',
// ...
});Importar en un proyecto Vue
Como @waline/client se basa en Vue 3, exportamos directamente un componente Vue reactivo.
Todas las propiedades del componente son reactivas; puedes encontrar todas las propiedades admitidas en Referencia del cliente → Props del componente.
Demostración
<template>
<Waline :serverURL="serverURL" :path="path" />
</template>
<script setup>
import { Waline } from '@waline/client/component';
import { computed } from 'vue';
import { useRoute } from 'vue-router';
import '@waline/client/style';
const serverURL = 'https://waline.vercel.app';
const path = computed(() => useRoute().path);
</script>Como usamos un path reactivo, cuando cambie la ruta, @waline/client se actualizará automáticamente y mostrará los comentarios de la ruta correspondiente.
Importar en un proyecto React
Con un envoltorio sencillo, puedes convertir Waline en un componente de React:
import { type WalineInstance, type WalineInitOptions, init } from '@waline/client';
import React, { useEffect, useRef } from 'react';
import '@waline/client/style';
export type WalineOptions = Omit<WalineInitOptions, 'el'> & { path: string };
export const Waline = (props: WalineOptions) => {
const walineInstanceRef = useRef<WalineInstance | null>(null);
const containerRef = React.createRef<HTMLDivElement>();
useEffect(() => {
walineInstanceRef.current = init({
...props,
el: containerRef.current,
});
return () => walineInstanceRef.current?.destroy();
}, []);
useEffect(() => {
walineInstanceRef.current?.update(props);
}, props);
return <div ref={containerRef} />;
};