Matreshka.jsは、ジュニアとシニアのギャップを埋めます
Matreshka.jsフレームワークの2番目のバージョンのベータ版がリリースされました。 リリースは、最後のパッチの1週間後(さらに数日後)にリリースされ、レポートはこの投稿のリリースから始まります。 プロジェクトは長い間プレアルファ/アルファステータスであり、大きな変更がなく実際のプロジェクトでチェックされているため、バージョンは安定していると見なされ、ベータステータスは純粋な形式です。
フレームワークの位置決め
素朴な「みんなのためのJavaScriptフレームワーク」の代わりに、Matreshka.jsは「シンプルなフレームワーク」として位置付けられています。 サイトからテキストを複製する代わりに、このポイントをより詳細に説明するテキストへのリンクを配置させてください 。
一般的な変更
- フレームワークは、ECMAScript 2015と最終仕様にまだ含まれていないいくつかの構文要素を使用してゼロから書き直されました。
- すべての例も新しいJavaScriptで書き直されています。
- 潜在的なメモリリークをすべて修正しました。
- 必要な関数とクラスのみをインポートする機能が追加されました。 各静的メソッドとクラスのドキュメントには、モジュールのアドレスも示されています。
const bindNode = require('matreshka/bindnode'); bindNode(object, key, node);
- 記事、ルーターなど、付随するすべての資料も更新されました。
- ドキュメントは、Webpackと、JSDocおよびGFMからHTMLファイルを非常に迅速に生成する独自のプラグインを使用して収集されます。
リリースプロセスの自動化
以前は、新しいリリースをリリースするために、いくつかの繰り返しアクションを実行する必要がありました。
- コードの変更、テストの作成
- コミットをコミット
- Gruntでビルドする
- ビルドレポートコミット
- package.jsonのバージョンを手動で変更する
- NPMにモジュールを公開する
- GitHubをプッシュする
- Githubでリリースを作成する
- サイトのロシア語版の「新機能」セクションの更新
- ドキュメントに新しいアイテムを追加する(新しい機能がリリースに含まれる場合)
- サイトを構築してサーバーに展開する
- サイトリポジトリにコミットする
- Twitter、VK、Facebookでの新しいバージョンのリリースの発表
したがって、変更によって問題が修正された場合、リリースは急いでいませんでしたが、これはマイナーと見なされ、変更のリストを蓄積して週末に新しいバージョンをリリースすることを好みました(もちろん、重大な問題の修正はできるだけ早く出ました)。
プロジェクトへのセマンティックリリースの追加、Travis CIの使用、およびその他の変更(たとえば、ロシア語の変更ログの削除)のおかげで、リリースのリリースは非常に単純なスキームに従って行われます。
- コードの変更、テストの作成
- GitHubをプッシュする
- ドキュメントに新しいアイテムを追加する(新しい機能がリリースに含まれる場合)
- サイトリポジトリにコミットします(新しい機能がリリースに含まれる場合)
さらに、フレームワーク自体に新しい機能を追加することはほとんどありません(以下で詳しく説明します)。そのため、最後から2番目のポイントは無視できます。
修正またはfeatプレフィックス付きのコミットがGithubに到達すると、次のことが起こります。
- CI呼び出しテスト
- セマンティックリリースは、コミットを解析し、package.jsonのバージョンを変更します
- NPM用にES5でコードをコンパイルします
- Webpackでビルドする
- gh-pagesブランチでのアセンブリの公開(つまり、 "rebuild"などのダーティコミットはありません)
- ボットがTwitterで新しいリリースを発表
- Githubで新しいリリースを公開する
1日にいくつかのパッチが作成されても驚かないでください(そのようなケースがまれになることを願っています)。
同様に、サイトリポジトリへのコミットにより、TravisはPM2を使用してサイトをサーバーに自動的にデプロイします。
その他の改革
- ウクライナ語版のドキュメントを追加しました。
- フレームワークの名前は、Matreshka.jsまたは省略形-Matreshka(ラテン語、大文字)になりました。
- VKとFacebookのページは、「新しいバージョンがリリースされました」などの不規則性とステレオタイプのニュースにより閉鎖されています。
- すべての例と基本的なチュートリアルは、現在このリポジトリにあります 。
- Patreonで資金調達キャンペーンが開始されました 。 会社でMatreshka.jsを使用している場合、プロジェクトの財政的支援は、プロジェクトが積極的に開発されることを保証します。 あなたが個人の開発者であれば、あなたの助けも同様に重要です。 このような大規模な製品の開発と3か国語のドキュメントの作成には数百時間の無償作業が必要になるため、皆さんのサポートを希望します。
APIの変更
最大の変更点は、村にも都市にもなかった多くの機能(たとえば、 trim
機能)の削除でした。
これらの機能が存在したのはなぜですか? 動機は簡単でした。フレームワークの内部メカニズムに必要でしたが、これらの関数が存在する場合、パブリックフレームワークAPIに追加してみませんか?
その結果、ドキュメントは大幅に膨らみ、フレームワークの使いやすさに最も心地よい効果がなく、多くの有用な方法が情報ノイズで失われ、そのような機能を削除する機能が失われました(これは重大な変更であるため)。
2番目のバージョンから、Matreshka.jsにはフレームワーク自体に固有の機能が含まれていますが、「共通」関数は含まれていません。 いくつかのメソッドを削除した具体的な理由については、フォーラムに書きました 。
新しい機能は、フレームワーク自体に含まれるよりも、追加のプラグインとライブラリの形で提供される可能性が高くなります(ただし、後者は除外されません)。
APIの変更点については、ドキュメントのテキストが重複しないように、以下で非常に簡単に説明します。
(!!!) -重大な変更
(!) -古いアプリケーションに影響を与えない可能性が高い破壊的な変更
削除されたもの
- (!!!)
Matreshka.delay
- (!!!)
Matreshka#delay
- (!!!)
Matreshka.define
- (!!!)
Matreshka#define
- (!!!)
Matreshka.defineSetter
- (!!!)
Matreshka#defineSetter
- (!!!)
Matreshka.defineGetter
- (!!!)
Matreshka#defineGetter
- (!!!)
Matreshka#getAnswerToTheUltimateQuestionOfLifeTheUniverseAndEverything
- (!!!)
Matreshka.trim
- (!!!)
Matreshka.orderBy
- (!!!)
Matreshka.noop
- (!!!)
Matreshka.extend
- (!!!)
Matreshka.each
- (!!!)
Matreshka.bound
- (!!!)
Matreshka#bound
- (!!!)
Matreshka.$bound
- (!!!)
Matreshka#$bound
- (!!!)
Matreshka.boundAll
- (!!!)
Matreshka#boundAll
- (!!!)
Matreshka.randomString
( 現在はここにあります ) - (!!!)
Matreshka.get
- (!!!)
Matreshka#get
- (!!!)
Matreshka.deepFind
- (!!!)
Matreshka.setProto
- (!!!)
Matreshka.toArray
- (!!!)
Matreshka.version
- (!!!)
Matreshka#sandbox
- (!!!)
Matreshka#$sandbox
- (!!!)
Matreshka.Object#toNative
- (!!!)
Matreshka.Object#toObject
- (!!!)
Matreshka.Array#toNative
- (!!!)
Matreshka.Array#toArray
- (!!!)
Matreshka.binders.file
( 現在はここにあります ) - (!!!)
Matreshka.binders.dropFile
( 現在はここにあります ) - (!!!)
Matreshka.binders.dragOver
( 現在はここにあります ) - (!!!)
Matreshka.Array#each
- (!!!)
Matreshka.Array#hasOwnProperty
- (!!!)
Matreshka.Array#useBindingsParser
- (!!!)
Matreshka.Object#hasOwnProperty
- (!!!)
window.Class
(グローバル変数の代わりにMatreshka.Class
を使用) - (!!!)
window.$b
、Matreshka.$b
- (!!!)
Matreshka.$
- (!!!)
matreshka-magic
ライブラリ - (!!!)
Matreshka.binders.innerHTML
- (!!!)
Matreshka.binders.innerText
- (!!!)
Matreshka.binders.attribute
- (!!!)
Matreshka.binders.property
名前が変更されたメソッドとプロパティ
- (!!!)
Matreshka#linkProps
>Matreshka#calc
- (!!!)
Matreshka.to
>Matreshka.toMatreshka
- (!!!)
Matreshka#setClassFor
>Matreshka#instantiate
-
Matreshka.Object#jset
>Matreshka.Object#setData
(jset
は削除されません) - (!!!)
Matreshka#isMK
>Matreshka#isMatreshka
- (!!!)
Matreshka.Object#isMKObject
>Matreshka.Object#isMatreshkaObject
- (!!!)
Matreshka.Array#isMKArray
>Matreshka#isMatreshkaArray
- (!!!)
Matreshka.useAs$
->Matreshka.useDOMLibrary
bindNode
およびunbindNode
変更
- (!!!)構文
{ key: [node, binder] }
サポートされなくなりました。 - (!!!)引数構文のヒープはサポートされなくなりました。
- 新しい構文
([{key, node, binder, event}], commonEventOptions)
。 - 新しい構文
{key: { node, binder }}
および{key: [{ node, binder }]}
(Eureka!この構文を使用すると、bindNode
1回呼び出すだけで多くのバインディングをうまくハングさせることができます)。 - (!)イベント
bind
、bind:KEY
は、bind:KEY
された各ノードで呼び出されます。 - (!)
unbind
、unbind:KEY
はそれぞれのアンタイドノードで呼び出されます。 -
useExactBinder
フラグ。 - (!!!)
assignDefaultValue
フラグのassignDefaultValue
getValueOnBind
変更されました。 - フラグ
setValueOnBind
。 - (!!!)
debounce
フラグは削除されました。 - (!)
debounceSetValue
フラグ。 - (!)フラグ
debounceGetValue
。 -
debounceSetValueOnBind
フラグ。 -
debounceGetValueOnBind
フラグ。 -
debounceGetValueDelay
フラグ。 -
debounceSetValueDelay
フラグ。 - (!!!)
deep
ではなくexactKey
フラグ。
詳細については、 bindNodeおよびunbindNodeのドキュメントを 参照してください。
バインダーの変更
- 新しい
destroy
バインダーメソッド。 - (!!!)
className
は感嘆符の構文をサポートしなくなりました。 代わりに、2番目の引数としてfalse
を渡すことができます。 - すべてのバインダーメソッドの
bindingOptions
引数(たとえば、getValue(bindingOptions) {...}
)。
詳細については、 bindNodeおよびバインダーのドキュメントを参照してください。
parseBindings
変更
- このメソッドは
eventOptions
2番目の引数eventOptions
取ります -
{{}}
span
要素に置き換えられません。 - (!!!)最初の引数は必須です。
-
{{ }}
スペースを使用できます。
詳細については、 parseBindingsのドキュメントを参照してください。
bindSandbox
- このメソッドは、新しいサンドボックスをバインドする前に、以前のサンドボックスを解きます。
詳細については、 bindSandboxのドキュメントを参照してください。
calc
メソッドの変更(以前はlinkProps
と呼ばれていlinkProps
)
- (!!!)
debounce
フラグの名前がdebounceCalc
変更されました。 - (!)
debounceCalc
デフォルトはtrue
です。 -
debounceCalcOnInit
フラグ。 -
exactKey
フラグ。 - (!!!)
skipLinks
フラグは、set
メソッドで使用するためにskipCalc
に名前skipLinks
変更されskipCalc
。 - (!!!)構文
[inst, key, inst, key]
削除[inst, key, inst, key]
れました。 - 新しい構文
{ target: {source, event, handler} }
(Eureka!多くのプロパティでcalc
メソッドを1回呼び出すことができます)。 - 新しい構文
[{object, key}]
。 -
debounceCalcDelay
フラグ。
詳細については、 calcのドキュメントを参照してください。
Matreshka.Array
変更
- (!!!)
skipMediator
フラグの名前がskipItemMediator
変更されskipItemMediator
。 - (!)
pull
メソッドは、オブジェクトと数値のみをサポートします。 -
from
とof
継承されます。 - (!!!)
addone
イベントaddone
は、addedではなく、addedItem
プロパティの下に追加されたaddone
が含まれます。 - (!!!)
removeone
イベントremoveone
には、removedItem
代わりに、removedItem
プロパティの下にリモートオブジェクトが含まremoved
ます。 - (!)
itemRenderer
には、複数のノードが含まれている場合はspan
しません。 代わりに例外がスローされます。 -
useBindingsParser
プロパティは削除useBindingsParser
れました。 - (!!!)バインディングパーサーはデフォルトで有効になっています。
-
includes
メソッド。 -
find
メソッド。 - メソッド
findIndex
。 -
fill
メソッド。 -
copyWithin
メソッド。 -
keys
メソッド。 - メソッド
values
。 -
entries
方法。
Matreshka.Arrayのドキュメント、 pull 、 from 、 of 、 itemRenderer 、 METHODを 参照してください 。
Matreshka.Object
変更
- データを処理するプロパティ(削除ではない)が変更されたときに発生する
set
イベント。 -
jset
メソッドの名前はsetData
変更されsetData
(コミュニティの要求により、古い名前は引き続き存在します)。 -
replaceData
メソッドのreplaceData
フラグ。 -
isDataKey
メソッド。 - メソッド
values
。 -
entries
方法。
詳細については、 Matreshkaのドキュメントを参照してくださいObject 、 setData 、 isDataKey 、 values 、 entries
Matreshka.Class
変更
- 静的メソッドは継承されます。
- タイプ
symbol
名を持つプロパティは、プロトタイププロパティと静的プロパティの両方としてサポートされます。
詳細については、 Matreshka.Classのドキュメントを参照してください。
その他の変更
- 静的チェーン方式。
- (!!!)
sandbox
プロパティの取得メソッドと設定メソッドは、すべてのオブジェクトに対して例外をスローします。 - (!!!)
container
プロパティのMatreshka.Array
と設定Matreshka.Array
、Matreshka.Array
インスタンスに対して例外をMatreshka.Array
ます。 - (!!!)スペースで区切られたキーのリストは、どのメソッドでもサポートされなくなりました。
- いくつかの明白でないバグを修正
- すべてのクラスと関数は、CommonJSモジュールとしてインポートできます(
import text from 'matreshka/binders/text'
) - 明確な間違い。
Matreshka.jsでの作業が原因で表示されたプロジェクト
- deploy-to-git -Gitサーバーに何か(私の場合はアセンブリの結果)をデプロイできるCLIツール。
- github-embed-公式Webサイトで使用されるGithubでコードを埋め込みます。
- webpack-generate-umd-externalsは、まれなタスクを解決するWebpackの障害です:UMDもサポートするもの(この場合はMatreshka.js)のUMDをサポートするプラグインを作成しますが、フレームワーク全体をインポートせずにCommonJS依存関係をインポートします(難しい、考えないでください)。
- cz-simple-conventional-changelog-簡単な cz-conventional-changelog 。
- eslint-plugin-output-todo-comments -ESLint用のプラグインで、警告またはエラーの形式で指定されたプレフィックスのコメントを表示します。 TODOコメントが失われないように、Matreshka.jsで使用されます。
- babel-plugin-transform-object-spread-inline -Object.assignを呼び出す代わりに、オブジェクトを構文変換して高速
for
ループにObject.assign
ます。 - babel-plugin-nofn-メタ関数呼び出しを高速
for
ループに変換for
ます。 - babel-plugin-transform-es2015-modules-simple-commonjsは、結果のコードをコンパクトにするためのCommonJSのECMAScript 2015モジュールの簡易トランスフォーマーです。
- uniquestring-擬似ランダム文字列ジェネレーター(
Matreshka.randomString
置き換えMatreshka.randomString
)。 - makeelement -DOM要素を作成します(
Matreshka.$b.create
置き換えMatreshka.$b.create
)。
ご清聴ありがとうございました!