JavaScript for Line of Business Applications
606.6K views | +10 today
JavaScript for Line of Business Applications
Keeping track of current JavaScript Frameworks that help design your clientside Business Logic Layers.
Curated by Jan Hesse
Beam to my Inbox:
Your new post is loading...
Your new post is loading...

Popular Tags - Filter using the Funnel

Scoop.it!

Testing End-to-End with Nightwatch

Testing End-to-End with Nightwatch | JavaScript for Line of Business Applications | Scoop.it
Nightwatch is a recently released acceptance framework based on Node.js that uses Selenium WebDriver API to automate web applications testing. The tool promises a simple syntax which enables the writing of end-to-end tests using JavaScript and CSS selector that runs against a Selenium server.
No comment yet.
Scoop.it!

React: Finally, a great server/client web stack

React: Finally, a great server/client web stack | JavaScript for Line of Business Applications | Scoop.it

But when we do it purely in the browser, we have to make quite a few concessions: search engines have a hard time indexing that content, for example. It also takes longer for users to see the rendered content (not in every case, but in many, many cases.) Also if you're using a lot of plugins for your favorite library, or a heavyweight MVC framework, sometimes it can slow down interactivity.

I've thought for a long time (and blogged about it previously) that the ideal solution would fully render the markup on the server, deliver it to the client so that it can be shown to the user instantly. Then it would asynchronously load some Javascript that would attach to the rendered markup, and invisibly promote the page into a full app that can render its own markup. This code would also have to be fast enough to meet or exceed the performance of other modern solutions, or it won't be worth it.

What I've discovered is that enough of the pieces have come together, that this futuristic-sounding web environment is actually surprisingly easy to do now with React.js. React isn't a full-fledged framework, it's a library, so you'll have to build your own foundation and write some glue code. I've been rewriting an existing website in React (usually a terrible idea, we'll see about this time), and now that the code is settling down a little bit, I'd like to share how it works. This post will just be an overview, but up next I'll share some of my glue code and lessons learned etc.

No comment yet.
Scoop.it!

wingspan-forms - KendoUI Widgets for React

wingspan-forms - KendoUI Widgets for React | JavaScript for Line of Business Applications | Scoop.it

a dynamic form library for Facebook React, providing abstractions for building dynamic forms and controlled grids. Widgets provided by Telerik's KendoUI.

Traditional javascript widget libraries (JQueryUI, KendoUI, Sencha) tend to model each wdiget as a standalone MVC entity. For example, a ComboBox widget has code for managing the state of the combobox, for updating the DOM when the state changes, and for logic like querying for the list of options and for applying filters. The React philosophy is that this approach results in poor separation of concerns and makes large codebases difficult to reason about.

In React, widgets are pure (in the functional programming sense). All state is stored in a central javascript controller layer (not in the DOM). Views are pure and are seperated from models (unlike MVVM which couples model and view). This means, for example, that the invalid-ness or disabled-ness is not decided by logic the widget itself; rather, logic outside the widget determines the widget state and then the "dumb widget" will render to match this state. This means complex validation rules and other business logic can be handled in a central location, decoupled from the widgets.

No comment yet.
Scoop.it!

Some advanced AngularJS concepts

  • DI with $injector.annotate() – 00:35
  • Directives
    • Transclusion: give me an extreme makeover and please ensure my children still love me!! – 13:10
    • Setting Priority to your directives – 25: 43
    • compile, preLink and postLink functions – 30:20
  • Using $provide.decorator() function – 38:15 
  • Deep-watching objects and arrays – 44:45
  • Debugging AngularJS – 55:55
No comment yet.
Scoop.it!

Automatic Knockout model persistence with Amplify

Automatic Knockout model persistence with Amplify | JavaScript for Line of Business Applications | Scoop.it
Knockout MVVM + offline persistence with Amplify. Automatically bind the model to offline storage. This script leverages both systems.

After an extensive Google search I found a script that leverages both systems to store a single observable. The interesting thing is that it uses Knockout’s subscribe method to subscribe to changes. This means all changes are ‘automatically’ stored away. I’ve decided to extend Knockout’s ko variable...

No comment yet.
Scoop.it!

Deploying and auto-updating Sails.js with git and forever

Deploying and auto-updating Sails.js with git and forever | JavaScript for Line of Business Applications | Scoop.it

Here are the main things we will be doing in this tutorial.

* Create a controller that will automatically pull from repo and restart server.
* Get sails to run in production mode and deploy using forever.
* Auto update code on git push using git hooks on BitBucket (probably very similar for github)

No comment yet.
Scoop.it!

Using WebSockets to keep a local cache in sync

Given that the client didn't want to move his server for is current hosting provider, but was complaining all the time of how slow things were, I realised that I had to find a way to improve application responsiveness by having the data already stored locally when the user/UI actually needs it.
So, devised a strategy of keeping a local cache and using web sockets to notify my local cache that local data as dirty and needs to be updated.

Conceptually, I like the idea of having my cache resembling a database and and an ORM implementation. Having that I mind, my implementation would require the following components:
 * An Entity, that will map to a server side collection of data (usually a table but can actually be just a view)
 * A local cache/db, that will store a set of entities and provide convenient API's to access them

No comment yet.
Scoop.it!

Running ElasticSearch in a cluster on Azure

Running ElasticSearch in a cluster on Azure | JavaScript for Line of Business Applications | Scoop.it

 I have been brewing on this post for some days now and the excitement of the presentation to come motivated me to finish it. We use ElasticSearch at my day job at eBay and the product is also a key ingredient in my ELMAH in the cloud project elmah.io. In this post I will share my experiences setting up ElasticSearch in a clustered setup of virtual machines, running on Windows Azure. Disclamer: this is in no way an official guide on how to setup ElasticSearch in a cluster. My experience with replication in ElasticSearch is pretty limited, and I only just now found out how virtual networks work in Windows Azure. Use this guide for inspiration and I would love to get some feedback on the approach used.

If you don’t have access to Azure, there’s a free trial available from the frontpage: http://www.windowsazure.com/en-us/pricing/free-trial/. You will get 30 days of Azure with a maximum of $200 worth of services. Pricing on Azure has always been a nightmare, but $200 should do just fine in order to play around with a couple of VMs. When signed up and in, start by creating a new virtual network:


Via William delmas
No comment yet.
Scoop.it!

EdisonJS - Organized Routing for Complex Single-Page Applications

EdisonJS - Organized Routing for Complex Single-Page Applications | JavaScript for Line of Business Applications | Scoop.it

JavaScript routers provide developers with a method for tracking user state and loading required resources, as needed, without requiring a URL change or page reload. 

A quick Google search for “JavaScript router” will present you with a number of useful libraries (e.g. Sammy, Crossroads, etc…). However, my personal experience with such libraries has left me wanting more structural guidance when developing large, complex single-page applications with dozens (or hundreds) of routes. To fill that niche, I have released EdisonJS.

Most JavaScript routing libraries provide little to no guidance in terms of how one might best go about organizing complex single-page applications with many routes. EdisonJS seeks to simplify the organizational structure of complex single-page applications by encouraging developers to organize their applications as a series of parent (“section”) child (“route”) relationships. The result is a simple, clean, and powerful organizational structure.

Jan Hesse's insight:

https://github.com/tkambler/edison.js

No comment yet.
Scoop.it!

Custom Ember Computed Properties

Custom Ember Computed Properties | JavaScript for Line of Business Applications | Scoop.it

EmberJS has a lot of features for helping you build a clean JavaScript interface. One of my favorites is the computed property; Ember can watch a property or set of properties and when any of those change, it recalculates a value that is currently displayed on a screen...

In my last project I needed to cacluate the sum of a few properties in an array. What I need is something that works like Ember.computed.alias('name') but allows me to transform the object instead of just aliasing a property...

This allows me to easily define a 'sum' for a property without a lot of duplication. 

No comment yet.
Scoop.it!

JavaScript with class - Part 1

JavaScript with class - Part 1 | JavaScript for Line of Business Applications | Scoop.it

One big file, with batteries included. There's even a good practice rule saying that you should put all your JavaScript code in one file when you send it over the web to the client side. And for good reason.

But this is also one of the reasons why JavaScript got a slightly bad reputation: the developer's code looked pretty much like the production code. The only other "compilation" beside concatenation JavaScript code got before hitting the client side was minification, uglyfying. This compilation is a huge resource gain for the client side but it is also seen as another reason why JavaScript "sucks".

That's refreshing, right? If only my JavaScript code could be more like that? Oh, but it can! CommonJS or AMD or browserify or ES6 modules to the rescue!

No comment yet.
Scoop.it!

Real World Web components

a.k.a. Web Components outside of Google

* Templates

* Custom Elements

* Shadow DOM

* HTML Imports

* (and more…)

No comment yet.
Scoop.it!

JavaScript Framework Face Off

JavaScript Framework Face Off | JavaScript for Line of Business Applications | Scoop.it

With so many JavaScript MVC libraries out there, how does a time constrained developer make a smart choice? In this survey, we'll compare and contrast some of today's most popular libraries.

Developers are flocking to client side frameworks and, as a result, there are more and more JavaScript libraries attempting to solve the rich internet application problem. In a space where new libraries seem to spring up weekly, what framework should you choose for your next project? While there is consensus around basic ideas like Model View Whatever, there are some strong philosophical differences amongst the various libraries. In this talk, we'll look at the similarities and the differences of some emerging JavaScript libraries discussing why you need to be aware of this rapidly evolving aspect of software development.

* Ember.js

* Backbone.js

* Knockout.js

* Angular.js

No comment yet.
Scoop.it!

Intro to the React Framework

Intro to the React Framework | JavaScript for Line of Business Applications | Scoop.it
In today's world of Javascript Application frameworks, design philosophy is the key differentiating factor. If you compare the popular JS frameworks, such as EmberJS, AngularJS, Backbone, Knockout, etc. you are sure to find differences in their abstractions, thinking models, and of course the terminology. This is a direct consequence of the underlying design philosophy. But, in principle, they all do one thing, which is to abstract out the DOM in such a way that you don't deal directly with HTML Elements.

I personally think that a framework becomes interesting when it provides a set of abstractions that enable a different mode of thinking. In this aspect, react, the new JS framework from the folks at Facebook, will force you to rethink (to some extent) how you decompose the UI and interactions of your application. Having reached version 0.4.1 (as of this writing), React provides a surprisingly simple, yet effective model for building JS apps that mixes a delightful cocktail of a different kind.

In this article, we'll explore the building blocks of React and embrace a style of thinking that may seem counter-intuitive on the first go. But, as the React docs say: "Give it Five Minutes" and then you will see how this approach will become more natural. | Difficulty: Intermediate; Length: Quick; Tags: JavaScript & AJAX, Tutorials, Web Dev, React
No comment yet.
Scoop.it!

A Quick Introduction to React

A Quick Introduction to React | JavaScript for Line of Business Applications | Scoop.it

React is, according to their own definition, “A Javascript library for building user interfaces.” When I first read about react, it immediately struck me as a very good solution for a front end javascript framework. After making a couple small projects using react, I can conclude that it is a pretty great framework after all. In this post, I’ll outline how to hit the ground running as quickly as possible with react.

React uses a specialized version of javascript called jsx. The basic idea is to provide some intuitive syntactic sugar to represent react’s internal version of the DOM which is used by react components — the building blocks of a react-based application.

No comment yet.
Scoop.it!

Multithread.js : In-browser multithreading made easy

Run any business logic you like without interrupting the user experience.

Multithread is a simple wrapper that eliminates the hassle of dealing with Web Workers and transferrable objects.

Run any code you'd like asynchronously, in its own thread, without interrupting the user experience.

No comment yet.
Scoop.it!

Rich JavaScript Applications – the Seven Frameworks (Throne of JS, 2012)

Rich JavaScript Applications – the Seven Frameworks (Throne of JS, 2012) | JavaScript for Line of Business Applications | Scoop.it

* For many web developers, it’s now taken for granted that such client-side frameworks are the way to build rich web apps. If you’re not using one, you’re either not building an application, or you’re just missing out.
* There’s lots of consensus among the main frameworks about how to do it (Model-View-* architecture, declarative bindings, etc. — details below), so to some extent you get similar benefits whichever you choose.
* Some major philosophical differences remain, especially the big split between frameworks and libraries. Your choice will deeply influence your architecture.

* Progressive enhancement isn’t for building real apps.
* Model-View-Whatever.
* Data binding is good.
* IE 6 is dead already.
* Licensing and source control.
* Libraries vs frameworks.

The technologies — quick overview:
* Backbone
* Meteor
* Ember
* AngularJS
* Knockout
* Spine
* Batman
* CanJS

No comment yet.
Scoop.it!

Solving Knockout JS calculated binding in the interface

Solving Knockout JS calculated binding in the interface | JavaScript for Line of Business Applications | Scoop.it

Knockout JS does an excellent job in binding the interface with a View Model. Sometimes we’ll need to do some data manipulation before it can be shown to the users. How would we go about?

A few options come to mind...

No comment yet.
Scoop.it!

The Wild West of Working On NodeJS In Production (and why it's fun).

The Wild West of Working On NodeJS In Production (and why it's fun). | JavaScript for Line of Business Applications | Scoop.it

NodeJS is a lightweight technology that no one has yet conquered and shackled in the prison of “Best Practices”. When coding a new app, there’s no list of frameworks to use, no service containers to worry about, no definitions, no injections or ejections or what have you. When you start a new app, there’s app.js and there’s your code.

It’s interesting that Node has become such a fun tool to work with and everyone that I’ve met or whose articles I’ve read, has had a wide smile on their face, eager to tell me how amazing it was working on their last project. My reasoning behind it is this Wild West of NodeJS.

A few weeks ago, after working on my personal Laravel project, I switched to work on a Node project and it’s just refreshing.

The refreshment comes from the fact that not only were not most problems already solved for the platform (meaning that there is space for your own NPM packages and your own improvements) but there was a freedom from conventions and structures.

No comment yet.
Scoop.it!

An Introduction to jide.js - toolkit for developing rich, modern web applications

An Introduction to jide.js - toolkit for developing rich, modern web applications | JavaScript for Line of Business Applications | Scoop.it

jide.js is a new toolkit for creating modern web applications. It consists of a collection of useful controls and all the tools you need to create your own, application specific, components. jide.js fully embraces AMD (require.js) to allow you to pick only those parts of it that you truly need. Starting with version 1.0.0-beta3, you’ll also be able to use it with Browserify.

At its core, jide.js is built around observable values, event emitters, and data binding. It utilizes the features of modern browsers (IE9+) to create a solid cross platform experience and to leverage the features of the current JavaScript language instead of clinging to the past.


This article only serves as a brief introduction to jide.js. There are lots of other controls built into jide.js that help you create your application, and the presented style is only one way. If you prefer not to use templates at all, that’s fine too. You can, for example, use operations such as filter, map and sortto create live updating variants of your original data.

To learn more about jide.js, please visit the project website where you can find lots of examples, demos, and guides. You are also directed to the project’s GitHub repository.

No comment yet.
Scoop.it!

Towards atomic AngularJS components with Browserify

Towards atomic AngularJS components with Browserify | JavaScript for Line of Business Applications | Scoop.it

When I read Atomic Product Development a few weeks ago, it was a lightbulb moment for me. It managed to finally put words (and code!) to the handful of loose ideas that had been rattling around my head for the better part of a year. I've started contributing to the project, and you'll undoubtedly hear more about it from me in the future, but I thought it might be helpful to first show a basic application of the concepts to AngularJS.
The atomify projects (specifically atomify-js and atomify-css) were not created with frameworks like AngularJS in mind. If you take a look at the atomify-example, you can see it's more like Backbone or vanilla JS, but the principles and underlying tools are universally appealing.

Therefore, the challenge I've spent the last couple of weeks solving is how to utilize that foundation in the context of AngularJS. As it turns out, it's actually pretty simple.

No comment yet.
Scoop.it!

An AngularJS Style Guide and Best Practice for App Structure

 Want to know how Google style's their Angular apps? Read this guide including best practices.

While this documents how we use AngularJS in production code at Google, you'll notice that the style guide is heavily biased towards JSCompiler optimizations and the needs of large code bases. We don't think this makes sense for all projects that use AngularJS, and we'd love to see our community of developers come up with a more general Style that's applicable to AngularJS projects large and small.

No comment yet.
Scoop.it!

Ember.js and accessibility

Ember.js and accessibility | JavaScript for Line of Business Applications | Scoop.it

I had always been repeating what I’d heard about screen readers: they can’t work with JavaScript. Turns out that’s not exactly true. The video is the best way to show you...

* VoiceOver, Ember.js, and WAI-ARIA

No comment yet.
Scoop.it!

Web Components Can Do That?!

Web Components Can Do That?! | JavaScript for Line of Business Applications | Scoop.it

A session at London JS Conf by Addy Osmani.

No comment yet.
Scoop.it!

Protractor: E2E test framework for Angular apps

Protractor: E2E test framework for Angular apps | JavaScript for Line of Business Applications | Scoop.it

Protractor is an end to end test framework for AngularJS applications built on top of WebDriverJS. Protractor runs tests against your application running in a real browser, interacting with it as a user would.

Protractor can be run as a standalone binary, or included into your tests as a library. Use Protractor as a libraryif you would like to manage WebDriver and your test setup yourself.


No comment yet.