ためすう
export を使ってみる ( JavaScript )
2019-11-11やったこと
export を使ってみます。
調査
エクスポートされたモジュールは、宣言のあるなしにかかわらず strict モードで動作します。
sample.html
<script type="module">
import greet from './my-module.js';
console.log('start');
console.log(greet());
</script>
my-module.js
export default function greet(x) {
return 'heloooo!';
}
sample.html をローカルで開く (コンソール出力)
[Log] start (sample.html, line 4)
[Log] heloooo! (sample.html, line 5)
※ Safari で CORS を無効にするとローカルのブラウザで確認できます。
参考
アロー関数を使ってみる ( JavaScript )
2019-11-11やったこと
アロー関数を使ってみます。
調査
アロー関数式は、より短く記述できる、通常の function 式の代替構文です。
Console
var f = () => 'return value';
undefined
f()
"return value"
var f2 = (a, b) => a + b;
undefined
f2(100, 50)
150
var f3 = (a, b) => { return a * b }
undefined
f3(20, 4)
80
参考
webpack を使ってみる
2019-11-10やったこと
webpack を使ってみます。
React を webpack を使って起動します。
確認環境
$ node --version
v10.16.0
$ npm --version
6.9.0
調査
環境準備
必要なパッケージをインストールしていきます。
$ echo "{}" > package.json
$ npm install --save-dev webpack babel-loader babel-core babel-preset-react
$ npm install --save react react-dom
.babelrc の作成
$ touch .babelrc
{
'presets': [
'@babel/preset-env', '@babel/preset-react'
]
}
webpack.config.js の作成
$ toucn webpack.config.js
module.exports = {
entry: './entry.js',
output: {
filename: 'output.js'
},
module: {
rules: [
{
loader: 'babel-loader',
exclude: /node_modules/,
test: /\.js$/,
}
]
}
}
js ファイルの作成
entry.js
import React from 'react';
import ReactDOM from 'react-dom';
import Hello from './Hello';
ReactDOM.render(
<Hello />,
document.getElementById('root')
);
Hello.js
import React from 'react';
export default function Hello() {
return <h1>Hello!!!</h1>;
}
ビルド
$ ./node_modules/.bin/webpack --config webpack.config.js
動作確認
index.html
<div id="root"></div>
<script src="/path/to/output.js"></script>
/path/to
はご自身のパスに変更してください。
参考
Babel を使ってみる
2019-11-10やったこと
Babel を使ってみます。
React で JSX で記述されているコードを JavaScript に変換します。
確認環境
$ node --version
v10.16.0
$ npm --version
6.9.0
調査
JSX
JSXは、JavaScriptの構文に対する拡張である
環境準備
$ echo "{}" > package.json
$ npm install --save-dev babel-cli babel-preset-react
ファイル作成
sample.js
ReactDOM.render(
<ul>
<li>aaa</li>
<li>bbb</li>
</ul>,
document.getElementById('root')
)
変換
$ ./node_modules/.bin/babel --presets=react sample.js -d out
sample.js -> out/sample.js
out ディレクトリ以下に出力されます
参考
JavaScript で参照渡し Object.assign()
2019-11-10やったこと
JavaScript の Object.assign()
を使ってみます。
調査
参照渡し (意図せず値が変わってしまう)
Console
o = {a: 100, b: 200}
{a: 100, b: 200}
var o2 = o
undefined
o["a"] = 555
555
o2
{a: 555, b: 200}
Object.assign() を利用する場合
Console
o = {a: 100, b: 200}
{a: 100, b: 200}
var o2 = o
undefined
var o2 = Object.assign({}, o)
undefined
o["a"] = 555
555
o2
{a: 100, b: 200}
参考
React をインストールして立ち上げてみる
2019-11-10やったこと
React を Mac にインストールして、起動してみます。
確認環境
$ node -v
v10.16.0
$ create-react-app --version
2.1.3
調査
$ create-react-app sample
サーバー起動
$ cd sample
$ yarn start
http://localhost:3000/
にアクセスするとページが見れます。
JavaScript でスプレッド構文を使う
2019-11-09やったこと
スプレッド構文
を使ってみます。
調査
var t = ["x", "y", "z"]
function concat(a1, a2, a3) { return a1 + a2 + a3; }
console.log(concat(...t))
"xyz"
参考
npm install を使ってみる
2019-11-07やったこと
npm install
を使ってみます。
確認環境
$ npm --version
6.12.1
調査
グローバルインストール
$ npm install -g @babel/core @babel/cli
~/.npm-global/lib/node_modules/
へインストールされます。
ローカルインストール
$ npm install @babel/core @babel/cli --save-dev
–save-dev: Package will appear in your devDependencies.
package.json の devDependencies
に依存します。
/path/to/node_modules
へインストールされます。
参考
$ npm help install
Vuex を使ってみる
2019-11-05やったこと
Vuex を使ってみます。
確認環境
Console Log
Vue.version
2.6.10
Vuex.version
3.1.1
調査
構成要素
- ステート (state)
- ゲッター (getter)
- ミューテーション (mutation)
- アクション (action)
処理は下記の流れで行われます。
アクション -> ミューテーション -> ステート -> ゲッター
実装例
sample.vue
<template>
<p>template</p>
</template>
<script>
/* eslint-disable */
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const store = new Vuex.Store({
// ステート
state: {
count: 1
},
// ミューテーション
mutations: {
double (state) {
state.count *= 2
},
minus (state) {
state.count *= -1
}
},
// ゲッター
getters: {
mycount (state) {
return state.count
}
},
// アクション
actions: {
minusAction (ctx) {
// ミューテーション呼び出し
ctx.commit('double')
ctx.commit('minus')
}
}
})
console.log('init')
console.log(store.getters.mycount)
store.dispatch('minusAction')
console.log(store.getters.mycount)
export default {
// エラーが出ないように記述
data () {
return {}
}
}
/* eslint-enable */
</script>
起動
$ vue serve sample.vue --open
出力結果
init
1
-2
参考
Vue.js の単一コンポーネント
2019-11-04やったこと
Vue.js で component を指定するとき html の id 属性を利用して指定します。
確認環境
$ vue info
Environment Info:
System:
OS: macOS High Sierra 10.13.6
CPU: (8) x64 Intel(R) Core(TM) i7-4870HQ CPU @ 2.50GHz
Binaries:
Node: 10.16.0 - /usr/local/bin/node
Yarn: 1.19.1 - /usr/local/bin/yarn
npm: 6.12.1 - ~/.npm-global/bin/npm
Browsers:
Chrome: 78.0.3904.70
Firefox: 62.0
Safari: 13.0.3
npmGlobalPackages:
@vue/cli: 4.0.5
調査
構成要素
template
HTML でコンポーネントを定義します。
script
UIコンポーネントの振る舞いを制御します。
css
コンポーネントの装飾をします。
実装準備
$ npm install -g @vue/cli-service-global
実装例
sample.vue
<template>
<p class="message">{{ msg }}</p>
</template>
<script>
export default {
data () {
return { msg: 'Hello' }
}
}
</script>
<style scoped>
.message { color: red; }
</style>
起動
$ vue serve sample.vue --open
css は head タグの中に挿入されます。