20
Константин Макарычев для FrontHub

[Fronthub 2016] Константин Макарычев: "Не быстрый старт с Angular 2"

Embed Size (px)

Citation preview

Page 1: [Fronthub 2016] Константин Макарычев: "Не быстрый старт с Angular 2"

Константин Макарычев для FrontHub

Page 2: [Fronthub 2016] Константин Макарычев: "Не быстрый старт с Angular 2"

VanillaJS, jQuery, Backbone

Page 3: [Fronthub 2016] Константин Макарычев: "Не быстрый старт с Angular 2"

Angular2

Page 4: [Fronthub 2016] Константин Макарычев: "Не быстрый старт с Angular 2"

Зачем?

Page 5: [Fronthub 2016] Константин Макарычев: "Не быстрый старт с Angular 2"

TypeScript vs ES6

Page 6: [Fronthub 2016] Константин Макарычев: "Не быстрый старт с Angular 2"
Page 7: [Fronthub 2016] Константин Макарычев: "Не быстрый старт с Angular 2"

App Component

Center Component

List Component

List Item Component

List Item Component

List Item Component

List Item Component

List Item Component

List Item Component

Yet Another Component

Page 8: [Fronthub 2016] Константин Макарычев: "Не быстрый старт с Angular 2"

app.component.js app.template.html app.style.css

ui/src/components/app

Page 9: [Fronthub 2016] Константин Макарычев: "Не быстрый старт с Angular 2"

import { Component } from '@angular/core';

@Component({ selector: 'app', styles: [ require('./app.style.css') ], template: require('./app.template.html')})export class App {}

Page 10: [Fronthub 2016] Константин Макарычев: "Не быстрый старт с Angular 2"

<div class="text">App Container</div><list></list><center></center><yet-another-component></yet-another-component>

Page 11: [Fronthub 2016] Константин Макарычев: "Не быстрый старт с Angular 2"

:host { display: flex; flex-flow: row wrap; justify-content: space-around; padding: 50px 15px 50px 15px; height: 80vh; width: 90vw; background-color: #4B87CB; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);}

.text { flex: 1 100%; text-align: center; margin-bottom: 10px;}

center { flex: 2 0px;}

list, yet-another-component { flex: 1 0px; margin: 0 15px 0 15px;}

Page 12: [Fronthub 2016] Константин Макарычев: "Не быстрый старт с Angular 2"

src

index.js app.module.js components

app.component.js app.template.html app.style.css list

list.component.js list.template.html list.style.css item

center

Page 13: [Fronthub 2016] Константин Макарычев: "Не быстрый старт с Angular 2"

import { NgModule } from '@angular/core';import { BrowserModule } from '@angular/platform-browser';

import { App } from './components/app/app.component';

import { Center } from './components/app/center/center.component';import { List } from './components/app/list/list.component';import { Item } from './components/app/list/item/item.component';

@NgModule({ imports: [ BrowserModule ], declarations: [ App, Center, List, Item, YetAnotherComponent ], bootstrap: [ App ],})export class AppModule { }

Page 14: [Fronthub 2016] Константин Макарычев: "Не быстрый старт с Angular 2"

Сборка: gulp + babel + browserify

Page 15: [Fronthub 2016] Константин Макарычев: "Не быстрый старт с Angular 2"

npm install --save @angular/common @angular/compiler @angular/core

@angular/platform-browser @angular/platform-browser

@angular/platform-browser-dynamic babel-cli babel-plugin-transform-function-bind babel-preset-angular2 babel-preset-es2015 babel-register babelify browserify del gulp gulp-sourcemaps gulp-util object-

assign rxjs stringify vinyl-buffer vinyl-source-stream watchify zone.js

Page 16: [Fronthub 2016] Константин Макарычев: "Не быстрый старт с Angular 2"

gulp.task('build', () => { const b = browserify('ui/src/index.js') .transform(stringify({ appliesTo: { includeExtensions: ['.html', '.css'] } })) .transform(babelify); return bundle(b);});

function bundle(b) { return b.bundle() .on('error', (e) => { gutil.log(e); }) .pipe(source('bundle.js')) .pipe(buffer()) .pipe(sourcemaps.init({

loadMaps: true })) .pipe(sourcemaps.write('./')) .pipe(gulp.dest('ui/build'));}

Page 17: [Fronthub 2016] Константин Макарычев: "Не быстрый старт с Angular 2"

<!doctype html><html> <head> <title>FrontHub: Angular2 example</title></head> <body> <app>Loading</app> <script src="/ui/build/bundle.js"></script> </body></html>

Page 18: [Fronthub 2016] Константин Макарычев: "Не быстрый старт с Angular 2"

python -m SimpleHTTPServer

Page 19: [Fronthub 2016] Константин Макарычев: "Не быстрый старт с Angular 2"

Ложка дёгтя

Page 20: [Fronthub 2016] Константин Макарычев: "Не быстрый старт с Angular 2"

https://github.com/mkf-simpson/fronthub-2016