Tengo un DataTable con muchas propiedades. Cada vez que quiero usarlo, tengo que copiarlos todos. Hace que el código de mi vista detrás sea un gran desastre. Así que decido crear un archivo .js separado y copiar el código reutilizable allí, pero no puedo hacer referencia a él en mi archivo principal. Una parte de mi código .js es como a continuación:
function loadDataTable() { $(".yadcf-filter-range-date").persianDatepicker(); dataTable = $('#SP1').DataTable({ serverSide: true, processing: true, pageLength: 10, infoFiltered: true, orderMulti: false, scrollX: true, scrollY: true, bStateSave: true, columnDefs: [{ orderable: false, targets: [15] }], . . . }Creo una función en otro archivo js, por ejemplo, como a continuación:
function CommonPart(i) { serverSide: true, processing: true, pageLength: 10, infoFiltered: true, orderMulti: false, scrollX: true, scrollY: true, bStateSave: true, columnDefs: [{ orderable: false, targets: [i] }] }No sé cómo usar CommonPart en mi código principal, por ejemplo, como a continuación:
function loadDataTable() { $(".yadcf-filter-range-date").persianDatepicker(); dataTable = $('#SP1').DataTable({ CommonPart(15); ... });Mi forma preferida de lograr esto es con módulos ECMAscript .
Puede colocar cada una de esas funciones en un archivo separado. Puede nombrar los archivos como desee, pero generalmente los nombro según la función que contienen. Para la web, le daría al archivo una extensión de archivo .js . En el nodo, le daría una extensión .mjs .
En cada archivo, anteponga exportar en cada función de esta manera:
export function funcName() { }Luego, desde su archivo de código principal, puede importar sus funciones desde esos archivos separados como este:
import { funcName } from "./fileName.mjs";Después de esto, puede usar las funciones como si estuvieran declaradas en su archivo de código principal (porque ahora están importadas).
El mejor y más confiable enlace de webdocs de identificación de recursos de MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules
Si todavía está confundido, no dude en hacer una pregunta.