#Angular
"@" ( Text binding / one-way binding )
"=" ( Direct model binding / two-way binding )
"&" ( Behaviour binding / Method binding )
"?" = optionnal (no inheritance from parent scope)
/**** Utils ****/ | |
.font(@size) { | |
font-size: @size; | |
line-height: @size; | |
} | |
.size(@width, @height) { | |
width: @width; | |
height: @height; | |
} |
var gulp = require('gulp'); | |
var sourcemaps = require('gulp-sourcemaps'); | |
var source = require('vinyl-source-stream'); | |
var buffer = require('vinyl-buffer'); | |
var browserify = require('browserify'); | |
var watchify = require('watchify'); | |
var babel = require('babelify'); | |
var sass = require('gulp-sass'); | |
function compile(watch) { |
http://ricostacruz.com/cheatsheets/semver.html
Given a version number MAJOR.MINOR.PATCH
:
-MAJOR
= incompatible API changes.
-MINOR
= add functionality. (backwards-compatible)
-PATCH
= bug fixes. (backwards-compatible)
For each call ajax
English
var msg = new SpeechSynthesisUtterance('Hello! how are you today?');
msg.lang = 'en-US';
window.speechSynthesis.speak(msg);
French
var msg = new SpeechSynthesisUtterance("Bonjour, comment allez vous aujourd'hui?");
<!DOCTYPE html> | |
<html> | |
<body> | |
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABUAAAAL1CAYAAAAGpk5zAATYKnpUWHRteEdyYXBoTW9kZWwAALy8x47tSNA09jQDSJsBvVnS89B7t/lB773n04vs+RZaSBsJEnBP39M0xTJZmRGRyf4HZvqrqLv8HwjY13yhynzY/oHZfyBIHZ+66+J/IB79F3hP/29qnNbDNq7VPzD9/v4btrx7/38Pvz91+/0RvB8Q+F8g+L+w//39Sk1Tl/t5Itfb1wqM/wtjX0Oy6KjKPxDzfu/q9nu0kKft+N3CVMvY539X/wv8C+EE+i+IwO8JOy7ipf4/NQO9B498Wetx+K+/6L/4v9C/yH9n8qzexuW/E+d5/pst8flvPf53crun/L9T5TiW39ihf2DuH5jJ6rhc4v79BVeeYJ2DuK0DRCvy6/GqUdz4OCZRk8EAMAD/gejzB6E9nI4r9iiLva87dsGDpd9kSHHOcGPCew36vM/hT9GC08EgvHo20Rj+jjA0bpziZZwszRIIxZ7vQbg2guFWx9ogUFe9PPLIlO8wTi07TuDE2yAPXl7S5YFywNclhhG0pNF71IhKvXi/0AOGE+k7T3SG6gYOxuT7tXovyPKhGQTr/YakbFbNXx/ef8IYQN7yXpOnY1N+XS265zdjCoGi6n+XwE8lcVgSVtg7d/z+fp73U/IMjBLf9QAKE8775SCLArevbvhGIhZiqIQFwAIG9SzD1wusJfDEw5P3LK/tBYY377c7675evJ88/S46vmNlMNGAdNOMfes/9/wZ2NeN98n0Ny6yabL1+Osbbb4rylMgdBTnMgiF8a4+302gAcotOVz5DGSQPT3t4nAr6I3aezZ4R0ULWQRiEnJsOiFhG9GaX5c31Xh/ptj0XnC/nyLDWwH0Di3fv9Nl2kTF9Q6dvt7P/HyNWe1DFrbtXP5BsEhDEJfYXguO0EAViLOX0Df7XC71Nf |
import { Action, ActionReducer, Store } from '@ngrx/store'; | |
import { BehaviorSubject } from 'rxjs/BehaviorSubject'; | |
import { Observable } from 'rxjs/Observable'; | |
import { map } from 'rxjs/operator/map'; | |
import { Observer } from 'rxjs/Observer'; | |
// TODO: How to initialize those variables? | |
const dispatcherMock: Observer<Action>, | |
reducerMock: Observer<ActionReducer<any>>, | |
stateMock: Observable<any>; |
export function createTranslateLoader(http: HttpClient) { | |
return new TranslateHttpLoader(http, './assets/i18n/app/', '.json'); | |
} | |
@NgModule({ | |
imports: [ | |
/* ... */ | |
HttpClientModule, | |
TranslateModule.forRoot({ | |
loader: { |