この文書の現在のバージョンと選択したバージョンの差分を表示します。
| 次のリビジョン | 前のリビジョン | ||
|
typescript:moduleのimport [2020/09/22 01:01] ips 作成 |
typescript:moduleのimport [2020/09/23 12:09] (現在) ips [6.本番用のビルと] |
||
|---|---|---|---|
| ライン 2: | ライン 2: | ||
| 関数などを別ファイルに分割したい場合。 | 関数などを別ファイルに分割したい場合。 | ||
| + | 復数に分割したファイルをそのまま<html><script src="xxx.js"></script></html>としても取り込んでもjavascriptは実行できない。 | ||
| - | ===== moduleを分ける ===== | + | * 記号なしリスト.tsファイルを1つのファイルにまとめて.jsにコンパイルする。 |
| + | * webpackやgulpといった別ツールを使って、コンパイルしたjsファイルのモジュールのバインドをする。 | ||
| + | といったことが考えられるが、一番簡単なのは<wrap hi>parcel</wrap>を使用することのようだ。 | ||
| + | |||
| + | [[https://docs.solab.jp/typescript/module/external/|外部モジュール]] | ||
| + | [[https://teppeis.hatenablog.com/entry/2014/05/typescript-external-modules|TypeScriptで複数ファイル構成する2つの方法]] | ||
| + | |||
| + | ====== parcelの使い方 ====== | ||
| + | |||
| + | [[https://ics.media/entry/190325/|TypeScriptのビルドにオススメ!Parcel入門]] | ||
| + | |||
| + | ====== 1.npmの初期化 ====== | ||
| + | <code> | ||
| + | // プロジェクトのディレクトリに移動して | ||
| + | >npm init | ||
| + | </code> | ||
| + | |||
| + | ====== 2.parcelのインポート ====== | ||
| + | <code> | ||
| + | >npm install --save-dev parcel | ||
| + | </code> | ||
| + | |||
| + | ====== 3.ファイルを分けてexportとimport ====== | ||
| + | |||
| + | <code javascript func.ts> | ||
| + | export default function getAsterString(target:string):string{ | ||
| + | return "*" + target + "*" | ||
| + | } | ||
| + | </code> | ||
| + | |||
| + | <code javascript main.ts> | ||
| + | import getAsterString from "./func" | ||
| + | ... | ||
| + | |||
| + | console.log(getAsterString("aaa")) | ||
| + | </code> | ||
| + | |||
| + | ====== 4.htmlでインポート ====== | ||
| + | <code html> | ||
| + | <body> | ||
| + | ... | ||
| + | <script src="main.ts"></script> //.tsにすること! | ||
| + | </body> | ||
| + | |||
| + | </code> | ||
| + | |||
| + | ====== 5.ローカルサーバーの起動 ====== | ||
| + | <code> | ||
| + | > npx parcel index.html --open | ||
| + | </code> | ||
| + | |||
| + | <WRAP center round tip 90%> | ||
| + | * ファイルの編集と同時にリロードされる(ホットリロードに対応!) | ||
| + | * TypeScriptのモジュールは自動でインストール! | ||
| + | * TypeScriptのソースマップが有効! | ||
| + | * tsconfig.jsonのカスタマイズ可能! | ||
| + | </WRAP> | ||
| + | |||
| + | ====== 6.本番用のビルと ====== | ||
| + | <code> | ||
| + | npx parcel build index.html | ||
| + | </code> | ||
| + | |||
| + | <WRAP center round important 90%> | ||
| + | htmlファイルのjs参照が | ||
| + | <script src="main.ts"></script> | ||
| + | のようにトップディレクトリにあると、ビルド後は | ||
| + | <script src="/main.2799c73f.js">となってしまい、jsが参照できない。 | ||
| + | |||
| + | サブディレクトリを作成してtsの作成やコンパイルをするか、コンパイル後のhtmlの参照を | ||
| + | <script src="./main.2799c73f.js"> | ||
| + | <script src="main.2799c73f.js"> | ||
| + | と変更する必要がある。 | ||
| + | </WRAP> | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ====== ~~~以下の手順ではモジュールのバインドができていない(参考:後日修正予定)~~~ ====== | ||
| + | |||
| + | ===== 1.moduleを分ける ===== | ||
| <code javascript comm/func.ts> | <code javascript comm/func.ts> | ||
| ライン 17: | ライン 101: | ||
| </code> | </code> | ||
| - | ===== tsconfig.jsonの確認 ===== | + | ===== 2.tsconfig.jsonの確認 ===== |
| <code json tsconfig.json> | <code json tsconfig.json> | ||
| ライン 28: | ライン 112: | ||
| </code> | </code> | ||
| - | ===== htmlでインポート ===== | + | ===== 3.htmlでインポート ===== |
| tsc の--outオプションを付けて1つのファイルにまとめて出力するか、出来上がったjsファイルをすべて参照する必要がある。 | tsc の--outオプションを付けて1つのファイルにまとめて出力するか、出来上がったjsファイルをすべて参照する必要がある。 | ||
| <code html index.html> | <code html index.html> | ||
| ライン 39: | ライン 123: | ||
| </code> | </code> | ||
| - | ===== tscでコンパイル ===== | + | <code> |
| + | // 実際にはまとまらない... | ||
| + | >tsc main.ts comm/func.ts --out all.js | ||
| + | comm/func.ts:1:17 - error TS6131: Cannot compile modules using option 'out' unless the '--module' flag is 'amd' or 'system'. | ||
| + | </code> | ||
| + | |||
| + | |||
| + | ===== 4.tscでコンパイル ===== | ||
| <code> | <code> | ||
| >tsc main.ts comm/func.ts | >tsc main.ts comm/func.ts | ||
| </code> | </code> | ||