ファイルを分割する
コードの量が増えてくると、管理が大変になるので
クラスごとに管理すると便利。
ただし、ただ分割するだけだと親クラスがなくなってしまい、エラーが起きる。
【解決方法】
分割したファイル同士を関連付ける。
STEP1 分割した親ファイルのクラスをほかのファイルでも使用できるようにする
親クラスの定義の後で「export default クラス名」とすることで、
そのクラスをエクスポート(出力)し、他のファイルで使えるようになる。
書き方例
class Cat { ・・・
}
export default Cat; → ほかのファイルでも使えるようにする設定部分
- 末尾コンマが必要!忘れないように。
STEP2 子ファイルで親ファイルのクラスを使用できるようにする
子ファイルで親ファイルのクラスを使用できるようにするには
インポート(読み込み)する必要がある。
【書き方】
import Cat from “./cat“;
クラス名 ファイル名
- 子クラスファイルの先頭で、「import クラス名 from “./ファイル名”」と書く。
- ファイル名の拡張子「.js」は省略できる
値をエクスポートする
クラスだけでなく、値(関数、数字、文字など)も出力できる
【書き方】
<room1.js>
const text = “ありがとさん”;
export default text;
<room2>
import text from “./room1”;
console.log(text); → 「ありがとさん」と出力される
export defaultはデフォルトエクスポート
デフォルトエクスポートでは、エクスポートした値の名前とインポートした値の名前が違っても
自動的に「export default 値」の値がインポートされる。
デフォルトエクスポートの注意
- デフォルトエクスポートは、1つのファイルに1つの値にしか使えない
- 複数エクスポートしたいときは、名前付きエクスポートを使う
名前付きエクスポート(複数の値を出力したいとき)
書き方
<room1.js>
const cat1 = new Cat(“ピノ”,17,”茶白”);
export { cat1 } ;
<room2>
import { cat1 } from “./room1”;
cat1.info();
- 名前付きエクスポートした値をインポートする場合は、エクスポート時と同じ名前にする
- インポートするときも、エクスポートするときも値を{ }で囲む
- エクスポートする際に、「default」は不要
複数のクラスや値を指定してエクスポートする
【書き方】
<room1.js>
const cat1 = new Cat(“ピノ”,17,”茶白”);
const cat2 = new Cat(“もんた”,14,”茶トラ”);
export { cat1,cat2 } ;
<room2>
import { cat1,cat2 } from “./room1”;
cat1.info();
cat2.info();
- 「export { 名前1, 名前2 }」という形で書くことにより、1つのファイルから複数のエクスポートが出来る。
相対パス
インポートするとき、「”./ファイル名”」は相対パスといい
script.jpから見た、記述されているファイルの位置関係を示している。
ドット1つの「./」は相対パスが書かれているファイルと同じディレクトリ(フォルダ)にあることを意味する。
異なるフォルダ(ディレクトリ)を指定する場合
1つ上の階層に戻る場合はドット2つの「../」を用いる。●●親等の数え方みたいな感じ。
フォルダ内 → フォルダfamily1 ← cat1ファイル
↓
→ フォルダfamily2 → cat2ファイル
【書き方】
import Cat1 from “../family2/cat2“;
- :一つ上の階層に移動
- :family2ファイルに移動
- :cat2.jsを指定
パッケージ
誰かが作った便利なプログラムが「パッケージ」として公開されている。
このパッケージを、自分のプログラムの中に組み込んで使える
パッケージの使い方
パッケージを自分のプログラムで使うためには、importを用いてパッケージをインポートする。
書き方
import 定数名from “パッケージ名”;
- 「./」はいらないので注意
【例:chalkパッケージの使い方】
import chalk from “chalk”;
console.log(chalk.yellow(“お疲れさん”));
↑文字列を囲む
readline-syncの使い方
readline-syncというパッケージを導入すると、コンソールへの値の入力と、その入力された値をプログラムの中で使うことができるようになる。
書き方
import readlineSync from “readline-sync”;
readlineSync.question(“名前を入力してください:”);
- インポートしたあと、readlineSync.question(質問文) と書く。
- 質問文が出力されると一旦処理が止まり、コンソールに値が入力されると、次の処理に進む。
【書き方②】
import readlineSync from “readline-sync”;
const name = readlineSync.question(“名前を入力してください:”);
console.log(`${name}と入力されました`);
名前を入力してください:ピノ ← ここに「ピノ」と入力すると、name=ピノになる
ピノと入力されました
整数の場合
文字列の入力ではquestionを用いましたが、年齢のように整数の場合はquestionIntを用います。
- 文字列の場合:const name = readlineSync.question(“名前を入力してください:”);
- 整数の場合:const age = readlineSync.questionInt(“名前を入力してください:”);
コメント