Biblioteca JavaScript de Webix a través de los ojos de un principiante



Soy un desarrollador principiante de front-end JS. Ahora estoy estudiando y entrenando en una empresa de TI de Minsk. Aprender los conceptos básicos de web-ui se lleva a cabo utilizando la biblioteca Webix JS como ejemplo, y quiero compartir mi primera experiencia y diseñar una especie de guía de estudio para dominar esta biblioteca elegante y poderosa.

Primera tarea


Cree una interfaz de aplicación web utilizando la biblioteca Webix. La biblioteca en sí misma nos proporciona estilos CSS integrados. De manera predeterminada, se utiliza la máscara de Material Design , y en total la biblioteca ofrece 5 máscaras diferentes , lo que me permitirá prácticamente no recurrir a la edición de CSS.

La captura de pantalla siguiente muestra la interfaz de referencia: TK, que tengo que "ensamblar" como ejercicio práctico.


Fig. 1

Paso 1. Configurando el ambiente de trabajo


Crea un ambiente de trabajo. Necesitaré los archivos:

  • index.html;
  • script.js;
  • data.js;
  • style.css;

El archivo style.css es opcional, y podría prescindir de él, pero aprendo a trabajar estrictamente de acuerdo con los procesos, así que lo llevamos a trabajar.

Ahora conecto la biblioteca. En la documentación, hay una guía de instalación de Webix que muestra tres métodos de conexión.

  • descargar usando el administrador de paquetes npm;
  • Descargue el paquete directamente desde el sitio ;
  • a través de enlaces directos a archivos Webix CDN GPL.

Uso el tercer método, ya que es más visual y se puede hacer con algunas líneas de código en el archivo index.html:

<link rel="stylesheet" type="text/css" href="http://cdn.webix.com/edge/webix.css"> <script type="text/javascript" src="http://cdn.webix.com/edge/webix.js"></script> 

Aquí conectamos los archivos restantes en el mismo orden que se indica en el ejemplo. Esto se debe a que el archivo script.js usa los datos que están conectados a data.js.

 <!DOCTYPE html> <html lang="en"> <head> <script type="text/javascript" src="http://cdn.webix.com/edge/webix.js"></script> <link rel="stylesheet" type="text/css" href="http://cdn.webix.com/edge/webix.css"> <link rel="stylesheet" href="style.css"> <title>My first page</title> </head> <body> <script src="data.js"></script> <script src="script.js"></script> </body> </html> 

De acuerdo con las especificaciones técnicas (Fig. 1), tengo que hacer una tabla con datos. Recibiré estos datos del archivo data.js, en el que primero escribiré una matriz de objetos de este tipo:

 var small_film_set = [ { id:1, title:"The Shawshank Redemption", year:1994, votes:678790, rating:9.2, rank:1, category:"Thriller"}, { id:2, title:"The Godfather", year:1972, votes:511495, rating:9.2, rank:2, category:"Crime"}, { id:3, title:"The Godfather: Part II", year:1974, votes:319352, rating:9.0, rank:3, category:"Crime"}, { id:4, title:"The Good, the Bad and the Ugly", year:1966, votes:213030, rating:8.9, rank:4, category:"Western"}, { id:5, title:"Pulp fiction", year:1994, votes:533848, rating:8.9, rank:5, category:"Crime"}, { id:6, title:"12 Angry Men", year:1957, votes:164558, rating:8.9, rank:6, category:"Western"} ]; 

Paso 2. Inicialización. Proyecto de estructura metálica


Toda la interfaz de Webix es creada por el constructor webix.ui (). Para verificar que todo esté configurado y funcione como debería, mostraré la cadena "¡Hola, mundo!" En la pantalla.

Utilizo el motor de plantillas Tempalte incorporado, que generará un componente listo para usar con el registro necesario para nosotros.

 webix.ui({ template: "Hello world!" }); 

La característica principal de la biblioteca es el componente Diseño, que le permite dividir la página en filas y columnas de otros componentes. Con él, definiré el esqueleto de nuestra página, que consta de tres líneas:

  1. cabecera
  2. pie de página
  3. principal (parte principal).

También conectaré el tema CSS incorporado aquí.

Código:

 webix.ui({ rows:[ {template:"Header"}, {template:"Main"}, {template:"Footer"} ] }); 

A continuación se muestra una captura de pantalla de lo que sucedió. Usando la matriz de filas, creamos tres filas.


Fig.2

La parte principal de la interfaz constará de tres columnas:
- lista
- mesa
- forma.
Para dibujarlo, usaré la matriz cols y crearé las columnas necesarias.

Código:

 webix.ui({ rows:[ {template:"Header"}, {cols:[ {template:"List"}, {template:"Table"}, {template:"Form"} ]}, {template:"Footer"} ] }); 

Resultado:

Fig.3

Paso 3. Crear un encabezado


El marco de página se crea y queda para llenarlo con el contenido deseado. En mi TK, el encabezado contiene varios controles, por lo tanto, en lugar de la plantilla: "Encabezado", utilizo el widget "barra de herramientas" . Con él, se crean los elementos que necesito en los que puedo colocar el título y el botón.

  view:"toolbar", css:"webix_dark", cols:[ { view:"label", label:"My app"}, {}, {height: 40, type:"icon", icon:"wxi-user", view:"button", label:"Profile", width:100, css:"webix_transparent"} ] 

Luego, usando la matriz cols , se crean tres columnas. En la primera columna, el componente, vista: "etiqueta", crea texto estático y la tecla de etiqueta muestra el título del texto.

La segunda columna es espaciadora . Llena todo el espacio libre y presiona el primer y el último elemento en los bordes de la página.

La tercera columna es un botón, creado usando la vista: componente "botón" . Las propiedades de ancho y alto establecen la altura y el ancho del botón en píxeles, y el tipo de configuración : "icono" e icono: "wxi-user" muestra el icono que necesito de la lista proporcionada por la documentación.

Resultado:


Fig. 4

Para hacer que el botón sea transparente, uso la clase CSS incorporada: "webix_transparent" .

Paso 4. Crea el widget Lista


El widget Lista es un widget estándar de Webix y se usará para crear menús. Mi tarea es hacer que se pueda hacer clic con la propiedad select: true . Además, en este widget uso mis cambios de estilo usando la clase - css: "list_color" .

En lugar de escribir la plantilla: "Lista", escribimos el siguiente código:

 { view: "list", id:"mylist", scroll:false, select:true, width:200, css:"list_color", data:[ {value:"Dashboard",}, {value:"Users"}, {value:"Products"}, {value:"Location"} ] }, {view: "resizer"}, {template:"Table"}, {template:"Form"} 

En el widget de lista , por defecto se usa el desplazamiento, que apago con el comando - scroll: false .

La longitud de la lista y sus valores se establecen utilizando la matriz de datos .
Para anular los estilos predeterminados, debe escribir lo siguiente:

 .list_color{ background-color: #EEEEEE; font-weight: 500; } .list_color .webix_selected{ background-color: #dddfe2; } 

El fondo del widget predeterminado es blanco y se obtiene escribiendo .list_color {...} . Pero cuando necesite establecer un estilo para sus elementos, después del nombre de nuestra clase deberá especificar la clase predeterminada del elemento.

Con el toque final en el widget de la lista , establecemos entre él y la columna Tabla , el borde arrastrable - {ver: "cambiar tamaño"} . El resultado del cuarto paso:


Fig.5

Paso 5. Crea una tabla y extrae datos de otro archivo


Permítame recordarle que los datos se toman del archivo data.js. Para mostrarlos en forma de tabla, en lugar de la plantilla: línea "Tabla", escribo el siguiente código:

  view:"datatable", id:"film_list", scroll:"y", autoConfig: true, data:small_film_set 

El código funciona de la siguiente manera: view: "datatable" crea una tabla, y usando autoConfig: true configura las columnas en función de los datos creados al comienzo de la matriz small_film_set . La ruta a esta matriz está indicada por la línea - data: smal_film_set .

Desplazamiento de stock : “y” elimina el desplazamiento horizontal, dejando solo el vertical. El resultado es una tabla que se puede ordenar haciendo clic en el encabezado de la columna.


Fig.6

Paso 6. Formulario


Vista de propiedad : "formulario" : crea un widget "formulario" . Según la declaración de trabajo, consta de campos de entrada y botones que se colocan en la matriz de elementos: [{...}, ...] .

Reemplace la plantilla de línea : "Tabla" con el siguiente código:

 view:"form", id:'film_form', width: 350, elements:[ { type:"section", template:"EDIT FILMS"}, { view:"text", name:"title", label:"Title" }, { view:"text", name:"year", label:"Year" }, { view:"text", name:"rating", label:"Rating" }, { view:"text", name:"votes", label:"Votes" }, { margin:10, cols:[ { view:"button", id:"btn_add", minWidth:65, value:"Add new", css:"webix_primary", click:addItem}, { view:"button", id:"btn_clear", minWidth:65, value:"Clear", click:clearForm} ] }, {} ] 

La línea con la propiedad type: "section" es el título del formulario. La propiedad establece los campos de entrada : vista: "texto" , el nombre del campo está escrito en la etiqueta . En el futuro, el formulario debe pasar valores, para esto, junto con la vista: propiedad "text" , se establece el nombre: propiedad "..." .

El widget es un botón, establecido por la vista: propiedad "botón" . El botón no es una parte integral del formulario y puede usarse como un elemento independiente. Como en la etiqueta de entrada HTML estándar, la propiedad del valor asigna el nombre del botón. El color azul lo establece el estilo css incorporado : "webix_primary" .

El último elemento de la matriz es un espaciador, que llena el espacio libre hasta el pie de página, que se presionará en la parte inferior de la pantalla. Se utiliza debido a la altura predeterminada de los elementos del formulario, a la que se presionan todos los elementos posteriores. Resultado del código:


Fig. 7

Paso final


La página está casi lista, solo queda crear un pie de página. Reemplace la plantilla de línea : "Pie de página" con el siguiente código:

 cols:[ {height: 30, template:"The software is provided by <a href='#'>webix.com</a>. All rights reserved (c)", css:"center_text"} ] 

El código muestra que la propiedad de la plantilla, además del texto, le permite establecer etiquetas HTML. Para centrar el texto, utilicé una clase css personalizada : "center_text" .

 .center_text{ text-align:center; } 

El resultado final de la página debe cumplir totalmente con lo declarado en la declaración de trabajo (Fig. 1).

Generalización


En este ejemplo, solo se utilizó una pequeña fracción de las características de Webix. El resultado muestra que en solo 60 líneas de código, puede crear una página con muchos elementos complejos. Las soluciones de biblioteca listas para usar y la facilidad de uso de sus componentes le permiten diseñar libremente diseños de página completamente diferentes, sin perder tiempo coqueteando con los estilos.

Source: https://habr.com/ru/post/483558/


All Articles