ng Power

https://www.airpair.com/js/javascript-framework-comparison

Other options

 

JavaScript Templating     around 400mb
1h 57m Intermediate Apr 25, 2014

Up and Running with Underscore.js  around 500mb
2h 0m Intermediate Nov 04, 2013
 
Up and Running with Backbone.js   around 300mb
1h 34m Intermediate Jun 10, 2014

Web Project Workflows with Gulp.js, Git, and Browserify
2h 40m Intermediate Jun 23, 2014  around 400mb

Advertisements

Sample grunt js 1

"use strict";
module.exports = function (grunt) {
 require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks);
 var pkg = grunt.file.readJSON('package.json');
grunt.initConfig({
 pkg: pkg,
// JsHint
 jshint: {
 // JsHint configuration is read from packages.json
 options: pkg.jshintConfig,
 all: [
 'Gruntfile.js',
 'app/scripts/**/*.js',
 'test/**/*.js'
 ]
 },
// Less
 less: {
 // less:dev creates a main.css from the less files.
 dev: {
 },
// less:release creates an optimized dist/app/styles/main.css
 // from the less files
 release: {
 }
 },
// Watch
 watch: {
 // watch:less invokes less:dev when less files change
 less: {
 }
 },
// Clean
 clean: {
 // clean:release removed the dist directory
 release: [ 'dist' ]
 },
// UseminPrepare
 // Prepares for javascript concatenation by parsing the build:js
 // tags in app/index.html, options.dest is dist/app
 useminPrepare: {
 },
// Concat
 concat: {
 options: {
 separator: ';'
 },
 // dist configuration is provided by useminPrepare
 dist: {}
 },
// Uglify
 uglify: {
 options: {
 banner: '/*! <%= pkg.name %> <%= grunt.template.today("dd-mm-yyyy") %> */\n'
 },
 // dist configuration is provided by useminPrepare
 dist: {}
 },
// Copy HTML, images and fonts
 copy: {
 // copy:release copies all html and image files to dist
 // preserving the structure
 release: {
 },
 },
// Filerev
 filerev: {
 options: {
 encoding: 'utf8',
 algorithm: 'md5',
 length: 20
 },
 release: {
 // filerev:release hashes(md5) all assets (images, js and css )
 // in dist directory
 }
 },
// Usemin
 // Replaces all assets with their revved version in html and css files.
 // options.assetDirs contains the directories for finding the assets
 // according to their relative paths
 usemin: {
 }
});
// Invoked when grunt is called
 grunt.registerTask('default', 'Default task', [
 'jshint',
 'less:dev'
 ]);
// Invoked with grunt release, creates a release structure
 grunt.registerTask('release', 'Creates a release in /dist', [
 'clean',
 'jshint',
 'less:release',
 'useminPrepare',
 'concat',
 'uglify',
 'copy',
 'filerev',
 'usemin'
 ]);
};

Select precedding/successor siblings through css selectors


.hover-primary-bg:hover *,.hover-primary-bg:hover{
background: #039690; color: white;
}
.hover-white-bg:hover *,.hover-white-bg:hover{
background: white; color: #039690;
}
.hover-primary-bg:hover ~div.hover-white-bg, .hover-primary-bg:hover +div.hover-white-bg{
background: white; color: #039690;
}
.hover-container:hover > div.hover-primary-bg, .hover-container:hover > div.hover-primary-bg *{
background: #039690; color: white !important;
}
.big-text, .big-text *{
font-size: 250%; font-weight: 300;padding: 30px 0px;
}