Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork10
azu/JavaScript-Plugin-Architecture
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
この書籍はJavaScriptのライブラリやツールにおけるプラグインアーキテクチャについて見ていくことを目的としたものです。
次の形式で読むことができます。
この書籍のソースコードは、次のGitHubリポジトリに公開されています。
Twitterのハッシュタグは#js_plugin_book
JavaScriptの世界では1つの大きなライブラリよりも小さなライブラリを組み合わせていくようなスタイルが多く見られます。小さなものを組み合わせて作るためには、プラグインと呼ばれる拡張の仕組みが必要となります。またそのようなプラグインがたくさんあるエコシステムの土台を作るには、プラグインアーキテクチャが重要になるといえます。
ソフトウェアの構造に「プラグイン機構」を設け、ユーザコミュニティから開発者コミュニティへの質的な転換を図るのは、ソフトウェア設計からエコシステム設計へとつながる
--OSS開発の活発さの維持と良いソフトウェア設計の間には緊張関係があるのだろうか? - t-wadaのブログ
この書籍では、JavaScriptにおけるプラグインアーキテクチャやそのエコシステムを形成してるライブラリやツールなどの実装を学ぶことが目的となっています。
JavaScriptの基本的な文法などについては解説していないため、次の書籍を参照してください。
jQueryのプラグインについて解説しています。<script>
タグをベースとしたプラグインアーキテクチャについて解説しています。
ESLintのルールを拡張する仕組みについて解説しています。ESLintではJavaScriptのコードをパースして作成されたASTを元にコードのLintを行います。実際にESLintのルールを解釈できる小さな実装を作りながらプラグインの仕組みについて学びます。
Connectのmiddleware と呼ばれるプラグインアーキテクチャについて解説しています。Node.js以外においても_Rack_などHTTPサーバーでよく見られるプラグインを使った階層構造について学びます。
タスク自動化ツールとして知られるgulpのプラグインアーキテクチャについて解説しています。gulpではデータの流れとして既存のNode.js Streamを使い、そこで流すデータとしてvinylオブジェクトを利用します。実際にgulpプラグインを書きながら、gulpのプラグインの仕組みについて学びます。
アプリケーションのStateを管理ライブラリのReduxのプラグインアーキテクチャについて解説しています。Reduxではmiddleware と呼ばれる拡張の仕組みを持っていますが、Connectとの類似点や相違点があります。小さなReduxの実装を作りながらmiddleware の仕組みについて学びます。
この書籍は無料で読むことができ、同時に修正や新しいページを書く権利があります。
CONTRIBUTING.mdに、書籍で扱うべきプラグインアーキテクチャのProposalの書き方やPull Request、コミットのやりかたなどが書かれています。
間違いやライブラリのアップデートへの追従など何かあれば、IssueやPull Requestをよろしくお願いします。
ソースコードはすべてGitHubに公開されています。
MIT/CC BY-NC © azu
- コードはMITライセンスで利用できます
- 文章はCC BY-NC 4.0で利用できます
About
JavaScriptプラグインアーキテクチャの本
Resources
License
Code of conduct
Security policy
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Sponsor this project
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Contributors9
Uh oh!
There was an error while loading.Please reload this page.