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上で直接Markdownファイルを読むこともできますが、その場合はWeb版で読むことをオススメします。
Twitterのハッシュタグは#js_plugin_book
Tweet<script type="text/javascript" src="https://b.st-hatena.com/js/bookmark_button.js" charset="utf-8" async="async"></script>
JavaScriptの世界では1つの大きなライブラリよりも小さいなものを組み合わせていくようなスタイルが多く見られます。小さなものを組み合わせて作るためには、プラグインと呼ばれる拡張の仕組みが必要となります。またそのようなプラグインがたくさんあるエコシステムの土台を作るには、プラグインアーキテクチャが重要になると言えます。
ソフトウェアの構造に「プラグイン機構」を設け、ユーザコミュニティから開発者コミュニティへの質的な転換を図るのは、ソフトウェア設計からエコシステム設計へとつながる
--OSS開発の活発さの維持と良いソフトウェア設計の間には緊張関係があるのだろうか? - t-wadaのブログ
この書籍では、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.