SlideShare ist ein Scribd-Unternehmen logo
1 von 71
Downloaden Sie, um offline zu lesen


HTML5
CSS3
ECMA6DOM4
HTTP/2














var gulp = require("gulp");
var babel = require("gulp-babel");
var concat = require("gulp-concat");
gulp.task("default", function () {
return gulp.src("src/**/*.js")
.pipe(babel())
.pipe(concat("all.js"))
.pipe(gulp.dest("dist"));
});
$ npm install gulp-babel babel-preset-es2015 gulp-concat
gulp-sourcemaps --save-dev
$ echo '{ "presets": ["es2015"] }' > .babelrc
var gulp = require("gulp");
var sourcemaps = require("gulp-sourcemaps");
var babel = require("gulp-babel");
var concat = require("gulp-concat");
gulp.task("default", function () {
return gulp.src("src/**/*.js")
.pipe(sourcemaps.init())
.pipe(babel())
.pipe(concat("all.js"))
.pipe(sourcemaps.write("."))
.pipe(gulp.dest("dist"));
});
import gulp from "gulp"
import babel from "gulp-babel"
import concat from "gulp-concat"
gulp.task("default", () => {
return gulp.src("src/**/*.js")
.pipe(babel())
.pipe(concat("all.js"))
.pipe(gulp.dest("dist"));
}); // これくらいのサンプルじゃ嬉しくも何ともないけど...
$ npm install babel-core babel-preset-es2015 gulp-babel
gulp-concat --save-dev
$ echo '{ "presets": ["es2015"] }' > .babelrc
var color = "Red"
var browsers = { fx: "Firefox", op: "Opera" }
var secret = `${color} Panda is ${browsers.fx}!
${color} Browser is ${browsers.op}!`
// ECMAScript 5th
// 文字列はひたすら + 演算子で連結
secret = color + " Panda is " + browsers.fx + "!n" +
color + " Browser is " + browsers.op + "!"
var tag = `<a href="...">Can't stop using ES6!</a>`
var re = `"[^"]*"|'[^']*'`
var list =
`<ul>
<li>firefox
<li>red panda
<li>lesser panda
<li>petit panda
</li>`
function panda(s = "lesser") {
return `${s} panda`
}
panda() === "lesser panda"
panda("red") === "red panda"
// ECMAScript 5th
function panda(s) {
if (s === undefined) {
s = "lesser"
}
return s + "panda"
}
function log(x, y, ...rest) {
console.log(x, y, rest)
}
log(1, 2, 3, 4, 5) // 1 2 [3, 4, 5]
log(0) // 0 undefinded []
// ECMAScript 5th
function log(x, y) {
var a = Array.prototype.slice.call(arguments, 2)
console.log (x, y, a)
};
var array = [ "hello", true, 7 ]
var params = [ 1, 2, ...array ]
sum(1, 2, ...params) === 9
var str = "fox"
var chars = [ ...str ] // [ "f", "o", "x" ]
// ECMAScript 5th
var array = [ "hello", true, 7 ]
var params = [ 1, 2 ].concat(array)
sum.apply(null, [ 1, 2 ].concat(params)) === 9
var str = "fox"
var chars = str.split("") // [ "f", "o", "x" ]
[a, b] = [b, a]
var [c,d] = (function f() { return [1,2]; })()
var [e,,[x,y],z=100] =[3,4,[10,20]]
var fx={ name:"Firefox", vendor:"Mozilla", ver:26 }
var ch={ name:"Chrome", vendor:"Google", ver:31 }
var browsers={ firefox: fx, chrome: ch }
var { name: n, ver: v } = fx // -> n="Firefox", v=26
(function ({ vendor: ven }) {
console.log(ven)
})(fx); // -> "Mozilla"
class Animal {
constructor(name) {
this.name = name;
this.hungry = true;
}
eat() {
this.hungry = false;
}
run() {
this.hungry = trye;
}
}
class LesserPanda extends Animal {
constructor(name, tail) {
super(name);
this.tail = tail;
}
}
function Animal(name) {
this.name = name;
this.hungry = true;
}
Animal.prototype.eat = function() {
this.hungry = false;
}
Animal.prototype.run = function() {
this.hungry = true;
}
function LesserPanda(name, tail) {
Animal.call(this, name);
this.tail = tail;
}
LesserPanda.prototype
= Object.create(Animal.prototype);
LesserPanda.prototype.constructor = LesserPanda;
{
let a = 1, b = 10;
let (a = 100, c = 300) console.log(a); // -> 100
for (let a=0; a<3; a++) {
console.log(a+b); // -> 10, 11, 12
}
console.log(a); // -> 1
}
console.log(a); // × ReferenceError: a is not defined
var browser = "Edge";
{ // block scope
let browser = "Firefox";
}
browser === "Edge";
// ECMAScript 5th
// 変数のスコープは関数スコープしか存在しなかった
var browser = "Edge";
(function(){ // function scope hack...
var browser = "Firefox";
})()
browser === "Edge";
{
function browser() { return "Edge"; }
browser() === "Edge"; // true
{
function browser() { return "Firefox"; }
browser() === "Firefox"; // true
}
browser() === "Edge"; // true
}
const browser = "Firefox";
const browser = "Internet Explorer";
browser = "Chrome";
console.log(browser); // -> "Firefox"
[1,2,3].map(x => x * x);
setInterval(() => {
alert("HEY! 提督ぅー!alertしてもイイけどサー、時間と場所をわきまえな
ヨー!");
}, Math.random()*10*1000);
var factorial=((f=n=>n>1 ?n*f(n-1):1)=>(f))();
factorial(10); // 3628800
odds = evens.map(v => v + 1)
pairs = evens.map(v => ({ even: v, odd: v + 1 }))
nums = evens.map((v, i) => v + i)
halfs = evens.map(v => { return v / 2 })
// ECMAScript 5th
odds = evens.map(function (v) { return v + 1; })
pairs = evens.map(function (v) {
return { even: v, odd: v + 1 }
})
nums = evens.map(function (v, i) { return v + i; })
function Person(){
this.age = 0
setInterval(() => {
this.age++ // this は Person オブジェクト
}, 1000)
}
var p = new Person()
function doFirstAsync(fileurl) {
return new Promise(function(resolve,reject) {
$.ajax({
src: fileurl, dataType: "json"
}).done(function(data){
resolve(data);
});
}
}
async function task(param) {
await new Promise((resolve) => {
setTimeout(resolve,1000);
});
let first = await doFirstAsync(".../first.json")
let second = await doSecondAsync(".../second.json")
let third = await doThirdAsync(".../third.json")
// ...取得したデータを使って色々処理
};






var set = new Set()

//	 集合に追加・確認・削除

set.add("Firefox")

set.add("Thunderbird")

set.add(+0);

set.add(NaN)

set.has("Firefox") 	 // ->	 true

set.has("Sunbird")	  // ->	 false

set.delete("Firefox")

set.has("Firefox")	  // ->	 false

//	 -0	 と	 +0	 は同値と見なす	 (初期実装と異なる),	 NaN	 は自身と一致

//	 初期の仕様・実装では	 -0	 と	 +0	 は区別されていたが変更された

set.has(-0)	  	 	 	 	 	 	 	 // ->	 true

set.has(NaN)	  	 	 	 	 	 	 // ->	 true	 ここが	 ===	 での比較と異なるので注意
var map = new Map()

var	 str = "Mozilla",	 obj = {}, func = function(){}

// Map	 に値を格納

map.set(str, "Firefox")

map.set(obj, "Thunderbird")

map.set(func, "Japan")

//	 キーに対応する値を取得

map.get(str)	   	 	 	 	 	 	 	 // ->	 "Firefox"

map.get(obj)	  	 	 	 	 	 	 	  // ->	 "Thunderbird"

map.get(func)	 	 	 	 	 	 	 	  // ->	 "Japan"

//	 設定したキーと引数の比較は	 ==	 ではないので注意

map.get("Mozilla")	 	 	  // ->	 "Firefox"

map.get({})	        	 	  // ->	 undefined

map.get(function(){}) // ->	 undefined
大規模アプリの処理速度では C 言語が圧倒的に早かった
(小規模アプリや一部ベンチ限定なら既に十分高速だった)
asm.js 導入直後で C の 2 倍遅い程度、今では数割程度の違い
(Java や C# の処理速度と同程度以上の水準に)


Java script.trend(spec)
Java script.trend(spec)
Java script.trend(spec)
Java script.trend(spec)
Java script.trend(spec)

Weitere ähnliche Inhalte

Was ist angesagt?

JavaScript Assíncrono
JavaScript AssíncronoJavaScript Assíncrono
JavaScript AssíncronoNatã Barbosa
 
Тененёв Анатолий, Boost.Asio в алгоритмической торговле
Тененёв Анатолий, Boost.Asio в алгоритмической торговлеТененёв Анатолий, Boost.Asio в алгоритмической торговле
Тененёв Анатолий, Boost.Asio в алгоритмической торговлеPlatonov Sergey
 
ECMAScript 6 im Produktivbetrieb
ECMAScript 6 im ProduktivbetriebECMAScript 6 im Produktivbetrieb
ECMAScript 6 im ProduktivbetriebSebastian Springer
 
Collection pipeline par Mathieu Godart
Collection pipeline par  Mathieu GodartCollection pipeline par  Mathieu Godart
Collection pipeline par Mathieu GodartCocoaHeads France
 
ECMA2015 INSIDE
ECMA2015 INSIDEECMA2015 INSIDE
ECMA2015 INSIDEJun Ho Lee
 
Java Script - Object-Oriented Programming
Java Script - Object-Oriented ProgrammingJava Script - Object-Oriented Programming
Java Script - Object-Oriented Programmingintive
 
Invoke y como poner en marcha un entorno de trabajo
Invoke y como poner en marcha un entorno de trabajoInvoke y como poner en marcha un entorno de trabajo
Invoke y como poner en marcha un entorno de trabajoNaN-tic
 
Node.JS
Node.JSNode.JS
Node.JSeibaan
 
jQuery for designers
jQuery for designersjQuery for designers
jQuery for designersJohan Ronsse
 
JS programowanie obiektowe
JS  programowanie obiektoweJS  programowanie obiektowe
JS programowanie obiektowePiotr Czajkowski
 
Introduction to Service Worker
Introduction to Service WorkerIntroduction to Service Worker
Introduction to Service WorkerShogo Sensui
 
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #2, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #2, NDC2017이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #2, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #2, NDC2017devCAT Studio, NEXON
 
PyconRu 2016. Осторожно, DSL!
PyconRu 2016. Осторожно, DSL!PyconRu 2016. Осторожно, DSL!
PyconRu 2016. Осторожно, DSL!Ivan Tsyganov
 
Фатальный недостаток Node.js
Фатальный недостаток Node.jsФатальный недостаток Node.js
Фатальный недостаток Node.jsOleksii Okhrymenko
 
Rambler.iOS #8: Чистые unit-тесты
Rambler.iOS #8: Чистые unit-тестыRambler.iOS #8: Чистые unit-тесты
Rambler.iOS #8: Чистые unit-тестыRAMBLER&Co
 
Devel::NYTProf
Devel::NYTProfDevel::NYTProf
Devel::NYTProfclkao
 

Was ist angesagt? (20)

JavaScript Assíncrono
JavaScript AssíncronoJavaScript Assíncrono
JavaScript Assíncrono
 
Discover ServiceWorker
Discover ServiceWorkerDiscover ServiceWorker
Discover ServiceWorker
 
Тененёв Анатолий, Boost.Asio в алгоритмической торговле
Тененёв Анатолий, Boost.Asio в алгоритмической торговлеТененёв Анатолий, Boost.Asio в алгоритмической торговле
Тененёв Анатолий, Boost.Asio в алгоритмической торговле
 
ECMAScript 6 im Produktivbetrieb
ECMAScript 6 im ProduktivbetriebECMAScript 6 im Produktivbetrieb
ECMAScript 6 im Produktivbetrieb
 
Testování prakticky
Testování praktickyTestování prakticky
Testování prakticky
 
Collection pipeline par Mathieu Godart
Collection pipeline par  Mathieu GodartCollection pipeline par  Mathieu Godart
Collection pipeline par Mathieu Godart
 
ECMA2015 INSIDE
ECMA2015 INSIDEECMA2015 INSIDE
ECMA2015 INSIDE
 
Java Script - Object-Oriented Programming
Java Script - Object-Oriented ProgrammingJava Script - Object-Oriented Programming
Java Script - Object-Oriented Programming
 
Invoke y como poner en marcha un entorno de trabajo
Invoke y como poner en marcha un entorno de trabajoInvoke y como poner en marcha un entorno de trabajo
Invoke y como poner en marcha un entorno de trabajo
 
Node.JS
Node.JSNode.JS
Node.JS
 
jQuery for designers
jQuery for designersjQuery for designers
jQuery for designers
 
JS programowanie obiektowe
JS  programowanie obiektoweJS  programowanie obiektowe
JS programowanie obiektowe
 
Introduction to Service Worker
Introduction to Service WorkerIntroduction to Service Worker
Introduction to Service Worker
 
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #2, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #2, NDC2017이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #2, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #2, NDC2017
 
PyconRu 2016. Осторожно, DSL!
PyconRu 2016. Осторожно, DSL!PyconRu 2016. Осторожно, DSL!
PyconRu 2016. Осторожно, DSL!
 
Фатальный недостаток Node.js
Фатальный недостаток Node.jsФатальный недостаток Node.js
Фатальный недостаток Node.js
 
Rambler.iOS #8: Чистые unit-тесты
Rambler.iOS #8: Чистые unit-тестыRambler.iOS #8: Чистые unit-тесты
Rambler.iOS #8: Чистые unit-тесты
 
Jquery ui, ajax
Jquery ui, ajaxJquery ui, ajax
Jquery ui, ajax
 
PHP Profiling
PHP ProfilingPHP Profiling
PHP Profiling
 
Devel::NYTProf
Devel::NYTProfDevel::NYTProf
Devel::NYTProf
 

Andere mochten auch

現場から変えた“サービスの作り方” -何を作るのかではなくなぜ作るのか- #devsumi
現場から変えた“サービスの作り方” -何を作るのかではなくなぜ作るのか- #devsumi現場から変えた“サービスの作り方” -何を作るのかではなくなぜ作るのか- #devsumi
現場から変えた“サービスの作り方” -何を作るのかではなくなぜ作るのか- #devsumiYahoo!デベロッパーネットワーク
 
HTTPとサーバ技術の最新動向
HTTPとサーバ技術の最新動向HTTPとサーバ技術の最新動向
HTTPとサーバ技術の最新動向Kazuho Oku
 
リアクティブ・アーキテクチャ ~大規模サービスにおける必要性と課題〜 #devsumi
リアクティブ・アーキテクチャ ~大規模サービスにおける必要性と課題〜 #devsumiリアクティブ・アーキテクチャ ~大規模サービスにおける必要性と課題〜 #devsumi
リアクティブ・アーキテクチャ ~大規模サービスにおける必要性と課題〜 #devsumiYuta Okamoto
 
デブサミ2016 | 日本発IoTプラットフォームビジネスへの挑戦 SORACOM 立ち上げ格闘記
デブサミ2016 | 日本発IoTプラットフォームビジネスへの挑戦 SORACOM 立ち上げ格闘記デブサミ2016 | 日本発IoTプラットフォームビジネスへの挑戦 SORACOM 立ち上げ格闘記
デブサミ2016 | 日本発IoTプラットフォームビジネスへの挑戦 SORACOM 立ち上げ格闘記SORACOM,INC
 
How to develop a huge Single Page Application
How to develop a huge Single Page ApplicationHow to develop a huge Single Page Application
How to develop a huge Single Page ApplicationNaoki Yamada
 
マイクロサービス時代の動画配信基Ruby×go=∞
マイクロサービス時代の動画配信基Ruby×go=∞マイクロサービス時代の動画配信基Ruby×go=∞
マイクロサービス時代の動画配信基Ruby×go=∞DMM.com
 
AWSで実現するクラウドネイティブなアプリ開発のポイント
AWSで実現するクラウドネイティブなアプリ開発のポイントAWSで実現するクラウドネイティブなアプリ開発のポイント
AWSで実現するクラウドネイティブなアプリ開発のポイントKeisuke Nishitani
 
Yahoo! JAPANが考えるテクノロジーとITエンジニアの未来 #devsumi
Yahoo! JAPANが考えるテクノロジーとITエンジニアの未来 #devsumiYahoo! JAPANが考えるテクノロジーとITエンジニアの未来 #devsumi
Yahoo! JAPANが考えるテクノロジーとITエンジニアの未来 #devsumiYahoo!デベロッパーネットワーク
 
STAC 2015 自動家は見た ~自動化の現場の真実~ SIDE:マネージャ
STAC 2015 自動家は見た~自動化の現場の真実~ SIDE:マネージャSTAC 2015 自動家は見た~自動化の現場の真実~ SIDE:マネージャ
STAC 2015 自動家は見た ~自動化の現場の真実~ SIDE:マネージャNoriyuki Mizuno
 
ブロックチェーン技術の基本と応用の可能性
ブロックチェーン技術の基本と応用の可能性ブロックチェーン技術の基本と応用の可能性
ブロックチェーン技術の基本と応用の可能性Kenji Saito
 
Docker基礎+docker0.9, 0.10概要
Docker基礎+docker0.9, 0.10概要Docker基礎+docker0.9, 0.10概要
Docker基礎+docker0.9, 0.10概要Kazuyuki Mori
 
「自動家は見た! 〜自動化の現場の真実〜」-システムテスト自動化カンファレンス2015「.reviewrc(おいしが)」発表枠 #stac2015
「自動家は見た! 〜自動化の現場の真実〜」-システムテスト自動化カンファレンス2015「.reviewrc(おいしが)」発表枠 #stac2015 「自動家は見た! 〜自動化の現場の真実〜」-システムテスト自動化カンファレンス2015「.reviewrc(おいしが)」発表枠 #stac2015
「自動家は見た! 〜自動化の現場の真実〜」-システムテスト自動化カンファレンス2015「.reviewrc(おいしが)」発表枠 #stac2015 Kazuhito Miura
 
MySQL 5.7の罠があなたを狙っている
MySQL 5.7の罠があなたを狙っているMySQL 5.7の罠があなたを狙っている
MySQL 5.7の罠があなたを狙っているyoku0825
 
無償のVisual studioで作るクライアント アプリ
無償のVisual studioで作るクライアント アプリ無償のVisual studioで作るクライアント アプリ
無償のVisual studioで作るクライアント アプリYasuhiko Yamamoto
 
UWP アプリを JavaScript で作る 3つの方法
UWP アプリを JavaScript で作る 3つの方法UWP アプリを JavaScript で作る 3つの方法
UWP アプリを JavaScript で作る 3つの方法Yasuhiko Yamamoto
 
IT系女子集まれ!女子部カンファレンスvo.1 用スライド資料
IT系女子集まれ!女子部カンファレンスvo.1 用スライド資料IT系女子集まれ!女子部カンファレンスvo.1 用スライド資料
IT系女子集まれ!女子部カンファレンスvo.1 用スライド資料Kazumi IWANAGA
 
Selenium boot campの紹介
Selenium boot campの紹介Selenium boot campの紹介
Selenium boot campの紹介Nozomi Ito
 
大規模BIクラウドWebサービスの裏側
大規模BIクラウドWebサービスの裏側 大規模BIクラウドWebサービスの裏側
大規模BIクラウドWebサービスの裏側 Mitch Okamoto
 
From Hacker to Programmer (w/ Webpack, Babel and React)
From Hacker to Programmer (w/ Webpack, Babel and React)From Hacker to Programmer (w/ Webpack, Babel and React)
From Hacker to Programmer (w/ Webpack, Babel and React)Joseph Chiang
 

Andere mochten auch (20)

現場から変えた“サービスの作り方” -何を作るのかではなくなぜ作るのか- #devsumi
現場から変えた“サービスの作り方” -何を作るのかではなくなぜ作るのか- #devsumi現場から変えた“サービスの作り方” -何を作るのかではなくなぜ作るのか- #devsumi
現場から変えた“サービスの作り方” -何を作るのかではなくなぜ作るのか- #devsumi
 
HTTPとサーバ技術の最新動向
HTTPとサーバ技術の最新動向HTTPとサーバ技術の最新動向
HTTPとサーバ技術の最新動向
 
リアクティブ・アーキテクチャ ~大規模サービスにおける必要性と課題〜 #devsumi
リアクティブ・アーキテクチャ ~大規模サービスにおける必要性と課題〜 #devsumiリアクティブ・アーキテクチャ ~大規模サービスにおける必要性と課題〜 #devsumi
リアクティブ・アーキテクチャ ~大規模サービスにおける必要性と課題〜 #devsumi
 
デブサミ2016 | 日本発IoTプラットフォームビジネスへの挑戦 SORACOM 立ち上げ格闘記
デブサミ2016 | 日本発IoTプラットフォームビジネスへの挑戦 SORACOM 立ち上げ格闘記デブサミ2016 | 日本発IoTプラットフォームビジネスへの挑戦 SORACOM 立ち上げ格闘記
デブサミ2016 | 日本発IoTプラットフォームビジネスへの挑戦 SORACOM 立ち上げ格闘記
 
How to develop a huge Single Page Application
How to develop a huge Single Page ApplicationHow to develop a huge Single Page Application
How to develop a huge Single Page Application
 
マイクロサービス時代の動画配信基Ruby×go=∞
マイクロサービス時代の動画配信基Ruby×go=∞マイクロサービス時代の動画配信基Ruby×go=∞
マイクロサービス時代の動画配信基Ruby×go=∞
 
AWSで実現するクラウドネイティブなアプリ開発のポイント
AWSで実現するクラウドネイティブなアプリ開発のポイントAWSで実現するクラウドネイティブなアプリ開発のポイント
AWSで実現するクラウドネイティブなアプリ開発のポイント
 
Yahoo! JAPANが考えるテクノロジーとITエンジニアの未来 #devsumi
Yahoo! JAPANが考えるテクノロジーとITエンジニアの未来 #devsumiYahoo! JAPANが考えるテクノロジーとITエンジニアの未来 #devsumi
Yahoo! JAPANが考えるテクノロジーとITエンジニアの未来 #devsumi
 
Effective ES6
Effective ES6Effective ES6
Effective ES6
 
STAC 2015 自動家は見た ~自動化の現場の真実~ SIDE:マネージャ
STAC 2015 自動家は見た~自動化の現場の真実~ SIDE:マネージャSTAC 2015 自動家は見た~自動化の現場の真実~ SIDE:マネージャ
STAC 2015 自動家は見た ~自動化の現場の真実~ SIDE:マネージャ
 
ブロックチェーン技術の基本と応用の可能性
ブロックチェーン技術の基本と応用の可能性ブロックチェーン技術の基本と応用の可能性
ブロックチェーン技術の基本と応用の可能性
 
Docker基礎+docker0.9, 0.10概要
Docker基礎+docker0.9, 0.10概要Docker基礎+docker0.9, 0.10概要
Docker基礎+docker0.9, 0.10概要
 
「自動家は見た! 〜自動化の現場の真実〜」-システムテスト自動化カンファレンス2015「.reviewrc(おいしが)」発表枠 #stac2015
「自動家は見た! 〜自動化の現場の真実〜」-システムテスト自動化カンファレンス2015「.reviewrc(おいしが)」発表枠 #stac2015 「自動家は見た! 〜自動化の現場の真実〜」-システムテスト自動化カンファレンス2015「.reviewrc(おいしが)」発表枠 #stac2015
「自動家は見た! 〜自動化の現場の真実〜」-システムテスト自動化カンファレンス2015「.reviewrc(おいしが)」発表枠 #stac2015
 
MySQL 5.7の罠があなたを狙っている
MySQL 5.7の罠があなたを狙っているMySQL 5.7の罠があなたを狙っている
MySQL 5.7の罠があなたを狙っている
 
無償のVisual studioで作るクライアント アプリ
無償のVisual studioで作るクライアント アプリ無償のVisual studioで作るクライアント アプリ
無償のVisual studioで作るクライアント アプリ
 
UWP アプリを JavaScript で作る 3つの方法
UWP アプリを JavaScript で作る 3つの方法UWP アプリを JavaScript で作る 3つの方法
UWP アプリを JavaScript で作る 3つの方法
 
IT系女子集まれ!女子部カンファレンスvo.1 用スライド資料
IT系女子集まれ!女子部カンファレンスvo.1 用スライド資料IT系女子集まれ!女子部カンファレンスvo.1 用スライド資料
IT系女子集まれ!女子部カンファレンスvo.1 用スライド資料
 
Selenium boot campの紹介
Selenium boot campの紹介Selenium boot campの紹介
Selenium boot campの紹介
 
大規模BIクラウドWebサービスの裏側
大規模BIクラウドWebサービスの裏側 大規模BIクラウドWebサービスの裏側
大規模BIクラウドWebサービスの裏側
 
From Hacker to Programmer (w/ Webpack, Babel and React)
From Hacker to Programmer (w/ Webpack, Babel and React)From Hacker to Programmer (w/ Webpack, Babel and React)
From Hacker to Programmer (w/ Webpack, Babel and React)
 

Mehr von dynamis

HTTP and 5G (fixed1)
HTTP and 5G (fixed1)HTTP and 5G (fixed1)
HTTP and 5G (fixed1)dynamis
 
HTTP and 5G
HTTP and 5GHTTP and 5G
HTTP and 5Gdynamis
 
HTTP and 5G partial draft
HTTP and 5G partial draftHTTP and 5G partial draft
HTTP and 5G partial draftdynamis
 
Web App Platform Strategy
Web App Platform StrategyWeb App Platform Strategy
Web App Platform Strategydynamis
 
HTML5 & Renesas RZ/G
HTML5 & Renesas RZ/GHTML5 & Renesas RZ/G
HTML5 & Renesas RZ/Gdynamis
 
Life of html5 (osaka)
Life of html5 (osaka)Life of html5 (osaka)
Life of html5 (osaka)dynamis
 
Web updates 2017
Web updates 2017Web updates 2017
Web updates 2017dynamis
 
Life of HTML5
Life of HTML5Life of HTML5
Life of HTML5dynamis
 
Browsers in IoT Era
Browsers in IoT EraBrowsers in IoT Era
Browsers in IoT Eradynamis
 
New Norm of HTML5
New Norm of HTML5New Norm of HTML5
New Norm of HTML5dynamis
 
Edge Web Technologies and Browser Vendors (Updated on 2016/09/06)
Edge Web Technologies and Browser Vendors (Updated on 2016/09/06)Edge Web Technologies and Browser Vendors (Updated on 2016/09/06)
Edge Web Technologies and Browser Vendors (Updated on 2016/09/06)dynamis
 
OSC2016.Enterprise Lightnig Talk
OSC2016.Enterprise Lightnig TalkOSC2016.Enterprise Lightnig Talk
OSC2016.Enterprise Lightnig Talkdynamis
 
Demo for Gecko Embedded
Demo for Gecko EmbeddedDemo for Gecko Embedded
Demo for Gecko Embeddeddynamis
 
Project Gecko Embedded
Project Gecko EmbeddedProject Gecko Embedded
Project Gecko Embeddeddynamis
 
The New Norm of The Web
The New Norm of The WebThe New Norm of The Web
The New Norm of The Webdynamis
 
Web Tech & Architecture
Web Tech & ArchitectureWeb Tech & Architecture
Web Tech & Architecturedynamis
 
Data Privacy meeting
Data Privacy meetingData Privacy meeting
Data Privacy meetingdynamis
 
Firefox OS TV
Firefox OS TVFirefox OS TV
Firefox OS TVdynamis
 
Inspect Hack Ignite!
Inspect Hack Ignite!Inspect Hack Ignite!
Inspect Hack Ignite!dynamis
 
Years with JavaScript.Next
Years with JavaScript.NextYears with JavaScript.Next
Years with JavaScript.Nextdynamis
 

Mehr von dynamis (20)

HTTP and 5G (fixed1)
HTTP and 5G (fixed1)HTTP and 5G (fixed1)
HTTP and 5G (fixed1)
 
HTTP and 5G
HTTP and 5GHTTP and 5G
HTTP and 5G
 
HTTP and 5G partial draft
HTTP and 5G partial draftHTTP and 5G partial draft
HTTP and 5G partial draft
 
Web App Platform Strategy
Web App Platform StrategyWeb App Platform Strategy
Web App Platform Strategy
 
HTML5 & Renesas RZ/G
HTML5 & Renesas RZ/GHTML5 & Renesas RZ/G
HTML5 & Renesas RZ/G
 
Life of html5 (osaka)
Life of html5 (osaka)Life of html5 (osaka)
Life of html5 (osaka)
 
Web updates 2017
Web updates 2017Web updates 2017
Web updates 2017
 
Life of HTML5
Life of HTML5Life of HTML5
Life of HTML5
 
Browsers in IoT Era
Browsers in IoT EraBrowsers in IoT Era
Browsers in IoT Era
 
New Norm of HTML5
New Norm of HTML5New Norm of HTML5
New Norm of HTML5
 
Edge Web Technologies and Browser Vendors (Updated on 2016/09/06)
Edge Web Technologies and Browser Vendors (Updated on 2016/09/06)Edge Web Technologies and Browser Vendors (Updated on 2016/09/06)
Edge Web Technologies and Browser Vendors (Updated on 2016/09/06)
 
OSC2016.Enterprise Lightnig Talk
OSC2016.Enterprise Lightnig TalkOSC2016.Enterprise Lightnig Talk
OSC2016.Enterprise Lightnig Talk
 
Demo for Gecko Embedded
Demo for Gecko EmbeddedDemo for Gecko Embedded
Demo for Gecko Embedded
 
Project Gecko Embedded
Project Gecko EmbeddedProject Gecko Embedded
Project Gecko Embedded
 
The New Norm of The Web
The New Norm of The WebThe New Norm of The Web
The New Norm of The Web
 
Web Tech & Architecture
Web Tech & ArchitectureWeb Tech & Architecture
Web Tech & Architecture
 
Data Privacy meeting
Data Privacy meetingData Privacy meeting
Data Privacy meeting
 
Firefox OS TV
Firefox OS TVFirefox OS TV
Firefox OS TV
 
Inspect Hack Ignite!
Inspect Hack Ignite!Inspect Hack Ignite!
Inspect Hack Ignite!
 
Years with JavaScript.Next
Years with JavaScript.NextYears with JavaScript.Next
Years with JavaScript.Next
 

Java script.trend(spec)

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18. var gulp = require("gulp"); var babel = require("gulp-babel"); var concat = require("gulp-concat"); gulp.task("default", function () { return gulp.src("src/**/*.js") .pipe(babel()) .pipe(concat("all.js")) .pipe(gulp.dest("dist")); }); $ npm install gulp-babel babel-preset-es2015 gulp-concat gulp-sourcemaps --save-dev $ echo '{ "presets": ["es2015"] }' > .babelrc
  • 19. var gulp = require("gulp"); var sourcemaps = require("gulp-sourcemaps"); var babel = require("gulp-babel"); var concat = require("gulp-concat"); gulp.task("default", function () { return gulp.src("src/**/*.js") .pipe(sourcemaps.init()) .pipe(babel()) .pipe(concat("all.js")) .pipe(sourcemaps.write(".")) .pipe(gulp.dest("dist")); });
  • 20. import gulp from "gulp" import babel from "gulp-babel" import concat from "gulp-concat" gulp.task("default", () => { return gulp.src("src/**/*.js") .pipe(babel()) .pipe(concat("all.js")) .pipe(gulp.dest("dist")); }); // これくらいのサンプルじゃ嬉しくも何ともないけど... $ npm install babel-core babel-preset-es2015 gulp-babel gulp-concat --save-dev $ echo '{ "presets": ["es2015"] }' > .babelrc
  • 21.
  • 22.
  • 23.
  • 24. var color = "Red" var browsers = { fx: "Firefox", op: "Opera" } var secret = `${color} Panda is ${browsers.fx}! ${color} Browser is ${browsers.op}!` // ECMAScript 5th // 文字列はひたすら + 演算子で連結 secret = color + " Panda is " + browsers.fx + "!n" + color + " Browser is " + browsers.op + "!"
  • 25. var tag = `<a href="...">Can't stop using ES6!</a>` var re = `"[^"]*"|'[^']*'` var list = `<ul> <li>firefox <li>red panda <li>lesser panda <li>petit panda </li>`
  • 26. function panda(s = "lesser") { return `${s} panda` } panda() === "lesser panda" panda("red") === "red panda" // ECMAScript 5th function panda(s) { if (s === undefined) { s = "lesser" } return s + "panda" }
  • 27. function log(x, y, ...rest) { console.log(x, y, rest) } log(1, 2, 3, 4, 5) // 1 2 [3, 4, 5] log(0) // 0 undefinded [] // ECMAScript 5th function log(x, y) { var a = Array.prototype.slice.call(arguments, 2) console.log (x, y, a) };
  • 28. var array = [ "hello", true, 7 ] var params = [ 1, 2, ...array ] sum(1, 2, ...params) === 9 var str = "fox" var chars = [ ...str ] // [ "f", "o", "x" ] // ECMAScript 5th var array = [ "hello", true, 7 ] var params = [ 1, 2 ].concat(array) sum.apply(null, [ 1, 2 ].concat(params)) === 9 var str = "fox" var chars = str.split("") // [ "f", "o", "x" ]
  • 29. [a, b] = [b, a] var [c,d] = (function f() { return [1,2]; })() var [e,,[x,y],z=100] =[3,4,[10,20]]
  • 30. var fx={ name:"Firefox", vendor:"Mozilla", ver:26 } var ch={ name:"Chrome", vendor:"Google", ver:31 } var browsers={ firefox: fx, chrome: ch } var { name: n, ver: v } = fx // -> n="Firefox", v=26 (function ({ vendor: ven }) { console.log(ven) })(fx); // -> "Mozilla"
  • 31.
  • 32.
  • 33. class Animal { constructor(name) { this.name = name; this.hungry = true; } eat() { this.hungry = false; } run() { this.hungry = trye; } }
  • 34. class LesserPanda extends Animal { constructor(name, tail) { super(name); this.tail = tail; } }
  • 35. function Animal(name) { this.name = name; this.hungry = true; } Animal.prototype.eat = function() { this.hungry = false; } Animal.prototype.run = function() { this.hungry = true; }
  • 36. function LesserPanda(name, tail) { Animal.call(this, name); this.tail = tail; } LesserPanda.prototype = Object.create(Animal.prototype); LesserPanda.prototype.constructor = LesserPanda;
  • 37.
  • 38.
  • 39. { let a = 1, b = 10; let (a = 100, c = 300) console.log(a); // -> 100 for (let a=0; a<3; a++) { console.log(a+b); // -> 10, 11, 12 } console.log(a); // -> 1 } console.log(a); // × ReferenceError: a is not defined
  • 40. var browser = "Edge"; { // block scope let browser = "Firefox"; } browser === "Edge"; // ECMAScript 5th // 変数のスコープは関数スコープしか存在しなかった var browser = "Edge"; (function(){ // function scope hack... var browser = "Firefox"; })() browser === "Edge";
  • 41. { function browser() { return "Edge"; } browser() === "Edge"; // true { function browser() { return "Firefox"; } browser() === "Firefox"; // true } browser() === "Edge"; // true }
  • 42. const browser = "Firefox"; const browser = "Internet Explorer"; browser = "Chrome"; console.log(browser); // -> "Firefox"
  • 43.
  • 44. [1,2,3].map(x => x * x); setInterval(() => { alert("HEY! 提督ぅー!alertしてもイイけどサー、時間と場所をわきまえな ヨー!"); }, Math.random()*10*1000); var factorial=((f=n=>n>1 ?n*f(n-1):1)=>(f))(); factorial(10); // 3628800
  • 45. odds = evens.map(v => v + 1) pairs = evens.map(v => ({ even: v, odd: v + 1 })) nums = evens.map((v, i) => v + i) halfs = evens.map(v => { return v / 2 }) // ECMAScript 5th odds = evens.map(function (v) { return v + 1; }) pairs = evens.map(function (v) { return { even: v, odd: v + 1 } }) nums = evens.map(function (v, i) { return v + i; })
  • 46. function Person(){ this.age = 0 setInterval(() => { this.age++ // this は Person オブジェクト }, 1000) } var p = new Person()
  • 47.
  • 48.
  • 49. function doFirstAsync(fileurl) { return new Promise(function(resolve,reject) { $.ajax({ src: fileurl, dataType: "json" }).done(function(data){ resolve(data); }); } } async function task(param) { await new Promise((resolve) => { setTimeout(resolve,1000); }); let first = await doFirstAsync(".../first.json") let second = await doSecondAsync(".../second.json") let third = await doThirdAsync(".../third.json") // ...取得したデータを使って色々処理 };
  • 50.
  • 52. var set = new Set() // 集合に追加・確認・削除 set.add("Firefox") set.add("Thunderbird") set.add(+0);
 set.add(NaN) set.has("Firefox")  // -> true set.has("Sunbird")  // -> false set.delete("Firefox") set.has("Firefox")  // -> false // -0 と +0 は同値と見なす (初期実装と異なる), NaN は自身と一致 // 初期の仕様・実装では -0 と +0 は区別されていたが変更された set.has(-0)   // -> true set.has(NaN)   // -> true ここが === での比較と異なるので注意
  • 53. var map = new Map() var str = "Mozilla", obj = {}, func = function(){} // Map に値を格納 map.set(str, "Firefox") map.set(obj, "Thunderbird") map.set(func, "Japan") // キーに対応する値を取得 map.get(str)    // -> "Firefox" map.get(obj)    // -> "Thunderbird" map.get(func)  // -> "Japan" // 設定したキーと引数の比較は == ではないので注意 map.get("Mozilla")  // -> "Firefox" map.get({})          // -> undefined map.get(function(){}) // -> undefined
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 62. asm.js 導入直後で C の 2 倍遅い程度、今では数割程度の違い (Java や C# の処理速度と同程度以上の水準に)
  • 63.
  • 64.
  • 65.
  • 66.