Registry / web-framework / webix-jet

webix-jet

JSON →
library3.0.3jsnpmunverified

Webix Jet is a client-side JavaScript micro-framework designed to simplify the development and maintenance of single-page applications (SPAs) built with Webix UI components. As of version 3.0.3, it offers a structured approach to app creation through modules like apps, views, models, and services, implemented as ES6 classes. The framework emphasizes modularity, reusability, and efficient code organization, making it suitable for complex data management applications. Key differentiators include its lightweight footprint (under 10kb minified), a robust plugin system for common functionalities (e.g., menus, localization, authentication), and flexible routing capabilities. Since version 3.0, Webix Jet has migrated its default toolchain to Vite, while still maintaining compatibility with Webpack. It also boasts comprehensive TypeScript support since version 1.3, providing improved development experience with type safety and auto-completion. The project is actively maintained, with a cadence of significant major releases every few years and more frequent minor updates and patches, as confirmed by its documentation and community support.

npm install webix-jet
INSTALL
IMPORT
SIG · WEBIX-JET
W
webix-jet
web-frameworkjavascriptv3.0.3
Install
Import
Disk
Pass rate
0/ 6
Env Coverage0 / 6
glibc
1822
musl
1822
Install & Compatibility
Where this runs
tested against v? · npm install
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
node 18226 runs
build_error
glibc
node 18226 runs
build_error
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

JetApp
import { JetApp } from 'webix-jet';
const { JetApp } = require('webix-jet');
Primary class for defining the application entry point. Webix Jet is ESM-first and primarily uses ES6 class syntax. CommonJS `require` is generally not recommended for modern Webix Jet projects.
JetView
import { JetView } from 'webix-jet';
import JetView from 'webix-jet/sources/views/jetview';
Base class for defining application views. Direct imports from `sources/` paths are generally internal and can break between versions.
plugins
import { plugins } from 'webix-jet';
import * as plugins from 'webix-jet/plugins';
Provides access to built-in Webix Jet plugins (e.g., Menu, Locale, Status). The `plugins` object is a named export.
webix (global)
import * as webix from 'webix'; window.webix = webix;
import 'webix';
When using module bundlers like Vite or Webpack, the `webix` library often needs to be explicitly exposed as a global `window.webix` object for Webix Jet and Webix UI components to function correctly, especially for complex widget integration or dynamically loaded modules.

This quickstart initializes a basic Webix Jet application with a single 'TopView' and renders it into the document body. It demonstrates the core setup of `JetApp` and `JetView` using TypeScript, including the necessary global exposure of the `webix` object.

import { JetApp, JetView } from 'webix-jet'; import 'webix/webix.css'; // Or your custom Webix skin import * as webix from 'webix'; // Ensure Webix is globally available for the UI components (window as any).webix = webix; class TopView extends JetView { config() { return { rows: [ { view: 'toolbar', elements: [{ template: 'My JetApp', type: 'header' }] }, { template: 'Welcome to your Webix Jet application!', autoheight: true, borderless: true, css: 'webix_shadow_medium' } ] }; } } class MyApp extends JetApp { constructor(config = {}) { const defaults = { start: '/top', views: { top: TopView }, // Define how to resolve 'top' to TopView debug: true }; super({ ...defaults, ...config }); } } webix.ready(() => { new MyApp().render(document.body); });
Debug
Known issues
breakingWebix Jet v3.0 migrated its default toolchain from Webpack to Vite. Existing projects might require updates to `vite.config.js`, `.env` files, and `package.json` scripts to align with the new build process.
fix
Review the official 'Migration from Jet 0.x' guide in the Webix Jet documentation and compare your project's build configuration with the latest `jet-start` demo on GitHub for Vite setup. This primarily involves configuring `vite.config.js` and updating `package.json` scripts.
affects: >=3.0.0
breakingStarting with Webix Jet v3.0, several API methods changed their behavior. Notably, `getUrl()` and `getUrlString()` for app and view, and the `refresh()` method now returns a Promise, requiring asynchronous handling. `removeView()` of Webix widgets now correctly triggers `destroy()` of nested Jet views.
fix
Update calls to `getUrl()`, `getUrlString()`, and `refresh()` to handle Promises if needed. Ensure `removeView()` behavior aligns with expectations for nested Jet views. Consult the 'What's New' section for v3.0 in the official documentation.
affects: >=3.0.0
gotchaWhen using module bundlers (especially Vite), the underlying Webix library must often be exposed globally as `window.webix` for Webix Jet components and certain Webix UI functionalities to work correctly. Directly importing `webix` may not always achieve this global availability automatically.
fix
After importing Webix, explicitly assign it to the global `window` object in your main application entry file: `import * as webix from 'webix'; (window as any).webix = webix;` (for TypeScript). Alternatively, include Webix via a `<script>` tag in `index.html`.
affects: >=1.0.0
gotchaAsynchronous operations within a `JetView`'s `config()` method, such as fetching data for UI construction, can lead to rendering issues or 'core.js' errors if the UI configuration is not returned as a Promise that resolves when the data is ready.
fix
For asynchronous UI generation, wrap the `config()` method's return in a Promise. Fetch data within the `config()` method, and return the UI configuration only after the data is available: `config() { return new Promise(resolve => { webix.ajax('/data').then(data => { resolve({ view: 'datatable', data: data.json() }); }); }); }`.
affects: >=1.0.0
deprecatedThe `WJET` utility for faster prototyping was deprecated with Webix Jet v3.0. While it might still function, its use is discouraged in favor of the standard JetApp/JetView class-based approach and the recommended build tools.
fix
Migrate any code using `WJET` to the standard ES6 class-based `JetApp` and `JetView` structure. Refer to the current quickstart guides and demo projects for modern development patterns.
affects: >=3.0.0
Errors
Common errors & fixes
ReferenceError: webix is not defined
The Webix library object is not accessible in the global scope (window.webix), which Webix Jet components often expect. This typically happens with module bundlers that don't automatically expose `webix` globally.
fix
Ensure `window.webix = webix;` is executed in your main application entry point after importing the Webix library, or load Webix via a `<script>` tag before your application bundle.
Event 'app:error:render' triggered: Error rendering view
An error occurred during the rendering of a Webix UI component defined within a JetView's `config()` method, indicating an incorrect UI configuration.
fix
Check the `config()` method of the problematic JetView for syntax errors, incorrect Webix UI component properties, or invalid nesting. Enable debug mode (`debug: true` in `JetApp` config) for more detailed console logs.
Event 'app:error:initview' triggered: Error initializing view
An error occurred during the initialization of a JetView, indicating an issue with the JetView's lifecycle methods (e.g., `init()`, `urlChange()`) or its integration with Webix UI, rather than a direct UI config problem.
fix
Inspect the `init()` and other lifecycle methods of the affected JetView for logical errors or incorrect API calls. Use the debug mode to trace the execution flow and identify the source of the error.
Data is not loading into Webix UI component in JetView
Incorrect usage of `parse()` or `load()` methods, or the data structure provided to a Webix data-bound component (like `datatable`, `list`) within a JetView does not match expectations.
fix
Ensure you are calling `this.$$(id).parse(data)` or `this.$$(id).load(url)` within the `init()` method or a data loading handler, and that the `data` or `url` resolves to a compatible format for the Webix component. Verify the data structure.
Cannot find UI component with id 'myId' using this.$$('myId')
The `this.$$()` method in Webix Jet scopes its search for Webix widgets only within the current `JetView`. The component with `id='myId'` might be in a parent view, a subview, or incorrectly referenced.
fix
If the component is in a parent view, use `this.getParentView().$$('myId')` or pass the ID to a global `webix.$$('myId')` if it's a top-level ID. If it's in a dynamic subview, ensure the subview is loaded before attempting to access its components. Verify the ID is unique within the intended scope.
Upgrade
Version history
3.0.3latest on npm
Audit
Dependencies
webixrequiredWebix Jet is a micro-framework built specifically on top of Webix UI components, requiring the Webix library for all UI rendering and component functionality.
Agent activity
9 hits · last 30 days
node
8
OpenAI (training)
1
Resources
webix-jet — npm install webix-jet · libregistry