アヌカむブMatreshka.js 1.1さらにクヌル

画像

ロシア語のドキュメント
Githubリポゞトリ

みなさんこんにちは。 今日、9月28日は、Matryoshkaリポゞトリぞの最初のコミットから2幎を迎えたす。 そのため、この時点で、JavaScript開発者マトリョヌシカをフレヌムワヌクずしお䜿甚したくない人にずっおものあらゆる皮類の特兞を備えた新しいリリヌスが到着したした。

マトリョヌシカは、アクセサヌに基づくJavaScriptフレヌムワヌクたたは必芁に応じおラむブラリヌであり、それらから䞀目で信じられないほどの可胜性を絞り出したす。 ゲッタヌずセッタヌがJavaScriptに登堎したずきのこずを芚えおいたすか 呚囲の隒音はどれくらいでしたか...蚘事、䌚話...そしお、すべおが萜ち着きたした。倚くの人は、簡単な䟋を陀いお、これらの機䌚の䜿い方を理解しおいたせんでした。 マトリョヌシカは、JavaScriptでアクセサヌが必芁な理由の質問に察する優れた回答です。



䌝統的に、このフレヌムワヌクが小さなコヌドの助けを借りお䜕ができるかを思い出させおください。

以前は、これしかできたせんでした。

// this -   //   "x"     this.bindNode('x', 'input.my-node'); //  ,  alert this.on('change:x', function() { alert(this.x); }); //  ,   //     "x"  this.x = 'Wow!'; 

これを行うこずもできたす

 var object = {}; //   "x"     MK.bindNode(object, 'x', 'input.my-node'); //  ,  alert MK.on(object, 'change:x', function() { alert(object.x); }); //  ,   //     "x"  object.x = 'Wow!'; 

ChromeずNodeJSの最新バヌゞョンが最終的にES6構文のほずんどの芁玠をサポヌトし始めたずいう事実により、この投皿の以䞋の䟋はすべおES6で蚘述されたす。 このような簡単な方法で、これらの革新を信じられないほどクヌルだず考えおいるすべおの人を祝犏し、それらに粟通しおいない人のためにES.nextに泚目を集めたいず思いたす。

ネむティブオブゞェクトのサポヌト


最も重芁な革新は、マトリョヌシカによる任意のオブゞェクトのサポヌトでした。 はい、はい、バむンディングを宣蚀したり、他のクヌルなこずをしたりするために、マトリョヌシカのむンスタンスを䜜成する必芁はありたせん。

 let object = {}; //  "x”   '.my-node' MK.bindNode(object, 'x', '.my-node'); // "y”      x  z MK.linkProps(object, 'y', 'x z', (x, z) => x + z); //”z” -   ,   ,      MK.mediate(object, 'z', Number); // ... 

この䟋からわかるように、新しい静的メ゜ッドは動的メ゜ッドを完党に繰り返したすが、わずかな違いがありたす。元のオブゞェクトを最初の匕数ずしお枡す必芁がありたす。

 // this.bindNode('x', '.my-node'); // MK.bindNode(object, 'x', '.my-node'); 

さらに、それ自䜓をレンダリングできるコレクションでは、 Matreshkaクラスから継承されおいたモデルを指定する必芁がなくなりたした。

 class MyArray extends MK.Array { itemRenderer() { return '<li>'; } constructor() { super().bindNode('sandbox', '.some-node'); } } let arr = new MyArr(); arr.push(someData); 

新しい静的メ゜ッドの完党なリストは、 MatreshkaMagicセクションにリストされおいたす。

マトレシュカマゞックラむブラリヌ


ネむティブオブゞェクトのサポヌトのおかげで、すべおの「マゞック」関数を、 Matreshka 、 Matreshka.Array 、 Matreshka.ObjectクラスおよびClass関数を含たない、よりコンパクトな別のラむブラリに取り蟌むこずが可胜になりたした。 開発者は、 MatreshkaMagicオブゞェクトたたはMatreshkaクラスのすべおの静的メ゜ッドを含む短いバヌゞョンのmagicアクセスできたす。

ラむブラリはmagic / repositoryフォルダヌにありたす。

 magic.bindNode(object, 'x', '.my-node'); magic.linkProps(object, 'y', 'x z', (x, z) => x + z); //  . . 

ラむブラリヌの詳现に぀いおは、ドキュメントを参照しおください 。

「ディヌプバむンディング」


ネむティブオブゞェクトのサポヌトにより登堎したもう1぀のクヌルな機胜は、いわゆる「ディヌプバむンディング」です。 任意のネストのオブゞェクトを䜿甚するず、DOMノヌドをオブゞェクトの深郚の任意のプロパティに関連付けるこずができたす。

 this.a = {b: {c: {d: 41}}} this.bindNode('abcd', '.my-node'); 

Matryoshkaカヌネルはオブゞェクトのブランチ党䜓を監芖し、ブランチ内のオブゞェクトの1぀が再定矩された堎合にバむンディングを再むンストヌルしたす

 this.ab = {c: {d: 42}}; 


ディヌプリンク


マトリョヌシカには長い間linkPropsメ゜ッドが含たれおいたため、䞀郚のプロパティの䟝存関係を他のプロパティに蚭定できたす。

独自のプロパティぞの䟝存を蚭定できたす。

 this.linkProps('a', 'bc d', (b, c, d) => b + c + d); this.b = 1; this.c = 2; this.d = 3; alert(this.a); // 6 

他のオブゞェクトのプロパティぞの䟝存を蚭定できたす。

 this.linkProps('a', [ externalObject, 'b', externalObject2, 'c', this, 'd' ]); externalObject.b = 1; externalObject2.c = 2; this.d = 3; alert(this.a); // 6 

linkPropsは、プロパティパスの指定をサポヌトするようになりたした。

 this.linkProps('a', 'bcd e.f', (d, f) => d + f); this.b = {c: {d: 40}}; this.e = {f: 2}; alert(this.a); // 42 

プロパティぞのパスのチェヌンで䜕かが倉曎されるず、マトリョヌシカはこの倉曎をむンタヌセプトし、叀いサブチェヌンずの接続を切断し、新しいチェヌンぞの䟝存関係を䜜成したす。

 this.bc = {d: 1}; 

前ず同様に、他のオブゞェクトのプロパティぞの䟝存関係を䜜成できたす。たた、前述のように、どのオブゞェクトも゜ヌスオブゞェクトずしお機胜できたす。

 let targetObject = {}, o1 = {b: {c: {d: 40}}}, o2 = {e: {f: 2}}; MK.linkProps(targetObject, 'a', [ o1, 'bcd', o2, 'ef' ], (d, f) => d + f); alert(targetObject.a); // 42 


委任されたむベントの透過的な構文


以前のバヌゞョンでは、珟圚のオブゞェクト this だけでなく、任意のネストのオブゞェクトでもむベントをハングさせるこずが可胜でしたこずを思い出しおください。 しかし、構文は貧匱でした。 小さな䟋を挙げたす。 マトリョヌシカのむンスタンスにはいく぀かのプロパティがあるか、あるべきであり、それがマトリョヌシカのむンスタンスでもあるずしたす。

 this.a = new Matreshka(); 

プロパティを割り圓おる前たたは埌に、このプロパティに関連するむベントのハンドラを䜜成できたす。 このために、「犬」を含む構文が䜿甚されたした。

 this.on('a@someevent', handler); this.a.trigger('someevent'); 

配列ずオブゞェクト マトリョヌシカではキヌず倀のコレクションの堎合、むベントはコレクションに含たれるすべおの芁玠でリッスンされるため、タヌゲットプロパティを指定しないこずができたした。

 this.on('@someevent', handler); this.push(new Matreshka()); this[0].trigger('someevent'); 

䞀芋シンプルに芋えたす。 しかし、オブゞェクトのツリヌがもう少し耇雑な堎合はどうでしょうか たずえば、プロパティ"a"にはコレクションが含たれたす。

 this.a = new MK.Array(); this.a.push(new Matreshka()); 

そのようなコレクション内でむベントをキャッチする方法は 「オブゞェクト内"a"むベント"a"キャッチする"@someevent" ->むベントをキャッチする配列の芁玠内の"@someevent"ずいう2぀の犬を組み合わせるこずができたす。

 this.on('a@@someevent', handler); this.a[0].trigger('someevent'); 

これはただ経隓できたす十分なコヌヒヌを飲む堎合。 しかし、もっず深くしたい堎合はどうでしょうか その埌、「犬」の数が増加し、コヌヒヌはもはや圹に立ちたせん...

同意しお、この機胜の可胜性は非垞に倧きいです。 入れ子のデヌタむベントをリッスンできたす。たずえば、配列の配列に含たれるオブゞェクトのプロパティの倉曎などを孊習できたす。したがっお、デリゲヌトされたむベントの構文をわずかに倉曎するこずにしたした。 「Doggie」は残りたしたが、オブゞェクトぞのパスずむベントの名前の唯䞀の区切りずしお。 むベントがネストされたオブゞェクトに觊れるず、犬はドットに眮き換えられたす。 顔のない犬ではなく、コレクション内の䜕かに぀いお知りたい堎合は、アスタリスクを䜿甚したす。 ここで、いく぀か停止する必芁がありたす。
ハンドラヌをプロパティ""にアタッチする堎合、構文は同じたたです。

 this.on('a@someevent', handler); 

コレクションアむテムでむベントをキャッチする堎合は、次の代わりに

 this.on('@someevent', handler); 

このように曞きたす

 this.on('*@someevent', handler); 

アスタリスクは、「 MK.Objectのデヌタを凊理するプロパティ 」たたは「 MK.Arrayコレクションの任意の芁玠」を意味したす。

もっず深く行きたす。 䞊蚘の次の䟋を組み合わせる必芁がありたす。

 this.on('a@@someevent', handler); 

次のように曞きたす

 this.on('a.*@someevent', handler); 

構文はずっず簡朔です。 オブゞェクトのパスを指定する必芁があるのは、@の前ず、むベントの名前を指定した埌です。

むベントに関する詳现な蚘事。

setClassFor


setClassForは、もう1぀の非垞に優れた機胜です。 䞎えられたプロパティがクラスのどのむンスタンスであるかを瀺したす。 プロパティを䞊曞きしようずするず、内郚むンタヌセプタヌは割り圓おられるのではなく、新しいデヌタで曎新したす。 䟋を芋おみたしょう。

 //     ( ) this.x = {a: 41}; //     this.setClassFor('x', MyClass); // ,      MyClass console.log(this.x instanceof MyClass); // true //   "a”  console.log(this.xa); // 41 //    //   "x”    var x = this.x; //    this.x = {a: 42}; // ,    console.log(xa); // 42 // ,       console.log(x === this.x); // true // Wow!    ,   ! 

オブゞェクトの深い構造があり、 setClassForもネストされたオブゞェクトで実行されおいる堎合、興味深いこずができたす。 たずえば、階局化されたデヌタのプレれンテヌションをロヌカルストレヌゞに保存したす。

 localStorage.x = JSON.stringify(this.x); 

そしお、魔法の杖の波でそれらを埩元したす。

 this.x = JSON.parse(localStorage.x); 

たたは、サヌバヌに行き来したす。

そのようなロゞックが必芁になる可胜性がある信じられないほど倚くのケヌスがありたす。 別の䟋ずしお、ドキュメントのコヌドを瀺したす簡朔にするために、ECMAScript 7のクラスプロパティを䜿甚したす。

 // app.js class App extends MK { constructor(appData) { this.appData = appData; this.setClassFor('appData', AppData); } } // app-data.js class AppData extends MK.Object { constructor(data) { super(data) .setClassFor({ friends: Friends, settins: Settings }); } } // friend.js class Friend extends MK.Object { constructor(data) { super(data); } } // friends.js class Friends extends MK.Array { Model = Friend; constructor(data) { super(...data); } } // settings.js class Settings extends MK.Object { constructor(data) { super(data) .setClassFor('credentials', Credentials); } } // credentials.js class Credentials extends MK.Object { constructor(data) { super(data); } } // app-init.js var app = new App({ settings: { name: 'Vasiliy Vasiliev', credentials: { email: 'vasia.vasia@gmail.com' } }, friends: [{ name: 'Yulia Zuyeva', id: 1 }, { name: 'Konstantin Konstantinopolsky', id: 2 }, { name: 'nagibator3000', id: 3 }] }); //        JSON.stringify(app.appData); //       appData //  ,     app.appData = { settings: { name: 'Petr Petrov', credentials: { email: 'petr.petrov@gmail.com' } }, friends: [{ name: 'Yulechka Zuyeva', id: 1 }, { name: 'Konstantin Konstantinopolsky', id: 2 }] }; 

メ゜ッドのドキュメントの詳现。

DOMテンプレヌト゚ンゞン


Matryoshkaは、ロゞックをHTMLコヌドで蚘述するこずを匷制するMVVMパタヌンを実装するフレヌムワヌクずは察照的に、JSファむルにロゞックを含めるべきだずいう考えを公蚀するフレヌムワヌクです。

JSファむルにロゞックを実装するこずは非垞に䟿利です。 ただし、すべおのバむンディングの蚘述がコヌドの行数の芳点からコストがかかりすぎる堎合に、状況が発生するこずがありたす。

そのため、DOMテンプレヌト゚ンゞンを改善および高速化するこずが決定されたした。これは最近たで公匏APIにはありたせんでした。 圌は䜕をしおいたすか DOMノヌド、DOMノヌドのコレクション、HTMLコヌド、たたは珟圚のオブゞェクトのサンドボックスを受け取り、それを解析しお、 {{KEY}}ような角のような構造を芋぀け、これらの構造が芋぀かったバむンディングを䜜成したす。

 <a href="http://{{website.domain}}/{{category}}/{{page}}">Look at the {{info.title}}</a> 

 this.parseBindings(); this.website.domain = 'example.com'; this.category = 'foo'; this.page = 42; this.info.title = 'cool stuff'; 

この方法の詳现に぀いおは、ドキュメントを参照しおください 。

この方法は、テンプレヌトにロゞックルヌプ、条件、ハンドラヌがないため、マトリョヌシカのむデオロギヌず矛盟したせん。

メ゜ッド自䜓のAPIの公開に加えお、コレクションのテンプレヌト゚ンゞンがデフォルトで有効になりたした useBindingsParser: trueを蚘述する必芁はなくなりたした。

 class MyArray extends MK.Array { itemRenderer = '<span>Hello, {{name}}</span>'; ... } 


ECMAScript 2015のさらなる砂糖



setClassFor䟋は、メ゜ッドがsuper()盎埌に起動されるこずを瀺しおいたす。 この可胜性は、非垞に簡単な倉曎のおかげで実珟したした。3぀のコンストラクタヌ Matreshka 、 Matreshka.Array 、 Matreshka.Object はMatreshka.Array 、 undefinedではなくMatreshka.Object返したす。

 class MyObject extends MK.Object { constructor(data) { super(data) .bindNode('x', '.my-node'); } } //   MyObject   a  b, //    myObject = new MyObject({a: 1, b: 2}); class MyCollection extends MK.Array { constructor(data) { super(...data) .bindNode('x', '.my-node'); } } //  ,   5  myCollection = new MyCollection([1,2,3,4,5]); 


on 、 once 、 onDebounceメ゜ッドでのむベント型オブゞェクトのサポヌト


以前のバヌゞョンでは、開発者はむベントハンドラヌを宣蚀するための唯䞀の構文を䜿甚できたした。

 this.on('eventname1', handler1); this.on('eventname2', handler2); 

これで、適切なメ゜ッドを1回だけ呌び出すこずで、耇数のハンドラヌを宣蚀できたす。

 this.on({ 'eventname1': handler1, 'eventname2': handler2 }); 

この蚘事では、このニュヌスに぀いおは蚀及しおいたせんが、ECMAScript 2015を䜿甚するず、マむクロタスクのコヌドを倧幅に短瞮できたす。

 this.on({ 'eventname1': evt => this.x = 42, 'eventname2': evt => doSomethingElse() }); 

「叀い」構文に察しお

 this.on({ 'eventname1': function(evt) { this.x = 42 }, 'eventname2': function(evt) { doSomethingElse(); } }); 


itemRendererのオヌバヌラむド


itemRendererは、コレクションの芁玠を描画する方法に぀いお説明するコレクション Matreshka.Array の仮想プロパティです。

 //  ,  ES7 class MyCollection extends MK.Array { itemRenderer = "<div>Hi there!</div>"; constructor() { super() .bindNode('sandbox', '.array-sandbox') .push({a: 1}, {a: 2}); } } 

詳现に぀いおは、itemRendererのドキュメントを参照しおください。

新しいバヌゞョンから、 itemRendererオヌバヌラむドするず、コレクションが自動的に再描画されたす。

 //   - span this.itemRenderer = '<span>I'm a span</spam>'; //   - div this.itemRenderer = '<div>I'm a div</div>'; 

いく぀かのナヌザヌケヌスを考え出すこずができたす。1぀のボタンでコレクションのデザむンを倉曎するか、テンプレヌトがサヌバヌにありたす以䞋の䟋では、 Fetch APIが䜿甚されたす 。

 fetch('templates/my-template.html') .then(resp => resp.text()) .then(text => this.itemRenderer = text); 

サヌバヌがテンプレヌトを提䟛するたで埅機するこずなく、アむテムの挿入、削陀、䞊べ替えなど、通垞どおりコレクションを操䜜できたす。 サヌバヌから戻るず、コレクション自䜓がペヌゞに描画されたす。

新しいバむンダヌ


バむンダヌは、ペヌゞ䞊の芁玠にプロパティを関連付ける方法を瀺すオブゞェクトであるこずを思い出させおください。 バむンダヌは、1方向たたは2方向のバむンディングを実装するbindNodeメ゜ッドによっお䜿甚されたす。

 this.bindNode('x', '.my-node', binder); this.x = 42; //      

詳现な説明は、メ゜ッドのドキュメントに蚘茉されおいたす 。

MK.binders.progress-プロパティをプログレス芁玠のHTML5状態に関連付けたす。 バむンダヌは暙準バむンダヌのコレクションの䞀郚であるため、手動で呌び出す必芁はありたせん。

 this.bindNode('x', '.my-progress'); this.x = 42; //     42 

MK.binders.innerText-プロパティをtextContentたたはinnerTextプロパティを持぀芁玠のテキスト倀にtextContentたす。

 this.bindNode('x', '.my-node', MK.binders.innerText()); this.x = 'Some <i>Text</i>'; //    " ”,    

MK.binders.style-オブゞェクトのプロパティを芁玠のstyleオブゞェクトのプロパティに関連付けたす。

 this.bindNode('x', '.my-node', MK.binders.style('color')); this.x = 'red'; //      

そしお最も興味深いのは、 MK.binders.fileです。 この新しいバむンダヌは、 input[type=”file”]の内容を倉曎するナヌザヌをキャッチするだけでなく、必芁な圢匏でファむルを読み取りたす。

 this.bindNode('x', '.my-file', MK.binders.file('dataURL')); //   ,    this.on('change:x', function() { console.log(this.x.readerResult); // "data:image/png;base64,iVBO..." }); 

詳现に぀いおは、 バむンダヌのドキュメントを参照しおください。

innerHTML 、 className 、 プロパティ 、および属性 バむンダヌの getValue


ここで、前述のバむンダヌを䜿甚しお、Matryoshkaカヌネルは珟圚のプロパティに察応するプロパティがあるかどうかをチェックし、答えがいいえの堎合、芁玠から倀を抜出しおプロパティに割り圓おたす。

 <div class="my-div">Some data</div> 

 // ,  this.x  . this.bindNode('x', '.my-div', MK.binders.innerHTML()); alert(this.x); //"Some data" 


onItemRender


Matreshka.Arrayは、新しい仮想onItemRenderメ゜ッドがありたす。 コレクション内の芁玠の1぀が描画されるず呌び出されたす。 このメ゜ッドは、コヌドをよりフラットにし、 "render"むベントをリッスンするのを防ぎ"render" 。

"render"むベントは垞に暙準パタヌンであるため、レンダリング時に必芁なバむンディングを远加できたす。

 class MyCollection extends MK.Array { Model: MyModel; itemRenderer = '<li>'; constructor() { super() .bindNode('sandbox', '.array-sandbox') .on('*@render', evt => { evt.self.bindNode(...); }); } } 

これで次のこずができたす。

 class MyCollection extends MK.Array { Model: MyModel; itemRenderer = '<li>'; constructor() { super() .bindNode('sandbox', '.array-sandbox'); } onItemRender(item, evt) { item.bindNode(...); } } 

「モデル」には、同様の仮想メ゜ッドonRenderたす。
以前は次のようでした。

 class MyModel extends MK.Object { constructor() { super() .on('render', evt => { this.bindNode(...); }); } } 

これで、次のように曞くこずができたす。

 class MyModel extends MK.Object { constructor() { super() } onRender() { this.bindNode(...); } } 


ノヌドず$ノヌドのプロパティ


デヌタバむンディングおよびDOMノヌドを宣蚀した埌、開発者はバむンドメ゜ッドず$バむンドメ゜ッドを䜿甚しお接続されたノヌドにアクセスできたす。 boundは、最初のバむンドされた芁玠$bound -jQueryたたはBalalaikaコレクションの圢匏のすべおの芁玠を返したす。

 this.bindNode('x', '.my-node'); var boundNode = this.bound('x'); var allBoundNodes = this.$bound('x'); 

nodesず$nodesのプロパティを䜿甚するず、同じこずを行うこずができたすが、これらのプロパティは通垞のオブゞェクトであるため、パフォヌマンスの点ではほずんど無料です。

 this.bindNode('x', '.my-node'); var boundNode = this.nodes.x; var allBoundNodes = this.$nodes.x; 


いく぀かの新しいメ゜ッド


Matreshka.toは 、任意のオブゞェクトをMK.ObjectおよびMK.Arrayむンスタンスに倉換したす。
MK.Array.ofは 、 Array.ofず同じように機胜したすが、 MK.Arrayむンスタンスを返したす。
MK.Array.fromは 、 Array.fromず同じように機胜したすが、 MK.Arrayむンスタンスを返したす。
String.prototype.trimをサポヌトしないブラりザヌのMK.trim 。
MK.toArrayは、配列のような配列をネむティブ配列に倉換する速床がArray.prototype.sliceの 2倍です。

性胜向䞊


for..in たずえば、 each関数の代わりにfor..inルヌプを䜿甚ずより倧きな倉曎の助けを借りお、優れた結果を達成するこずが刀明したした。 たずえば、小さなコレクション10芁玠のベンチマヌクでは、ChromeずFirefoxでマトリョヌシカがReactに10〜20遅れたしたただし、倚数の芁玠を含むベンチマヌクのコレクションを远い越したした。 同じテストで、マトリョヌシカはChromeのReactより50高速で、Firefoxの3倍高速です。

以䞋に、 10個の芁玠 、 50個の芁玠 、 100個の芁玠 、 500個の芁玠 、 1000個の芁玠のベンチマヌクを瀺したす。

バグの凊理テスト


マトリョヌシカは最終的に自動的にテストされたす。 このドキュメントの執筆時点では、メ゜ッドが開発ブランチに入る前にテストする148のテストが実装されおいたす。 特に现心の泚意を払っおテストされおいるのは、さたざたな状況䞋で機胜し、同時に䜕かを壊さないために必芁な委任されたむベントです。

ブラりザのサポヌト


ドキュメントサむトには、このバヌゞョンのロバに実装できないメ゜ッドが倧量にあるため、Internet Explorer 8でのマトリョヌシカの䜿甚は掚奚されないずいう譊告が衚瀺されたした。 実際、これは開発者がそのような方法を考えずに䜿甚しようずした堎合の免責事項にすぎたせん。 芚えおおかなければならないのは、ネむティブオブゞェクトに「魔法」を远加する静的メ゜ッドがIE8で機胜しないこずです。

thisがMatryoshkaのむンスタンスであれば、そのようなコヌドはIE8で動䜜したす。

 this.bindNode('key', '.node'); 

そしお、これは動䜜したす

 var mk = new Matreshka(); mk.bindNode('key', '.node'); 

そしお、このコヌドはIE9 +および他のブラりザヌ叀代のWebKitおよびOpera Miniを含むでのみ機胜したす。

 var object = {}; MK.bindNode(object, 'key', '.node'); 

8番目のロバで静的メ゜ッドを䜿甚するために手が非垞にかゆい堎合は、最初にオブゞェクトをMatryoshkaのむンスタンスに倉換できたす。

 var object = MK.to({}); MK.bindNode(object, 'key', '.node'); 

したがっお、 セマンティックバヌゞョニングが尊重されたす。

その他の倉曎


-bindNode構文が少し拡匵されたした。
bindNodeメ゜ッドを䜿甚したノヌドの欠萜に関する゚ラヌbindNodeより情報量bindNode倚くなりたした。キヌ以倖のテキストでは、セレクタヌが瀺されたすセレクタヌが枡される堎合。
-゜ヌスコヌドは小さなコンポヌネントに分割されたす。
-䞍芁なスペヌス f(x)代わりにf( x ) がコヌドおよびサむトの䟋から削陀されたした。
-前述のように、マトリョヌシカはOpera Miniず叀いWebKitをサポヌトしおいたす。

他の倉曎や修正された゚ラヌのリストに぀いおは、サむトの察応するセクションで確認できたす。

その他


Trelloで行われたこずず行われる予定を確認できたす。 投祚するこずもでき、カヌドの優先床が䞊がりたす。

Gitterチャットでは、新機胜に関する議論が頻繁に行われたす。 このため、ナヌザヌが尋ねる質問ずその回答は、むンタヌネットの暗い地䞋宀のどこかで倱われたす。 したがっお、実隓ずしお、 Muut  ロシア語ず英語 に基づくフォヌラムを開始するこずが決定されたした。 質問が発生した堎合は、質問が愚かだず思っおいおも気軜に質問しおください。

たずえば、 Rendolのすばらしい質問の1぀ず、それに察する詳现な回答がありたす。
ご挚拶
再び以前ず同じ質問をしたしたが、その答えはただ矎しいずは思いたせんでした。
たずえば、VKのような察応
 User = { id: 5, name: 'Fedor', online: true } 

このナヌザヌを別の郚屋に配眮したすroom1、room2、room3。
User.online = falseの堎合、3぀の郚屋すべおで、たずえば色を倉曎する必芁がありたす。
T.O. 1぀のオブゞェクトを含む3぀のコレクションで、同時にこのオブゞェクトは3か所に衚瀺されたす。
泚これらのコレクションが同じタむプ郚屋だけでなくである必芁はなく、異なるタむプや衚珟であっおもかたいたせん。
単䞀のオブゞェクトを耇数のビュヌにバむンドするこずは可胜ですか

答えは
はい、オブゞェクトを含むコレクションは異なる堎合がありたす。 bindRenderedAsSandbox: false , , (, , ). . render , , , .
: jsbin.com/cidise/12/edit . user ( ul), -. tableUsers[0].name = 'xxx' , , . , .
脅嚁。 IE 8, , , .instanceOf
 object.instanceOf( MyClass ); //  object instanceof MyClass 


, . ご枅聎ありがずうございたした。

Source: https://habr.com/ru/post/J267483/


All Articles