JavaScript Extensibility Framework for Modular Bundle Loading

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

JavaScript applications tend to take on a monolithic, static form, making it difficult to develop and deploy different pieces of application functionality independently, limiting their extensibility and maintainability.

Innovation Solution

An extensibility framework that breaks down JavaScript applications into components that can be independently deployed and managed through a loader and service registry, using abstract dependencies for decoupling and dynamic service injection, allowing for lazy loading and selective deployment.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of manufacture

If JavaScript applications are built as monolithic static forms, then the application structure is simple and easy to understand, but it becomes difficult or impossible to develop and deploy different pieces of application functionality independently

Engineering Contradiction:
Improveease of development and deploymentVSAvoidextensibility
Core Design Contradiction:
Ease of manufactureVSAdaptability or versatility

Solution Approach 1:

The patent segments the JavaScript application into multiple independent bundles, where each bundle represents a modular unit of functionality. These bundles can be independently developed, tested, and deployed. The system uses a bundle loader to dynamically load and execute these segmented bundles, allowing independent development and deployment of different application pieces while maintaining overall system integration through the common loader interface.

Inventive Principle:
Principle #1Segmentation

2Productivity

If all application components are loaded at startup, then all functionality is immediately available, but the initial code deployment size and network transfer time increase

Engineering Contradiction:
Improveimmediate functionality availabilityVSAvoidcode deployment size
Core Design Contradiction:
ProductivityVSQuantity of substance

Solution Approach 1:

The patent implements dynamic loading of application bundles based on runtime conditions. The bundle loader determines which bundles to load based on user actions, application state, and priority settings. High-priority bundles are loaded immediately at startup, while lower-priority bundles are deferred until needed. This dynamic approach allows the application to start with a smaller code footprint while ensuring that necessary functionality is loaded on-demand.

Inventive Principle:
Principle #15Dynamics

3Ease of operation

If JavaScript applications use dynamic typing and prototype-based scripting, then the language is flexible and easy to use, but the applications take on a monolithic static form lacking well-defined structure

Engineering Contradiction:
Improvelanguage flexibilityVSAvoidapplication structure organization
Core Design Contradiction:
Ease of operationVSDevice complexity

Solution Approach 1:

The patent introduces a universal bundle interface that all JavaScript bundles must implement, providing a standardized structure across the application. This interface includes methods for bundle identification, dependency declaration, and activation. By enforcing this universal interface, the system maintains the flexibility of dynamic JavaScript while imposing a consistent organizational structure that enables modular development, clear dependency management, and systematic bundle loading through the common loader.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Data Source

PatentUS9875119B2Extensibility framework
Publication Date: 2018.01.23 BUSINESS OBJECTS SOFTWARE
  • US9875119B2 patent drawing
  • US9875119B2 patent drawing
  • US9875119B2 patent drawing

AI summary

In an example embodiment, a bundle loader is run in response to a communication from an application. The communication may indicate that the plurality of bundles of components in the application is to be executed. The plurality of bundles may include at least one bundle having a component that depends on a dependency component in another of the plurality of bundles. A configuration file indicating a set of the plurality of bundles to load in the bundle loader is received. The bundle loader is operated to load a bundle manifest for each bundle in the set of the plurality of bundles to load. Then, for each of the bundles in the set of plurality of bundles to load, the bundle is activated if no unactivated dependency component exists for any component in the bundle.