Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

418
Views
La mejor manera de estructurar funciones auxiliares en NodeJS

Estoy tratando de construir un conjunto de utilidades para mi proyecto NodeJS. Estos ayudantes incluirán: utilidades de texto (como subcadenas, registro de consola, etc.) y ayudantes más específicos, como analizar el texto de un tweet.

Así que estoy tratando de dividir el módulo en diferentes archivos y con una idea muy clara de lo que significa cada cosa.

Por ejemplo, me gustaría lograr esto:

 var helpers = require("helpers"); var Utils = new helpers.Utils(); // working with text Utils.text.cleanText("blahblalh"); // working with a tweet Utils.twitter.parseTweet(tweet);

Como puede ver, estoy usando Utils para diferentes cosas, llamando a métodos y submétodos muy específicos.

Traté de entender cómo funciona la herencia aquí, pero me perdí un poco.

Esto es lo que estoy haciendo (un código de muestra aproximado):

//node_modules/helpers/index.js

 var Text = require('./text'); var Twitter = require('./twitter'); function Utils() { } Utils.prototype.text = { cleanText: function(text) { Text.cleanText(text); } }; Utils.prototype.twitter = { parseTweet(tweet) { Twitter.parseTweet(tweet); } };

//node_modules/helpers/texto.js

 function Text() { } Text.prototype.cleanText = function(text) { if (typeof text !== 'undefined') { return text.replace(/(\r\n|\n|\r)/gm,""); } return null; }; module.exports = Text;

//node_modules/helpers/twitter.js

 function Twitter() { }; Twitter.prototype.parseTweet = function(data) { return data; }; module.exports = Twitter

¿Es esta una forma correcta? ¿Estoy haciendo algo mal o eso podría ralentizar las actuaciones, etc.?

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Para aclarar cómo entiendo tu publicación, veo dos preguntas:

  • ¿Cómo estructuro código/métodos dentro de archivos, archivos que representan una categoría de funciones de utilidad?
  • ¿Cómo organizo esos archivos categóricos en una biblioteca más grande?

Métodos de estructuración dentro de una categoría

En lugar de hacer que todas las funciones específicas de la categoría sean métodos de objetos (p. ej., Twitter o Text), podría simplemente exportar las funciones en archivos con su nombre. Dado que parece que está pasando los datos que desea usar, no es necesario crear los métodos de instancia de funciones de alguna clase vacía.

Si sus patrones de uso de Twitter o Text generalmente tienen variables de clase en las que desea mantener el estado, y desea instanciar objetos de Text o Twitter para usar sus ejemplos, entonces supongo que sería apropiado. Cuando configuro util libs en mis proyectos, generalmente hay un montón de funciones exportadas que forman un módulo, en lugar de una clase de javascript exportada.

Para proporcionar un ejemplo de cómo se vería un archivo text.js compuesto por funciones de utilidad basadas en texto:

 module.exports = { cleanText:function(text) { // clean it and return }, isWithinRange(text, min, max) { // check if text is between min and max length } }

Alternativamente, podrías hacerlo de esta manera:

 exports.cleanText = function(text) { // clean it and return } exports.isWithinRange = function (text, min, max) { // check if text is between min and max length }

Estructuración de archivos de categorías de utilidades para crear una biblioteca de utilidades más grande

En cuanto a la organización de los métodos de utilidad, el ejemplo de Luca es bueno. He organizado algunos de manera similar a esto:

 utils-module/ lib/ text.js <-- this is the example file shown above twitter.js test/ index.js

Donde index.js hace algo como

 var textUtils = require('./lib/text'); exports.Text = textUtils;

Luego, cuando quiero usar util lib, digamos algún modelo de usuario en mi API de nodo, es simplemente:

 /* * Dependencies */ var textUtils = require('path/to/lib').Text; /* * Model */ function User() {} /* * Instance Methods */ User.prototype.setBio = function(data) { this.bio = textUtils.cleanText(data); } module.exports = User;

Espero que ayude. Cuando estaba aprendiendo por primera vez, fue muy útil mirar bibliotecas populares y respetadas para ver cómo estaban haciendo las cosas los desarrolladores de nodos/javascript más experimentados. ¡Hay tantos buenos (y malos) por ahí!

over 4 years ago · Santiago Trujillo Report

0

Puede ver un ejemplo de biblioteca de utilidades con lodash.

Lodash es una utilidad lib como underscorejs. Esta biblioteca tiene una estructura de sistema de archivos como la suya.

Divide las funciones en categorías. ¡Cada categoría es una carpeta con un archivo index.js que incluye en un espacio de nombres (objeto literal) cada función para esa categoría!

 Lodash/ Objects/ Function1.js Functions2.js .... Index.js Array/ Function1.js ... Index.js

Luego en tu código puedes hacer esto:

 var objectsUtils = require("lodash/objects"); var foreach = require("lodash/array/each");

Puede crear una estructura de sistema de archivos similar para tener más flexibilidad. Puede requerir toda la biblioteca, solo un espacio de nombres o una sola función.

Esto es mejor para el rendimiento, porque usa solo lo que necesita y tiene una ganancia de uso de memoria.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!