Skip to content
forked from rtm/upward

The front-end framework for modern boys and girls

License

Notifications You must be signed in to change notification settings

hrishikeshs/upward

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Jan 2, 2015
dc16b81 · Jan 2, 2015
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Upward

Upward is a JavaScript library which lets you declare how things should be, and makes sure things are and stay that way. With Upward, JavaScript becomes a "declarative" rather than an "imperative" language. In Upward, all your CSS and HTML is written in JavaScript as well, so there's a single language to write, preprocess, and run.

Introduction

In our struggles to integrate the front-end technologies that have emerged for mark-up, styling, and program logic, we have created a witches’ brew. We have styles inside logic, logic inside styles, logic inside mark-up, and mark-up inside logic. We have build a tangled web of templating languages, libraries, frameworks, and CSS preprocessors. We have complex build systems to preprocess, precompile, and transpile this steaming mess. We have monstrous config objects with mysterious properties fed to black box add-ons to control magic behaviors. We build assumptions upon assumptions and dependencies upon dependencies. All of this makes our systems hard to write, debug, maintain, build, and deploy.

In Upward, in contrast, everything is logic. Mark-up and styling is all described by logic. It is a purely JS, declarative world.

Upward is not a framework. It is a library, a layer, a context for declaring the relationships among objects and dynamically keeping them up to date. Upward does not make any assumptions about what you want to do. It is ultimately unopinionated.

Basic architecture

The Upward framework is based around

  1. Upwardables, values which observe themselves

  2. Upwardable functions, both built-in and user-defined, which take and return upwardables

  3. Upwardable objects, whose properties are upwardables

Other features include:

  1. Upwardable template strings, which auto-update to reflect changes to upwardable placeholders

  2. DOM Node creation Routines such as UpElement and UpText which are based on upwardables, and thus auto-update themselves

  3. A broad selection of upward-aware data manipulation functions such as map.

  4. An API for defining CSS, which is also upward-aware and thus dynamically changeable

  5. A minimalistic, upward-aware MVC framework.

  6. Utilities such as timers.

  7. An upward-aware test runner.

Project status

In progress, bleeding edge, changing frenetically, unusable.

Environment

Upward is written completely in ES6 and targeted for compilation by Traceur. The environment it runs in needs to support ES6 features such as Map and 'Object.observe'. It has been tested only in Chrome. It will not run in other browsers due to their lack of support for Object.observe.

At present, we recommend including the traceur compiler and runtime in your web page:

<script src="https://google.github.io/traceur-compiler/bin/traceur.js"></script>
<script src="https://google.github.io/traceur-compiler/src/bootstrap.js"></script>
<script>traceur.options.experimental = true;</script>

Installation

npm install upward

Upward has no dependencies, although you should install docker globally to create documentation.

License

Copyright (c) 2014 Bob Myers.

Licensed under the MIT license.

Acronym

"Upward" is an acronym for "Upward Propagation With ARgument Detection", if you insist.

About

The front-end framework for modern boys and girls

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 92.6%
  • HTML 7.4%