NoSignups (FckSignups)
Código de búsqueda de NoSignups: ASCII, subcadenas y empates
Lee tokenize y matchScore con casos concretos y distingue validación real, tipos TypeScript y afirmaciones del README.
Qué aprenderás
- ASCII puede convertir una consulta significativa en una consulta vacía.
- includes admite subcadenas y cuenta términos repetidos.
- El archivo JSON-LD no valida registros en ejecución.
Antes de empezar
- JavaScript y JSON básicos
- Una tarea inocua y un registro de muestra
Explica la frontera del capítulo y verifícala con la muestra o ficha propuesta.
Conclusiones clave
- ASCII puede convertir una consulta significativa en una consulta vacía.
- includes admite subcadenas y cuenta términos repetidos.
- El archivo JSON-LD no valida registros en ejecución.
Interpreta literalmente el tokenizador
tokenize convierte a minúsculas, divide por caracteres ajenos a a-z, 0-9 y el signo más, y elimina fragmentos vacíos. video-editor y video_editor producen los mismos dos términos; c++ conserva sus signos. Las letras acentuadas separan en lugar de normalizarse, y una consulta solo china no produce términos. La expresión regular establece el comportamiento, independientemente del idioma de la interfaz.
Cero términos significa ausencia de búsqueda. Una persona que introduce una consulta china significativa puede recibir toda la categoría en vez de un aviso de consulta no admitida. Una copia multilingüe debería definir primero el tratamiento deseado de Unicode, acentos e identificadores. Modificar la expresión sin muestras puede perjudicar consultas técnicas como C++ o fragmentar nombres importantes.
Una subcadena no es una palabra completa
matchScore combina nombre, descripción y etiquetas en texto minúsculo, sustituye separadores y cuenta los términos para los que haystack.includes es verdadero. art coincide dentro de cart. Los términos repetidos no se deduplican: art art puede puntuar dos porque la misma subcadena satisface ambas apariciones. Son consecuencias del cuerpo de la función, no un benchmark de búsquedas reales.
El hook conserva solo registros cuya puntuación iguala el número de términos. video editor exige ambos en algún punto del texto combinado, pero no juntos ni en el mismo campo. Después todos empatan y las estrellas determinan el orden antes de agrupar. Una modificación futura debe explicarse como decisión de producto, no como una mejora universal para cualquier lector.
Los tipos no inspeccionan un objeto descargado
loadTools afirma que el JSON analizado es ToolsData. TypeScript elimina esa afirmación en ejecución; esta ruta captura errores HTTP o de análisis JSON, pero no demuestra IDs únicos, categorías existentes, esquemas URL admitidos ni un arreglo tags por entrada. schema.js exporta JSON-LD del sitio, no un validador de catálogo.
Antes de modificar el código, prepara una matriz con tags ausente, id duplicado, categoría desconocida y búsqueda no latina. Decide qué se rechaza, repara o comunica. El ejemplo reproduce el tokenizador de forma aislada, no el hook completo. Superar esa prueba no valida toda la aplicación ni su catálogo público.
Pasos de implementación
- 1
Lee tokenize y matchScore en el commit fijado.
- 2
Ejecuta la muestra aislada y contrasta sus resultados.
- 3
Añade casos de subcadenas, repetición y datos inválidos antes de cambiar la búsqueda.
Ejemplo para copiar
const tokenize = text => text.toLowerCase()
.split(/[^a-z0-9+]+/).filter(Boolean);
for (const query of ["video-editor", "c++", "café", "视频编辑", "art art"]) {
console.log(JSON.stringify(query), tokenize(query));
}
// Muestra aislada, no el hook React completo.Preguntas frecuentes
¿Se buscan palabras exactas?
No. includes opera sobre texto combinado, de modo que un término corto puede aparecer dentro de otro más largo.
¿schema.js valida tools.json?
No. Exporta datos WebSite para inyectarlos en HTML. El cargador inspeccionado utiliza una afirmación de tipo, no validación registro por registro.
Fuentes
- README.mdFuente verificada 2026-09-07
- package.jsonFuente verificada 2026-09-07
- vite.config.mtsFuente verificada 2026-09-07
- src/hooks/useTools.tsFuente verificada 2026-09-07
- src/components/Home/Tools/Tools.tsxFuente verificada 2026-09-07
- src/components/Home/Tools/ToolCard/ToolCard.tsxFuente verificada 2026-09-07
- src/types/index.tsFuente verificada 2026-09-07
- src/constants/fallbackData.tsFuente verificada 2026-09-07
- src/data/schema.jsFuente verificada 2026-09-07
- cloudflare-worker/worker.tsFuente verificada 2026-09-07
- cloudflare-worker/urlHandlers/handleSubmitTool.tsFuente verificada 2026-09-07
- cloudflare-worker/utils.tsFuente verificada 2026-09-07