サイトアイコン 上尾市のWEBプログラマーによるブログ

「はじめてのフロントエンド開発」の感想・備忘録

書籍「はじめてのフロントエンド開発」のまとめ。

点数

58点

感想

JavaScriptの歴史、SPAのしくみ、ES2015とTypeScriptの解説など、前半は参考になった。

だが、後半の各フレームワークを扱ったサンプルはわかりづらく、途中で読むのをやめた。

サーバサイドレンダリング

SPAではサーバからは空の要素が返されるため、表示速度とクローラ対策に問題がある。

GoogleボットはJavaScriptでレンダリングしたコンテンツを読み取ってくれるが、SNSのクローラ(TwitterやFacebookのシェア時のサムネイル取得など)は読み取ってくれない。

Vue.jsではvue-server-rendererが用意されている。
nuxt.jsにはvue-server-renderer, vue-router, vuexなどが含まれている。

MVVM=Model View ViewModel

Vue.jsの場合

package.jsonでのバージョン指定

TypeScript

インターフェース

function hoge(person: {name: string}) {
  console.log(person.name);
}

のように、TypeScriptでは引数のオブジェクトのプロパティの型を指定することができる。
しかし、このpersonオブジェクトを他でも使う場合、毎回型注釈を記述するのは現実的ではない。

以下のように、インターフェースとして独自の型を定義するとよい。

interface PersonInterface {
  name: string;
} 
function hoge(person: PersonInterface) {
  console.log(person.name);
}

ジェネリクス

関数、クラス、インターフェースをさまざまな型で再利用できるようにする仕組み。

以下の2つの関数は型が異なるだけである。

function hoge(arg: number): number {
  return arg;
}
function hoge2(arg: string): string {
  return arg;
}

ジェネリクスを使って以下のように定義することができる。
Tが型変数である。

function hoge<T>(arg: T): T {
  return arg;
}
// この関数を使う時は以下のように型を指定する。
hoge<number>(100);
hoge<string>("hello");
モバイルバージョンを終了