2021-01-21
Gatsbyブログの制作がひと段落したのでNode.jsの学習を始めた。僕の学習計画は「Gatsbyを理解すること」が中心に置かれている気がする。というのも、そもそもReactやJavaScriptを学びたいと思ったのもGatsbyに出会ったからだし、今回Node.jsを学びたいと思ったのもgatsby-node.js
で何が起こっているのかよくわからなかったというのがあるからだ。
まだ学習して間も無いが、学んだことをまとめておきたい。
console.log
などはインポートしなくても使えるGlobalメソッドで、インポートしなくてもすぐに使用することができる。しかし他の多くのメソッドはCoreメソッドと言われ、使用する際にはかならずインポートしなくてはならない。
const fs = require("fs");
fs.writeFileSync("notes.txt", "My name is Kebab.");
fs.appendFileSync(
"notes.txt",
"This is the text added by appendFileSync method."
);
毎度おなじみのnpm i blabla
。これはもうJSやReactのプロジェクトである程度慣れているが教科書的なことを書いておく。
npm init
ここでいくつかの質問に答える。基本は全てenterでOK。 プロジェクトのルートディレクトリにpackage.jsonとnode_moduleが作成される。
npm install 'package-name'
を実行するとpackage.jsonとnode_modulesにインストールしたパッケージが追加される。
これらはnpmが管理してくれるので手動で決して編集するべきではない。 node_modulesにあるコードも全てJSで書かれているので覗いてみたりするが、よくわからない。パッケージとかどうやって作るんだろう。
JSのデータの種類の中で配列とオブジェクトはそれなりに親しんできた。Node.jsで初めてjsonを触ったのでデータについて書き残しておきたい。
const dataBuffer = fs.readFileSync("test.json");
console.log(dataBuffer);
この状態はバイナリデータのままなので
<Buffer 7b 22 6e 61 6d 65 22 3a 22 47 75 6e 74 68 65 72 22 2c 22 70 6c 61 6e 65 74 22 3a 22 45 61 72 74 68 22 2c 22 61 67 65 22 3a 35 34 7d>
みたいな数列が得られる。これはJSで使えない。
次にstringifyしてみると。JSONの形で得られる。 Jsonはフロントとバックエンドでデータのやりとりをするのに使われるデータの種類で、JSのエコシステムに限らずrubyやpythonでも扱うことができる。
const dataJSON = dataBuffer.toString();
console.log(dataJSON);
//出力
//{"name":"Gunther","planet":"Earth","age":54}
const user = JSON.parse(dataJSON);
user.name = "Gunther";
user.age = 54;
最終的にパースすると、オブジェクトが得られる。 こういうふうにオブジェクトの形ならばデータの編集も容易だ。
コマンドラインパーサー。ヘルプメッセージなどを追加できる。
yargs.command({
command: "remove",
describe: "Remove a note",
handler: function () {
console.log("Removing the note!");
},
});
ターミナルの文字を見やすいように修飾してくれる。
console.log(chalk.green("Hehe"))
基本的にはJSを書いているだけという印象。httpとかに入ると難しく感じるのかな。