レゴのようなコード™
8864 ワード
モジュール性は大きな傾向であり、私はこの列車では最初のホップではない.今日、私はどのように簡単にバニラJavaScriptといくつかの素晴らしいツールを使用してマルチモジュールのアプリを構築することができますを表示するつもりです.
レシピ
オブジェクト指向プログラミング jsの書き方 NPMの基礎
プロジェクトのための空のディレクトリから始めましょう
今すぐあなたが使用したいイメージ
すべてが減少
ありがたいことに、NPMはあなたのためにそれを行うことができますlink command . それが我々のケースに見えるものは、ここにあります.
まず、あなたはどのように私を呼んでいますか?
そうしたら、今のところ、それはすべての実験的な構文とものですが、それを処理するためのツールがあります.私はBabelでWebpackを使うのが好きです、もちろん、それは唯一の解決でありません.
プロジェクトのルートにいくつかのパッケージを追加します.
現在、多くのサブモジュールを作成し、それらをすべて1つのファイルにラップできます.サブサブモジュールを持つこともできます.ちょうどそれらをすべて入れなさい
あなたのプロジェクトが成長するにつれて、それは難しく、すべてのこの動物園を管理するのは難しいでしょう.
どこlerna 遊びに出る.
プロジェクトページの完全なドキュメントをチェックしてください.
エンジョイ
レシピ
成分
まず第一に、私はあなたがあらかじめいくつかのことを知っていると仮定するつもりです.
ステップ
地面
プロジェクトのための空のディレクトリから始めましょう
npm init
とメインファイルを作成するindex.js
古い学校JSのクラスでfunction Unicorn(name) {
this.name = name;
}
Unicorn.prototype = {
shine: function() {
// All kind of good stuff here 🦄
}
}
var dazzle = new Unicorn("Dazzle");
dazzle.shine();
デカップリング
今すぐあなたが使用したいイメージ
Unicorn
別のプロジェクトのクラス、または単にオープンソースの人間.別のディレクトリを別のrepoで作成することはできますが、スマートにしましょう.The Unicorn
クラスは、私たちが明快さのためにNPM Scopedパッケージ名を使用するユニコーンプロジェクトにリンクされます.すべてが減少
index.js
コードの3行に.import Unicorn from "@unicorn/model";
var dazzle = new Unicorn("Dazzle");
dazzle.shine();
次に、モジュールのサブディレクトリを作成します.mkdir packages/model
cd packages/model
npm init # and name it @unicorn/model
これにはindex.js
その中のクラスも.私たちはインポート/エクスポートステートメントでプレーンブラウザのjsを残したので、なぜ美しいES 6クラスの構文を使用しないでください.export default class Unicorn {
constructor(name) {
this.name = name;
}
shine () {
// All kind of good stuff here 🦄
}
}
その時点でimport
ステートメントは、node_modules
サブディレクトリ.我々は相対パスを使用することができますimport Unicorn from "./packages/model/index.js";
. 良いことはパッケージ間のリンクを作成することです.ありがたいことに、NPMはあなたのためにそれを行うことができますlink command . それが我々のケースに見えるものは、ここにあります.
cd packages/model
npm link
cd ..
npm link @unicorn/model
パーフェクト!ラッピング
Ok nice one, but now I can't use it in my browser, you dumbo !
まず、あなたはどのように私を呼んでいますか?
そうしたら、今のところ、それはすべての実験的な構文とものですが、それを処理するためのツールがあります.私はBabelでWebpackを使うのが好きです、もちろん、それは唯一の解決でありません.
プロジェクトのルートにいくつかのパッケージを追加します.
npm install --save-dev babel-loader babel-core babel-preset-env webpack
WebPackの設定全体が別の記事を記入することができますので、私はちょうどその仕事を表示します.新しいファイルを設定するwebpack.config.js
いくつかの手順で内部.module.exports = {
entry: "./index.js", // Main file to read
module: {
rules: [{
test: /\.js$/, // For all file ending with ".js"
use: {
loader: "babel-loader", // Use babel
options: {
presets: ["babel-preset-env"],
},
},
}],
},
output: {
filename: "dist/unicorn.js", // Output the result in another file
library: "Unicorn", // Under "Unicorn" namespace
libraryTarget: "this",
libraryExport: "default",
},
};
それから、あなたが走るならばnpx webpack
それはプレーンなWebブラウザで使用可能な1つのファイルにすべてのソースを構築します.管理
現在、多くのサブモジュールを作成し、それらをすべて1つのファイルにラップできます.サブサブモジュールを持つこともできます.ちょうどそれらをすべて入れなさい
modules
ディレクトリ.あなたのプロジェクトが成長するにつれて、それは難しく、すべてのこの動物園を管理するのは難しいでしょう.
どこlerna 遊びに出る.
npm install -save-dev lerna
それを考えるnpm link
ステロイドプロジェクトページの完全なドキュメントをチェックしてください.
npx lerna clean # Remove all node_modules directories
npx lerna bootstrap # Install remote dependencies and link local ones
npx lerna add package # Install a package to all sub-modules
npx lerna add package --scope=sub-module # Install a package to a specific sub-module
npx lerna publish # Bump, tag and publish all your modules over NPM
エンジョイ
これで、可能な限り最もエレガントなプロジェクトを書くためにトラックにする必要があります.頼りにしていますよ.)
より詳細な例が欲しいならば、私は現在もう一つを構築していますJS drawing library 非常に同じテクニックを使用する.
次回は、自動テストとどのように多くのバグをキャッチし、時間とともに一貫性を確保するについて話します.
Reference
この問題について(レゴのようなコード™), 我々は、より多くの情報をここで見つけました
https://dev.to/gmartigny/how-to-code-like-playing-lego--40fk
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について(レゴのようなコード™), 我々は、より多くの情報をここで見つけました https://dev.to/gmartigny/how-to-code-like-playing-lego--40fkテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol