SAP / ui5-tooling

An open and modular toolchain to develop state of the art applications based on the UI5 framework
https://sap.github.io/ui5-tooling
Apache License 2.0
466 stars 69 forks source link

`ui5 serve` is very slow, can it do a pre-bundle before serving? #647

Open HymanZHAN opened 2 years ago

HymanZHAN commented 2 years ago

Expected Behavior

A hello-world app served locally with ui5 serve should be fast.

Current Behavior

ui5 serve downloads the specified SAP libraries and serves several hundred unbundled JS files locally, which is pretty slow, even with browser cache enabled:

sapui5-local-dev-ui5-dynamic-network

Dynamically Generated by UI5 Tooling - Browser Cache Enabled

I tried to mitigate the issue by downloading my own local copy of SAPUI5 runtime, with no improvements at all as the downloaded libs are not bundled either:

sapui5-local-dev-network

With Downloaded resource folder from https://tools.hana.ondemand.com/#sapui5

Here is the result with a CDN link, which is what we do at work:

sapui5-local-dev-cdn-network

With CDN [https://ui5.sap.com:](https://ui5.sap.com/)

It is quite a bit faster, but it just feels wrong that an Internet connection is required for local development. And the connection stability cannot be 100% guaranteed. We've encountered unstable/slow connection issues before.

Steps to Reproduce the Issue

  1. Create a hello-world app with create-easy-ui5 and the ts-app preset.
  2. Start the app with npm start
  3. Inspect the network tab

Context

Log Output / Stack Trace

N/A

So my questions are:

Thanks!

RandomByte commented 1 year ago

Do the ui5-tooling team have a plan for a more performant local development experience (create bundles/dev-bundles for libraries before serving, utilizing webpack and hmr, etc)?

Yes we do! Ultimately, we want to provide pre-built versions of all framework libraries on npm. Those would be identical to the sources you get from the CDN. But you can download them and work completely offline.

However, we can't provide any timeline for this right now.