Skip to content

The Secrets of High-Performance Mobile JavaScript Applications #79

Open
@v0lkan

Description

@v0lkan

Mobile JavaScript development requires focus on different strategies and methodologies, than traditional web applications. The processing power (both CPU and GPU) is limited, memory is limited. Latency is a killer. Memory leakage is a problem. Dealing with cache manifests and offline browsing is also an important thing to consider.
Therefore, you might need to unlearn what you've learned before.

Let's start with the memory: Memory leakage is a problem, because the application will most probably be a single page fat-client app, that will not be switched off for hours, or even days. Dealing with cache manifests and offline browsing is also an important thing to consider.

Therefore, to create a fast (near 60fps) mobile javascript application that uses less memory as possible; you might need to re-evaluate your options. -- In that regard, my presentation will be roughly around the following subject matters:

  • A multi-tiered architecture may be shooting yourself in the foot
  • Not using a library/framework should be the way to go, if you can.'
  • The less objects you create, the better.
  • The less the size of DOM, the better (and you might need special techniques like DOM-sharding)
  • Being minimalistic is your friend. If you need a banana, don't pass a gorilla that holds the banana and the entire jungle with it.
  • You can create applications that perform quite like their native counterparts, if you pay some extra attention to details.

In my presentation I would like to talk about the best practices to make your single page, fat client, hybrid JavaScript web application as snappy as its native counterpart.

Some of the techniques that I offer might seem arguable, and open to discussion. And I won't be talking about "the only way" that works; per contra I will be discussing "a way that works all the time".

Prerequisites:
Familiarity with JavaScript, HTML5, and CSS3.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions