• Stars
    star
    1,937
  • Rank 23,925 (Top 0.5 %)
  • Language
    JavaScript
  • Created almost 13 years ago
  • Updated over 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A JavaScript application framework emphasizing modularity and encapsulation

Looking for the issue tracker?

It's moved to https://enyojs.atlassian.net.


Quick Info

Core

This repository contains Enyo core. We've pared it down to the essentials, so folks can work at the metal. Widget sets, localization code, and other fancy bits are in separate repos.

Warning about file://

Note: In Chrome, various samples will not work from file:// URLs because of Chrome's security policy. To work around this, run your app from a local http server, use the --allow-file-access-from-files flag when starting Chrome, or use the online samples at http://enyojs.com.

What Is Enyo?

Enyo is an object-oriented JavaScript application framework emphasizing modularity and encapsulation. Enyo is suitable for both small- and large-scale applications.

Enyo 1.x was the underlying framework used to develop applications for HP's TouchPad tablet. Enyo as shipped on the TouchPad included an complete set of user interface components and service wrappers. What you will find here is Enyo 2, what we informally call core: the primary infrastructure needed to support any number of Enyo-based libraries. Enyo 1.x is now available under an open-source license.

Enyo was designed from the beginning to be highly extensible. This repository reflects a small working set of code that may be expanded with any number of libraries or plugins.

Enyo 2 is lightweight, easy to digest, and powerful.

What Do I Get?

The core code includes the Enyo kernel, the DOM extensions, some Ajax (XHR) tools, and basic wrapper kinds for a lot of DOM form elements. We believe this is a useful working set of tools.

Enyo 2 provides a modularity concept (Component) and a view concept (UiComponent). The DOM aspect includes a widget concept (Control) and an extensible event system (Dispatcher). Ajax resources include basic XHR functionality and an implementation of XHR as a Component (Ajax). In the UI arena, Enyo offers base kinds for common controls like buttons and popups, along with layout-oriented kinds, such as platform-optimized scrollers.

By themselves, these pieces are sufficient to create large applications using the Enyo encapsulation model. Developers who only want this low-level code are encouraged to roll-their-own application and UI layers. For those who want a richer set of tools, we have several pre-built libraries available.

Why Do I Care?

First is our emphasis on cross-platform compatibility: Enyo core works on both desktop and mobile browsers.

Second is Enyo's building block approach to applications. Each piece of an application is a Component, and Components are constructed out of other Components.

For example, it's easy to define the combination of an <input> tag and a <label> tag in one LabeledInput Component.

Now I can use (and re-use) LabeledInput as one atomic piece.

But that's just the beginning. Ultimately, large pieces of functionality may be exposed as single Components--for example, a fancy report generator, or a color picker, or an entire painting application.

Use the Enyo encapsulation model to divide and conquer large projects. No particular piece of an application need be especially complex. Because the combining of pieces is central, factoring complex functionality into smaller pieces comes naturally. Moreover, because of the modularity, all these pieces tend to be reusable--in the same project, in other projects, or even by the public at large.

This is all part of our strategy to allow developers to focus on creativity and Avoid Repeating Themselves.

That's a Lot of Talk

The core Enyo design was proven out by the complex applications HP developed for the TouchPad platform. We don't claim that this was particularly easy; there were a lot of hardworking developers on the apps teams, but we are confident in the efficacy of Enyo's guiding principles on a large scale.

But don't take our word for it; see for yourself.

Samples

All samples reside in a consolidated sample app for Enyo and its libraries: enyo-strawman.

Copyright and License Information

Unless otherwise specified, all content, including all source code files and documentation files in this repository are:

Copyright (c) 2012-2015 LG Electronics

Unless otherwise specified or set forth in the NOTICE file, all content, including all source code files and documentation files in this repository are: Licensed under the Apache License, Version 2.0 (the "License"); you may not use this content except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

More Repositories

1

mochi

Mochi interface library
JavaScript
390
star
2

bootplate

Template for packaged Enyo JS applications
JavaScript
215
star
3

onyx

A desktop and mobile widget library for Enyo
JavaScript
145
star
4

ares-project

A browser-based code editor and UI designer for Enyo 2 projects.
JavaScript
127
star
5

moonstone

Moonstone UI library for TV user interfaces.
JavaScript
76
star
6

canvas

Enyo Canvas library
JavaScript
68
star
7

gallery

Enyo Community Gallery
JavaScript
53
star
8

support

Enyo support materials
JavaScript
49
star
9

extra

A package of utilities for use with Enyo
JavaScript
42
star
10

enyo-1.0

No longer actively developed, Enyo 1.0 was released with webOS 3.0
JavaScript
42
star
11

sampler

Enyo 2 Sampler
JavaScript
38
star
12

fu

A simple Enyo UI library
Shell
35
star
13

enyo-webos

Enyo library for webOS-specific kinds and API's
JavaScript
22
star
14

layout

UI infrastructure for Enyo applications
JavaScript
21
star
15

spotlight

Spotlight package for Moonstone project
JavaScript
17
star
16

enyo-docs

Documentation for Enyo and its libraries
HTML
16
star
17

enyo-strawman

Testable library samples for Quality Assurance.
JavaScript
15
star
18

enyo-dev

Build tools for Enyo 2.6+
JavaScript
15
star
19

bootplate-mvc

A version of our Bootplate app template using data binding
CSS
14
star
20

api-tool

Enyo API documentation viewer
JavaScript
14
star
21

bootplate-moonstone

The foundation for applications written using the moonstone library
JavaScript
13
star
22

enyo-cordova

Enyo-compatible library to automatically include platform-specific Cordova library (WIP)
JavaScript
11
star
23

enyo-ilib

Enyo wrapper for ilib globalization/internationalization library.
JavaScript
10
star
24

g11n

Globalization + Localization library
JavaScript
7
star
25

svg

An library for easily creating SVGs, dynamically using Enyo
JavaScript
6
star
26

generator-enyo

Yeoman generator for Enyo applications
JavaScript
5
star
27

ui-tests

Automated UI testing repo
JavaScript
5
star
28

backbone-support

JavaScript
4
star
29

ares-generator

Node.js module shared by webOS SDK & Ares IDE to generate new projects & manage projects options
JavaScript
4
star
30

moon-flickr

Moonstone Flickr demo application
JavaScript
4
star
31

ares-webos-sdk

JavaScript
4
star
32

enyo-inspector

A tool for debugging Enyo applications from within Chrome Developer Tools.
JavaScript
2
star
33

enyo-dev-dist

JavaScript
2
star
34

pat

JavaScript
2
star
35

enyobench

Benchmarking application for Enyo & libraries loading time and common app operations
JavaScript
2
star
36

moonstone-extra

Additional or customized components for the Moonstone library for TV user interfaces.
JavaScript
1
star