Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
いまどきの JavaScript入門 - ES6/TypeScript/Vue.js
Search
たにぐちまこと(ともすた)
May 06, 2020
Technology
900
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
いまどきの JavaScript入門 - ES6/TypeScript/Vue.js
たにぐちまこと(ともすた)
May 06, 2020
More Decks by たにぐちまこと(ともすた)
See All by たにぐちまこと(ともすた)
Flexboxを学ぼう - HTML/CSS入門
tomostajp
0
290
Other Decks in Technology
See All in Technology
自作バイナリを動かす「入口」8選
puhitaku
2
1.3k
Running Kotlin + Quarkus with Lambda
nealle
1
3.7k
AIにシークレットを見せない、WSL2で安全な開発環境
yazm
0
300
ブラウザとサーバーから考えるAI時代のフロントエンド監視
shogo4131
3
940
パッチ更新でterraform initが落ちた日
grimoh
1
140
⾮構造化データを価値に変える AI エージェント基盤とその組織
ivry_presentationmaterials
0
190
USB PDを使ってスマホを労わりたい
raspython3
0
180
10年後、Engineering 行為を剥奪されるとして、わたしたちは、どう、何を創ればいいだろうか。 / If Engineering Is Taken Away in 10 Years, How and What Should We Create?
bitkey
PRO
1
190
Classmethod Company Deck
satoshi7
1
690
Browser Spec: Testing Hotwire with Ruby
takahashim
1
120
Local CI × GitHub Actions
gogutan
2
200
無理せず続ける、子育てエンジニアの学び
codmoninc
PRO
0
870
Featured
See All Featured
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.6k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.2k
The browser strikes back
jonoalderson
0
1.8k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
46k
YesSQL, Process and Tooling at Scale
rocio
174
15k
We Have a Design System, Now What?
morganepeng
55
8.4k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Faster Mobile Websites
deanohume
310
32k
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.2k
HDC tutorial
michielstock
2
960
Transcript
None
谷口 允 たにぐち まこと @seltzer 01w.me/tomo
None
None
None
None
None
ウェブのしくみ HTML CSS
ウェブのしくみ …
サーバーサイド言語 PHP Ruby
サーバーサイド言語 PHP Ruby いちいち通信が必要
JavaScript JavaScript
JavaScriptの特徴 •通信がなくても動作できるので早い •時間・マウスの動きなど クリック以外の動作に対応できる •データの共有や保存などはできない
Ajax 非同期通信
Ajaxとは Synchronous 同期通信 Asynchronous 非同期通信
None
None
None
None
拡がるJavaScript
拡がるJavaScript
拡がるJavaScript
準備するもの
JavaScriptをはじめよう
キホンのプログラム let day = prompt('何日の秒数を計算しますか?'); document.write(60*60*24*day);
キホンのプログラム let day = prompt('何日の秒数を計算しますか?'); メソッド(Method) どうする? パラメーター(Parameter) なにを? どのように?
キホンのプログラム let day = prompt('何日の秒数を計算しますか?'); 変数 戻り値・返り値
キホンのプログラム document.write(60*60*24*day); オブジェクト ~が メソッド どうする
キホンのプログラム let day = window.prompt('何日の秒数… windowオブジェクト
犬でおぼえる オブジェクト指向
フル版はこちらで
メソッド(Method) 命令・お願い
パラメーター(Parameter) 細かい指定
戻り値 戻ってきたボール
プロパティ(Property) 性質・特性
インスタンス(Instance) 実体
オブジェクト(Object) 物・概念
クラス(Class) 分類
応用JavaScript <button id="buy">決済する</button> <script> const btn = document.getElementById('buy'); btn.addEventListener('click', ()
=> { btn.disabled = true; }); </script>
イベントドリブン ユーザーの操作など(イベント) に応じてプログラムが動作
ECMAScript
ウェブブラウザーの誕生
Internet Explorerの登場
スクリプト技術の競合 JavaScript VBScript
スクリプトの競合 JavaScript VBScript ブラウザーの開発戦争が勃発
国際標準規格の登場 ECMAScript
標準規格って? A4
標準規格って? A4 規格に沿うからメーカー問わず
ECMAScript準拠言語 ECMAScript
None
<div id="timer"></div> <script> function timer() { var now = new
Date(); document.getElementById('timer').innerHTML = now.getSeconds() + '秒'; } var timerID = setInterval(timer, 500); </script> <div id="timer"></div> <script> const timer = () => { let now = new Date(); document.getElementById('timer').innerHTML = `${now.getSeconds()}秒'; } let timerID = setInterval(timer, 500); </script>
古いブラウザーで動作しない… …
トランスパイル
トランスパイルとは <div id="timer"></div> <script> function timer() { var now =
new Date(); document.getElementById('timer').innerHTML = now.getSeconds() + '秒'; } var timerID = setInterval(timer, 500); </script> <div id="timer"></div> <script> const timer = () => { let now = new Date(); document.getElementById('timer').innerHTML
トランスパイルとは <div id="timer"></div> <script> function timer() { var now =
new Date(); document.getElementById('timer').innerHTML = now.getSeconds() + '秒'; } var timerID = setInterval(timer, 500); </script> <div id="timer"></div> <script> const timer = () => { let now = new Date(); document.getElementById('timer').innerHTML
トランスパイルとは <div id="timer"></div> <script> function timer() { var now =
new Date(); document.getElementById('timer').innerHTML = now.getSeconds() + '秒'; } var timerID = setInterval(timer, 500); </script> <div id="timer"></div> <script> const timer = () => { let now = new Date(); document.getElementById('timer').innerHTML 古い書き方に巻き戻す
トランスパイルのメリット •プログラマーは便利な書き方で書ける •利用者は古い環境でも利用できる •環境のことを気にせずに、最新機能を利用できる
トランスパイラー
トランスパイラー
TypeScriptとは •Microsoftが開発したプログラミング言語 •JavaScriptと完全互換性 •TypeScript→JavaScriptへの変換の際に トランスパイルを設定可能
「型」とは let x = 1; let y = 2; x
= '文字列を代入します'; console.log(x * y); // NaN
「型」とは let x = 1; let y = 2; x
= '文字列を代入します'; console.log(x * y); // NaN 数字 文字
「型」とは let x = 1; let y = 2; x
= '文字列を代入します'; console.log(x * y); // NaN let x: number = 1; let y: number = 2; x = '文字列を代入します'; console.log(x * y); // NaN ここでエラー
TypeScriptのメリット •厳密な型チェックで変数の誤用を防ぐ •コンパイルエラーで、実行時のトラブルを防ぐ •チーム開発時の曖昧な仕様によるトラブルを防ぐ
ライブラリー
None
JavaScriptライブラリー
JavaScriptライブラリー
jQueryが得意なこと •画面内のテキストフィールドなどを指定しやすい •柔軟なイベント定義 •作業手順を指定できる(メソッドチェーン) •豊富なプラグイン
jQueryが苦手なこと •ページ内に新しい要素を登場させる •複数の要素を連携させる •非同期通信を利用したデータ操作
新たなJavaScriptプロダクト
新たなJavaScriptプロダクト
Reactの特徴 •大規模サイトでも、しっかりした設計で開発 •アプリ開発などにも活用可能 •習得に時間がかかり、若干難しい
Vue.jsの特徴 •HTMLに簡単に組み込んで利用可能 •コードを極力書かずに開発が可能 •大規模な開発には向かない
None
要素の生成 <div id="app"> {{ message }} </div> <script> let app
= new Vue({ el: "#app", data: { message: "Vue.jsを勉強中です" } }); </script> Vue.jsを勉強中です
イベント制御 <div id="app"> <button @click="checkClick" :disabled="clicked">決済する </button> </div> <script> var
app = new Vue({ el: "#app", data: { clicked: false }, methods: { checkClick: function() { this.clicked = true } } }) </script>
フォームの制御 <div id="app"> <clock></clock> <clock style="color: blue">現在時刻</clock> </div> <script> Vue.component('clock',
{ data: function () { return { time: '' } }, mounted: function () { var timerID = setInterval(this.refresh, 500); }, methods: { refresh: function () { var now = new Date(); this.time = `${now.getHours()}:${now.getMin utes()}:${now.getSeconds()}` } }, ... template: '<div :style=""><h2><slot>時計 </slot></h2>{{ time }}</div>' }) var app = new Vue({ el: "#app" }) </script>
Vue.jsのこれから
Vue 3の特徴 •大規模な開発が可能になるように •Vue 2以前の不満点を解消 •TypeScriptとの相性の向上
JSを学習しよう
JSを学習するために •HTML/CSSはしっかりマスターしよう •良いエディター(Visual Studio Code)を使おう •サーバーサイドも(少し)理解しよう
None
None