Skip to content

Instantly share code, notes, and snippets.

@rettuce
Created October 20, 2017 16:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rettuce/9d5df94c4bb8a9e2a188ccb527fd00f5 to your computer and use it in GitHub Desktop.
Save rettuce/9d5df94c4bb8a9e2a188ccb527fd00f5 to your computer and use it in GitHub Desktop.
first React.js + TypeScript

環境

とりあえずこの辺り使ってやってみたいなと思ったのをざっと書き出し。

  • webpack
  • yarn
  • react
  • typescript
  • scss

この辺り通りにやればできるかな https://www.typescriptlang.org/docs/handbook/react-&-webpack.html



今回の目標

  • jQuery使わない
  • js書かない?
  • DOM操作しない?
  • とりあえず今時のフロントエンド覚える



今回の結果

  • jQuery便利
  • 一応全部typescriptだったけどtsも色々なバージョンで書きかたの違いがあって相変わらずの気持ち悪さは拭きれなかった。。この辺りは言語進化が早すぎる業界なのでもうこれ!と決めてしまった方がいいのだろうけどその言語さえもアップデートで仕様かわるからうーん。。
  • DOM操作しまくったわ。
  • 結局適材適所で、いつもやってるような毎度オリジナル仕様での単発逃切り開発にReactのメリットはそんなになかったな。。この辺りは使いこなせてない感の方が強いけども。
  • でもtsでの使い回しクラスとかができたので今後直近でweb開発するタイミングがあればその辺りは書かなくていいしもうちょい楽そう。
  • あとwebpackとか仕組み全部包括したreactのcreate-react-app -ts いいすね。とりあえずあれ用のシーン遷移できる簡易フレームワークはできた。
  • でも1年も経てばまた使えなくなる(流行りが変わってる)のでまたその時覚えたらいんじゃないかな。



結論

  • 久しぶりのweb楽しかったよ!



yarnつかう

yarn  https://yarnpkg.com/lang/en/

$ npm install -g yarn

https://qiita.com/morrr/items/558bf64cd619ebdacd3d

npm yarn 機能
npm init yarn init 管理を開始(インタラクティブ)
npm init -y yarn 管理を開始(即時)
npm install yarn install 記録されたパッケージをインストール
npm install --save [package@version] yarn add [package@version] インストール + 記録
npm install --save-dev [package] yarn add --dev [package] 開発環境にのみインストール + 記録
npm install --global [package] yarn global add [package] グローバルにインストール
npm uninstall --save [package] yarn remove [package] パッケージと記録を削除
npm uninstall --save-dev [package] yarn remove [package] 開発環境のパッケージと記録を削除
npm update --global yarn global upgrade グローバルのパッケージ全体を更新
rm -rf node_modules && npm install yarn upgrade ローカルのパッケージ全体の更新
npm update [package] yarn upgrade [package] ローカルのパッケージの更新
npm cache clean yarn cache clean キャッシュクリア
npm info [package] yarn info [package] パッケージ情報の表示
npm outdated yarn outdated 古いパッケージ一覧の表示
npm run [script] yarn run [script] package.json内のscriptに定義されたスクリプトを実行
npm search [package] なし?
yarn info [package]で一応調べられる
パッケージのバージョン一覧の取得
yarn 機能
yarn check package.jsonの内容を検証する
yarn create [kit] [project] [kit]に規定の方法でプロジェクトを新規作成する。(react-appなど)
yarn licenses ls インストール済みパッケージのライセンス一覧を表示
yarn versions 関連するミドルウェアのバージョン表示
yarn why [package] パッケージがインストールされた経緯を表示



template packageつくる

とりあえずいつも使うパッケージをつくるとこから。(何回使うかも分からないけど)

$ mkdir template
$ cd template
$ mkdir src
$ mkdir build
$ yarn init -y

package.json ができる。中身。

{
  "name": "template",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT"
}



必要なパッケージをインスコ

$ yarn add global webpack typings
$ yarn add react react-dom
$ yarn add --dev typescript @types/react @types/react-dom
$ yarn add --dev awesome-typescript-loader source-map-loader node-sass css-loader sass-loader style-loader postcss-loader autoprefixer file-loader url-loader ts-loader
$ yarn add --dev babel-core babel-loader babel-preset-es2015 babel-preset-react
$ yarn add --dev webpack-dev-server
$ yarn add --dev extract-text-webpack-plugin



設定ファイルつくる

なんかいろんなところで書かれてるけどちゃんと動くのがない。。

https://medium.com/@fay_jai/getting-started-with-reactjs-typescript-and-webpack-95dcaa0ed33c ここのが一番最小構成で tsconfig.jsonを以下修正でとりあえずコンパイルいけた。 これをベースに書き換えてった方が早そう。

"exclude": [
        "node_modules/**/*",

この後、色々やりたいことの兼ね合いで 構成検討しなおし→設定ファイル書き方調べる、変える→構成検討しなおし→... をぐるぐるし続ける



結局

もう TypeScript-React-Starter 使おう。。 Facebookがreactのテンプレ作ってくれてるのでこれで一瞬でできる。 https://github.com/facebookincubator/create-react-app

もう以下だけでreactのtempleteはおk

Please specify the project directory:
$ create-react-app <project-directory>

For example:
$ create-react-app my-react-app
$ cd my-react-app
$ yarn start

で勝手にローカルサーバ立ち上がって終了。。さっきまでの旅はなんだったのか。

んでこれをtypescriptでやる。 因みに typescript ブラウザで試せるとこ http://www.typescriptlang.org/play/

ここ見てやればおk https://github.com/Microsoft/TypeScript-React-Starter

create-react-app を ts オプションつけたらいけるぽい。ほう。。

$ create-react-app my-app --scripts-version=react-scripts-ts

  yarn start
    Starts the development server.

  yarn build
    Bundles the app into static files for production.

  yarn test
    Starts the test runner.

  yarn eject
    Removes this tool and copies build dependencies, configuration files
    and scripts into the app directory. If you do this, you can’t go back!

We suggest that you begin by typing:

  cd sketch_ts
  yarn start

Happy hacking!


とりあえずこのreadmeを一通りやればわかるだろう。。

ここも見てみながら https://qiita.com/m0a/items/d723259cdeebe382b5f6

困った時のICSさん!!!! https://ics.media/entry/16329#webpack-ts-three

ここ見て自分でやるしかないのか。。 https://qiita.com/takaki@github/items/da1bbf102df198cd5a75

てかここ読めばおk。 https://qiita.com/chibicode/items/8533dd72f1ebaeb4b614



諸々

typescript 書き方

https://qiita.com/Chrowa3/items/a566489392fc1c969b88 http://typescript.ninja/typescript-in-definitelyland/typescript-basic.html TypeScript Ninjaさんのとこちゃんと読みたいな〜

tween.jsモジュール追加

tweenjsのモジュールいっぱいあってtypesとの組合せどれか全然わからんかった、、 結局これ使った https://github.com/tweenjs/tween.js/

yarn add @tweenjs/tween.js @types/tween.js
three.jsモジュール追加したらその後エラる。。
yarn add three @types/three
yarn install

しなおしたらいけた。。

yarn build がエラる。。。

expo/create-react-native-app#135 oh, Fucking Dropbox...

build内が全部絶対パスになる。。

https://qiita.com/yakimeron/items/7a4f8d9e70a4a2b1b96b

yarn ejectで設定ファイル書き出してpath.js内のデフォルト部分書き換える。

function getServedPath(appPackageJson) {
  const publicUrl = getPublicUrl(appPackageJson);
  const servedUrl =
    envPublicUrl || (publicUrl ? url.parse(publicUrl).pathname : './'); ←ここ
  return ensureSlash(servedUrl, true);
}
プロパティへの参照がエラる、、

プロパティへの.アクセスがダメらしい、、

console.log(this.geometry.attributes['position']);  // ok
console.log(this.geometry.attributes.position);    // ng
React内へのscript読み込みってどうやるの。。

https://www.npmjs.com/package/react-load-script これでいけるのかな。。

yarn add react-load-script
jQueryいれる

結局かーい

yarn add jquery @types/jquery
import * as $ from "jquery";
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment