SlideShare a Scribd company logo
goo.gl/ePTKan
Будь первым
Будь первым
Ideas worth
spreading
Немного о себе
Зовут меня Константин Кривленя.
Разработчик в Targetprocess.
Помогаю опенсорсной JavaScript-библиотеки
чартов Taucharts.
Twitter (https://twitter.com/Krivlenia/)
Github (https://github.com/Mavrin/)
Хабр (http://habrahabr.ru/users/mavrin/)
Будь первым
#!/bin/bash
# Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved.
# For licensing, see LICENSE.md or http://ckeditor.com/license
# Build CKEditor using the default settings (and build.js).
set -e
echo "CKBuilder - Builds a release version of ckeditor-dev."
echo ""
CKBUILDER_VERSION="2.3.0"
CKBUILDER_URL="http://download.cksource.com/CKBuilder/$CKBUILDER_VERSION/ckbuilder.jar"
PROGNAME=$(basename $0)
MSG_UPDATE_FAILED="Warning: The attempt to update ckbuilder.jar failed. The existing file will be used
MSG_DOWNLOAD_FAILED="It was not possible to download ckbuilder.jar."
ARGS=" $@ "
function error_exit
{
echo "${PROGNAME}: ${1:-"Unknown Error"}" 1>&2
exit 1
}
function command_exists
{
command -v "$1" > /dev/null 2>&1;
}
/* jshint node: true */
'use strict';
const gulp = require( 'gulp' );
const config = {
ROOT_DIR: '.',
BUILD_DIR: 'build',
WORKSPACE_DIR: '..',
// Files ignored by jshint and jscs tasks. Files from .
// gitignore will be added automatically during tasks execution.
IGNORED_FILES: [
'src/lib/**'
]
};
require( './dev/tasks/build/tasks' )( config );
require( './dev/tasks/dev/tasks' )( config );
require( './dev/tasks/lint/tasks' )( config );
require( './dev/tasks/docs/tasks' )( config );
gulp.task( 'default', [ 'build' ] );
gulp.task( 'pre-commit', [ 'lint-staged' ] );
module.exports = function(grunt) {
grunt.initConfig({
jshint: {
files: ['Gruntfile.js', 'src/**/*.js', 'test/**/*.js'],
options: {
globals: {
jQuery: true
}
}
},
watch: {
files: ['<%= jshint.files %>'],
tasks: ['jshint']
}
});
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.registerTask('default', ['jshint']);
};
{
...
"scripts": {
"pretest": "npm run lint && npm run beautify-lint",
"test": "mocha --harmony --full-trace --check-leaks",
"travis": "npm run cover -- --report lcovonly",
"lint": "eslint lib bin hot",
"beautify-lint": "beautify-lint lib/**.js hot/**.js bin/**.js
"beautify": "beautify-rewrite lib/**.js hot/**.js bin/**.js b
"postcover": "npm run lint && npm run beautify-lint",
"cover": "istanbul cover -x *.runtime.js node_modules/mocha/b
"publish-patch": "npm run lint && npm run beautify-lint && mo
}
}
Day 1: Wow, NPM scripts are so much simpler.
Day 2: Moving them into their own js file for readability.
Day 3: I've reinvented Gulp.
5:05 PM ­ 18 Feb 2016
   326   467
Jake Archibald 
 @jaffathecake
• Webpack
• Gulp
• Автоматизация для фронтендеров
PostCSS
Будь первым
Rework
PostCSS это не
• CSS preprocessor
• CSS postprocessor
• CSS linter
• CSS minifier
PostCSS это инструмент трансформации
CSS с помощью JavaScript
#СитникДавайЕще
Проблема PostCSS
нет детального
парсинга
PostCSS 6.0
c новым парсером
похожим на Babel
Будь первым
module.exports = leftpad;
function leftpad (str, len, ch) {
str = String(str);
var i = -1;
if (!ch && ch !== 0) ch = ' ';
len = len - str.length;
while (++i < len) {
str = ch + str;
}
return str;
}
Component
inspector
Будь первым
Инструментирование
кода
Будь первым
Влияние количества пиратов на
глобальное потепление
35000 45000 20000 15000 5000 400 17
Число Пиратов Примерно
13
13.5
14
14.5
15
15.5
16
16.5
Земная Средняя Температура (°C)
Будь первым
var chart = new tauCharts.Chart({
data:OscarNominees,
type:'line',
x:'Year',
y:'Runtime',
color:'isWinner',
size:null,
plugins:
[
tauCharts.api.plugins.get('trendline')(),
]
});
chart.renderTo('#container');
var plot = new tauCharts.Plot({
...
unit: {
type: "COORDS.RECT",
...,
frames: [
{
units: [
{
...,
type: "COORDS.RECT",
units: [
{
size: "size",
type: "ELEMENT.LINE",
...
}
]
}
]
}
]
}
});
Будь первым
import styles from "./style.css";
// import { className } from "./style.css";
element.innerHTML = '<div class="' + styles.className + '">';
<div class="className_116zl_1">
.className {
color: green;
background: red;
}
.otherClassName {
composes: className;
color: yellow;
}
Будь первым
<b:isolate/>
<b:style src="./cards-v2.css"/>
<b:style src="./board_units.css"/>
<div class="card" event-click="openView">
<div class="section">
<div class="unit unit_format_max">
<div class="name">{name}</div>
</div>
</div>
</div>
<div class="i27__card" event-click="openView">
<div class="i27__section">
<div class="i27__unit i27__unit_format_max">
<div class="i27__name">test</div>
</div>
</div>
</div>
Будь первым
V8
Fast Property Access
Dynamic Machine Code
Generation
Efficient Garbage
Collection
• Design Elements
• An Efficient Implementation of Self, a Dynamically-Typed Object-Oriented
Language Based on Prototypes
• Efficient implementation of the smalltalk-80 system
Redux
Будь первым
Идеи Redux
• elm
• Command Query Responsibility Segregation (CQRS)
• Event Sourcing
Cycle.js
Sources
Sinks
main()
DOM side effects
HTTP side effects
Other side effects
pure dataflow
Будь первым
const Cycle = require('@cycle/core');
const {makeDOMDriver, div, button,p} = require('@cycle/dom');
const {Observable} = require('rx');
function main(sources) {
const decrement$ = sources.DOM
.select('.decrement').events('click').map(ev => -1);
const increment$ = sources.DOM
.select('.increment').events('click').map(ev => +1);
const action$ = Observable.merge(decrement$, increment$);
const count$ = action$.startWith(0).scan((x,y) => x+y);
const vtree$ = count$.map(count =>
div([
button('.decrement', 'Decrement'),
button('.increment', 'Increment'),
p('Counter: ' + count)
])
);
return { DOM: vtree$ };
}
const sources = {
DOM: makeDOMDriver('.app')
}
Cycle.run(main, sources);
ReactiveX
Будь первым
React
Будь первым
Будь первым
Будь первым
Проблема React
Еще одна
абстракция
var MyForm = React.createClass({
onSend: function(e) {
this.props.send()
},
render: function() {
return (
;
<div onKeyDown={this.onSend}>
<Input type="text">
<Button onClick={this.onSend}>Ok</Button>
</div>
)
var MyForm = React.createClass({
onSend: function(e) {
this.props.send()
},
render: function() {
return (
;
<form onSubmit={this.onSend}>
<Input type="text">
<Button>Ok</Button>
</form>
)
Учите родные API
А где же?
• Ember
• Angular
• Angular2
• Мой любимый фреймворк
Делитесь идеями
Учите идеи
Вопросы?
Basisjs

More Related Content

PDF
Scalable Angular 2 Application Architecture
FDConf
 
PPTX
The State of JavaScript (2015)
Domenic Denicola
 
PDF
Elasticsearch (R)Evolution — You Know, for Search… by Philipp Krenn at Big Da...
Big Data Spain
 
PPT
Full-Stack JavaScript with Node.js
Michael Lehmann
 
PDF
FwDays 2021: Metarhia Technology Stack for Node.js
Timur Shemsedinov
 
PPTX
All you need to know about the JavaScript event loop
Saša Tatar
 
PDF
Apache MXNet Distributed Training Explained In Depth by Viacheslav Kovalevsky...
Big Data Spain
 
PPTX
Jk rubyslava 25
Jozef Képesi
 
Scalable Angular 2 Application Architecture
FDConf
 
The State of JavaScript (2015)
Domenic Denicola
 
Elasticsearch (R)Evolution — You Know, for Search… by Philipp Krenn at Big Da...
Big Data Spain
 
Full-Stack JavaScript with Node.js
Michael Lehmann
 
FwDays 2021: Metarhia Technology Stack for Node.js
Timur Shemsedinov
 
All you need to know about the JavaScript event loop
Saša Tatar
 
Apache MXNet Distributed Training Explained In Depth by Viacheslav Kovalevsky...
Big Data Spain
 
Jk rubyslava 25
Jozef Képesi
 

What's hot (20)

PPTX
Rubyslava + PyVo #48
Jozef Képesi
 
PDF
Debugging JavaScript with Chrome
Igor Zalutsky
 
PDF
非同期javascriptの過去と未来
Taketoshi 青野健利
 
PDF
Matthew Eernisse, NodeJs, .toster {webdev}
.toster
 
KEY
New Design of OneRing
Qiangning Hong
 
PPTX
Creating Reusable Puppet Profiles
Bram Vogelaar
 
PDF
Openstack taskflow 簡介
kao kuo-tung
 
PPTX
JavaScript Engines and Event Loop
Tapan B.K.
 
PDF
clara-rules
Ikuru Kanuma
 
PPTX
Chromium Embedded Framework + Go at Brooklyn JS
quirkey
 
PDF
Event loop
codepitbull
 
PPT
Async programming on NET
yuyijq
 
PDF
Raymond Kuiper - Working the API like a Unix Pro
Zabbix
 
PDF
Add Some Fun to Your Functional Programming With RXJS
Ryan Anklam
 
PDF
Autoscaling with hashi_corp_nomad
Bram Vogelaar
 
PPTX
Bs webgl소모임004
Seonki Paik
 
ODP
Event Loop in Javascript
DiptiGandhi4
 
PPTX
ql.io: Consuming HTTP at Scale
Subbu Allamaraju
 
ZIP
Javascript Everywhere From Nose To Tail
Cliffano Subagio
 
PDF
Jeroen Vloothuis Bend Kss To Your Will
Vincenzo Barone
 
Rubyslava + PyVo #48
Jozef Képesi
 
Debugging JavaScript with Chrome
Igor Zalutsky
 
非同期javascriptの過去と未来
Taketoshi 青野健利
 
Matthew Eernisse, NodeJs, .toster {webdev}
.toster
 
New Design of OneRing
Qiangning Hong
 
Creating Reusable Puppet Profiles
Bram Vogelaar
 
Openstack taskflow 簡介
kao kuo-tung
 
JavaScript Engines and Event Loop
Tapan B.K.
 
clara-rules
Ikuru Kanuma
 
Chromium Embedded Framework + Go at Brooklyn JS
quirkey
 
Event loop
codepitbull
 
Async programming on NET
yuyijq
 
Raymond Kuiper - Working the API like a Unix Pro
Zabbix
 
Add Some Fun to Your Functional Programming With RXJS
Ryan Anklam
 
Autoscaling with hashi_corp_nomad
Bram Vogelaar
 
Bs webgl소모임004
Seonki Paik
 
Event Loop in Javascript
DiptiGandhi4
 
ql.io: Consuming HTTP at Scale
Subbu Allamaraju
 
Javascript Everywhere From Nose To Tail
Cliffano Subagio
 
Jeroen Vloothuis Bend Kss To Your Will
Vincenzo Barone
 
Ad

Viewers also liked (11)

PPTX
Dart: питание и сила для вашего проекта
FDConf
 
PPTX
Если у вас нету тестов...
FDConf
 
PPTX
Migrate your React.js application from (m)Observable to Redux
FDConf
 
PDF
CSSO — сжимаем CSS
FDConf
 
PDF
Redux. From twitter hype to production
FDConf
 
PDF
"Пиринговый веб на JavaScript"
FDConf
 
PPTX
JavaScript: прошлое, настоящее и будущее.
FDConf
 
PDF
"Service Worker: Let Your Web App Feel Like a Native "
FDConf
 
PDF
В погоне за производительностью
Denys Mishunov
 
PDF
Digital pipeline — инновации в продажах / Михаил Токовинин
Ontico
 
PPTX
Javascript in big project
Evgeny Gusev
 
Dart: питание и сила для вашего проекта
FDConf
 
Если у вас нету тестов...
FDConf
 
Migrate your React.js application from (m)Observable to Redux
FDConf
 
CSSO — сжимаем CSS
FDConf
 
Redux. From twitter hype to production
FDConf
 
"Пиринговый веб на JavaScript"
FDConf
 
JavaScript: прошлое, настоящее и будущее.
FDConf
 
"Service Worker: Let Your Web App Feel Like a Native "
FDConf
 
В погоне за производительностью
Denys Mishunov
 
Digital pipeline — инновации в продажах / Михаил Токовинин
Ontico
 
Javascript in big project
Evgeny Gusev
 
Ad

More from FDConf (20)

PPT
Антон Киршанов - «Квант изменения. Реактивные реакции на React.
FDConf
 
PDF
Игорь Еростенко - Создаем виртуальный тур
FDConf
 
PDF
Илья Климов - Reason: маргиналы против хайпа
FDConf
 
PDF
Максим Щепелин - Доставляя веб-контент в игру
FDConf
 
PDF
Александр Черноокий - Как правило "победитель получает все" работает и не раб...
FDConf
 
PDF
Михаил Волчек - Что такое Цифровая мастерская?
FDConf
 
PDF
Radoslav Stankov - Handling GraphQL with React and Apollo
FDConf
 
PDF
Виктор Русакович - Выборы, выборы, все фреймворки… приторны
FDConf
 
PDF
Slobodan Stojanovic - 8 1/2 things about serverless
FDConf
 
PPTX
Тимофей Лавренюк - Почему мне зашел PWA?
FDConf
 
PDF
В погоне за производительностью
FDConf
 
PDF
«I knew there had to be a better way to build mobile app»​
FDConf
 
PDF
«Как перестать отлаживать асинхронные вызовы и начать жить»​
FDConf
 
PDF
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
FDConf
 
PPTX
«Идеи и алгоритмы создания масштабируемой архитектуры в играх»​
FDConf
 
PDF
«От экспериментов с инфраструктурой до внедрения в продакшен»​
FDConf
 
PDF
«The Grail: React based Isomorph apps framework»​
FDConf
 
PDF
«The Illusion of Time. When 60 sec is not 1 minute»​
FDConf
 
PDF
«Книги в браузере»
FDConf
 
PDF
«Как работают современные интерактивные карты на WebGL»​
FDConf
 
Антон Киршанов - «Квант изменения. Реактивные реакции на React.
FDConf
 
Игорь Еростенко - Создаем виртуальный тур
FDConf
 
Илья Климов - Reason: маргиналы против хайпа
FDConf
 
Максим Щепелин - Доставляя веб-контент в игру
FDConf
 
Александр Черноокий - Как правило "победитель получает все" работает и не раб...
FDConf
 
Михаил Волчек - Что такое Цифровая мастерская?
FDConf
 
Radoslav Stankov - Handling GraphQL with React and Apollo
FDConf
 
Виктор Русакович - Выборы, выборы, все фреймворки… приторны
FDConf
 
Slobodan Stojanovic - 8 1/2 things about serverless
FDConf
 
Тимофей Лавренюк - Почему мне зашел PWA?
FDConf
 
В погоне за производительностью
FDConf
 
«I knew there had to be a better way to build mobile app»​
FDConf
 
«Как перестать отлаживать асинхронные вызовы и начать жить»​
FDConf
 
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
FDConf
 
«Идеи и алгоритмы создания масштабируемой архитектуры в играх»​
FDConf
 
«От экспериментов с инфраструктурой до внедрения в продакшен»​
FDConf
 
«The Grail: React based Isomorph apps framework»​
FDConf
 
«The Illusion of Time. When 60 sec is not 1 minute»​
FDConf
 
«Книги в браузере»
FDConf
 
«Как работают современные интерактивные карты на WebGL»​
FDConf
 

Recently uploaded (20)

PPTX
Dakar Framework Education For All- 2000(Act)
santoshmohalik1
 
PDF
Review of Related Literature & Studies.pdf
Thelma Villaflores
 
PDF
Landforms and landscapes data surprise preview
jpinnuck
 
PPTX
How to Manage Leads in Odoo 18 CRM - Odoo Slides
Celine George
 
PDF
What is CFA?? Complete Guide to the Chartered Financial Analyst Program
sp4989653
 
PPTX
An introduction to Dialogue writing.pptx
drsiddhantnagine
 
PPTX
Strengthening open access through collaboration: building connections with OP...
Jisc
 
PDF
High Ground Student Revision Booklet Preview
jpinnuck
 
PDF
Arihant Class 10 All in One Maths full pdf
sajal kumar
 
PPTX
Presentation on Janskhiya sthirata kosh.
Ms Usha Vadhel
 
PPTX
Open Quiz Monsoon Mind Game Final Set.pptx
Sourav Kr Podder
 
PPTX
Nursing Management of Patients with Disorders of Ear, Nose, and Throat (ENT) ...
RAKESH SAJJAN
 
PDF
1.Natural-Resources-and-Their-Use.ppt pdf /8th class social science Exploring...
Sandeep Swamy
 
PPTX
Care of patients with elImination deviation.pptx
AneetaSharma15
 
PDF
2.Reshaping-Indias-Political-Map.ppt/pdf/8th class social science Exploring S...
Sandeep Swamy
 
PPT
Python Programming Unit II Control Statements.ppt
CUO VEERANAN VEERANAN
 
PPTX
Understanding operators in c language.pptx
auteharshil95
 
DOCX
Action Plan_ARAL PROGRAM_ STAND ALONE SHS.docx
Levenmartlacuna1
 
DOCX
SAROCES Action-Plan FOR ARAL PROGRAM IN DEPED
Levenmartlacuna1
 
PDF
Electricity-Magnetic-and-Heating-Effects 4th Chapter/8th-science-curiosity.pd...
Sandeep Swamy
 
Dakar Framework Education For All- 2000(Act)
santoshmohalik1
 
Review of Related Literature & Studies.pdf
Thelma Villaflores
 
Landforms and landscapes data surprise preview
jpinnuck
 
How to Manage Leads in Odoo 18 CRM - Odoo Slides
Celine George
 
What is CFA?? Complete Guide to the Chartered Financial Analyst Program
sp4989653
 
An introduction to Dialogue writing.pptx
drsiddhantnagine
 
Strengthening open access through collaboration: building connections with OP...
Jisc
 
High Ground Student Revision Booklet Preview
jpinnuck
 
Arihant Class 10 All in One Maths full pdf
sajal kumar
 
Presentation on Janskhiya sthirata kosh.
Ms Usha Vadhel
 
Open Quiz Monsoon Mind Game Final Set.pptx
Sourav Kr Podder
 
Nursing Management of Patients with Disorders of Ear, Nose, and Throat (ENT) ...
RAKESH SAJJAN
 
1.Natural-Resources-and-Their-Use.ppt pdf /8th class social science Exploring...
Sandeep Swamy
 
Care of patients with elImination deviation.pptx
AneetaSharma15
 
2.Reshaping-Indias-Political-Map.ppt/pdf/8th class social science Exploring S...
Sandeep Swamy
 
Python Programming Unit II Control Statements.ppt
CUO VEERANAN VEERANAN
 
Understanding operators in c language.pptx
auteharshil95
 
Action Plan_ARAL PROGRAM_ STAND ALONE SHS.docx
Levenmartlacuna1
 
SAROCES Action-Plan FOR ARAL PROGRAM IN DEPED
Levenmartlacuna1
 
Electricity-Magnetic-and-Heating-Effects 4th Chapter/8th-science-curiosity.pd...
Sandeep Swamy
 

Будь первым