ã¿ãªããããã«ã¡ã¯ã Matreshka.jsãã¬ãŒã ã¯ãŒã¯ã®æ¬¡ã®ããŒãžã§ã³0.2ãžã®æŽæ°ã玹ä»ããŸãã ãããªã§ãŒã·ã«ã¯ããªãŒãã³ãœãŒã¹ã³ãŒããåããæ±çšãã¬ãŒã ã¯ãŒã¯ã§ããããã®ã€ããªãã®ãŒã¯å€èŠ³ãããããŒã¿ã®åªäœæ§ã§ãïŒã€ã³ã¿ãŒãã§ãŒã¹ãããŒã¿ãšåæããæ¹æ³ã®ã«ãŒã«ãèšå®ããã€ã³ã¿ãŒãã§ãŒã¹ã€ãã³ããããŒã¿ã«é¢ä¿ããªãå Žåãé€ããããŒã¿ã®ã¿ã§åäœããŸãããã¿ã³ãã¯ãªãã¯ãããããã©ãŒã ãéä¿¡ããã ãã§ã¯ãããŒã¿ã¯å€æŽãããŸããããé¢æ°ãèµ·åãããããŒã¿ãåŠçãããŸãïŒ
Matryoshkaã¯ãéåæã¢ãžã¥ãŒã«å®çŸ©ä»æ§ããµããŒãããããã«ãªããŸããã èšãæããã°ããããªã§ãŒã·ã«ã¯
ãããªã©ã€ãã©ãªãŒãšäºææ§ããããŸãã ããã¯ãã°ããŒãã«åå空éãæãªãããšãªããtru-codeãèšè¿°ã§ããããã«ãªã£ãããšãæå³ããŸãã 2ã€ã®æ¥ç¶ã¿ã€ãããµããŒããããŠããŸããååä»ãã¢ãžã¥ãŒã«èŠæ±ãšååãªãã¢ãžã¥ãŒã«èŠæ±ã§ãã
ããããããã¯ãããæ°ãããããžã§ã¯ããã¡ã€ã«æ§é ã䜿çšããããšã®å¯äœçšã§ãã ãããŠãæšå¥šãããæ¹æ³ã¯ãååã®ãªãã¢ãžã¥ãŒã«ããªã¯ãšã¹ãããããšã§ãïŒ
ããããã£ãå«ãŸããŠããŸããããã¯ãã¯ã©ã¹ãäœæããé¢æ°ãè€è£œããŸããè¿œå ã®ã¢ãžã¥ãŒã«ãèŠæ±ããå¿
èŠã¯ãããŸããã
1. addDependence
ã®ããã³ããã§addDependence
ã¡ãœããã®ååãaddDependency
ã«å€æŽããaddDependency
ãïŒåœŒã«æè¬ããŸãïŒãå€ãã¡ãœããã¯ãéæšå¥šããšããŒã¯ãããŠããŸãã
2.ã¡ãœããã¯ãä»ã®ã¯ã©ã¹ã®ããããã£ã«äŸåé¢ä¿ãè¿œå ããçŽæãããæ©èœããµããŒãããããã«ãªããŸããã 2çªç®ã®åŒæ°ã®æ§æã¯æ¬¡ã®ãšããã§ãã [ , "", , "", , "" ... ]
-å¥æ°èŠçŽ ãæã€é
å-ã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ãå¶æ°-ãããã®ã€ã³ã¹ã¿ã³ã¹ã®ããŒãç®çã®ããããã£ãäŸåããŸãã äŸãèŠãŠã¿ãŸãããïŒ
this.addDependency( 'a', [ anotherInstance1, 'b', this, 'c', anotherInstance2, 'd' ], function( b, c, d ) { return b + c + d; });
ããã§ãããããã£"a"
"b"
ã¯ã anotherInstance1
ãªããžã§ã¯ãã®ããããã£"b"
ã anotherInstance1
ãªããžã§ã¯ãã®ããããã£"d"
anotherInstance2
ããã³ç¬èªã®ããããã£"c"
äŸåããŸãã å€ãæ§æã¯åŒãç¶ãæ©èœããŸãã
this.addDependency( 'a', 'b c', function( b, c ) { return b + c; });
3.å®å
šãªäžæ¯ã ãã®ç¹ã¯æ§æã«åœ±é¿ãäžããŸããããã®ãªãªãŒã¹ä»¥éã addDependency
䜿çšãããå Žåãã¡ãœããã¯ç¡éã«ãŒããåé¿ããŸãã ããããã£"b"
ãããããã£"b"
äŸåããããããã£"b"
ãããããã£"c"
äŸåããããããã£"c"
ãé çªã«"b"
äŸåããç¶æ³ãæ³åããŠãã ããã ããšãã°ãæœè±¡çãªå³ïŒ
this.addDependency( 'a', 'b', function( b ) { return b * 2; }); this.addDependency( 'b', 'c', function( c ) { return c * 3; }); this.addDependency( 'c', 'a', function( a ) { return a / 5; });
ãã®ã³ãŒãã®åäŸåé¢ä¿ã«ããã次ã®åå ãçããçµæãšããŠããŒãžãã¶ãäžãããŸãã ãã®ãããªãšã©ãŒã«å¯Ÿããä¿è·ãç»å ŽããŸãããã³ãŒãã¯äŸåé¢ä¿ã®ãã§ãŒã³å
šäœã«ç¹å¥ãªãã©ã°ãæž¡ãããã¬ãŒã ã¯ãŒã¯ãæœåšçã«å±éºãªäŸåé¢ä¿ã«éãããšãã§ãŒã³ãåæ¢ããŸãã æ°ãããã©ãŒã ã®addDependency
ã䜿çšãããšãè€éãªïŒãŸãã¯ããã§ã¯ãªãïŒæ°åŒã«åºã¥ããŠçžäºäŸåé¢ä¿ãæ§ç¯ã§ããŸãããããã®æ°åŒã®å®è£
ã«ãšã©ãŒãçããå¿é
ã¯ãããŸããã 蟺ã®é·ãã§é·æ¹åœ¢ã®åšå²ãèšç®ãã蟺ã®é·ããèšç®ããäŸïŒ
this.addDependency( 'p', 'a b', function( a, b ){ return (a + b) * 2; }); this.addDependency( 'a', 'p b', function( p, b ){ return p/2 - b; }); this.addDependency( 'b', 'p a', function( p, a ){ return p/2 - a; });
次ã®ç¶æ³ãæ³åããŠãã ããïŒç§ã®ç·Žç¿ããåãããŸãïŒã ãã§ãã¯ããã¯ã¹ãªã©ãããã€ãã®ããã¹ããã£ãŒã«ããæã€ãã©ãŒã ããããŸãããã©ãŒã èŠçŽ ã®1ã€ã®å€ãå€æŽããããšãã¢ããªã±ãŒã·ã§ã³ã¯ãµãŒããŒã«ãªã¯ãšã¹ããéä¿¡ããå¿
èŠãããããµãŒããŒã¯3ã€ã®ã°ã©ããã¬ã³ããªã³ã°ããããã®ããŒã¿ãè¿ããŸãã ã°ã©ãã®æç»ã¯ããã»ããµã«ãšã£ãŠé£ããã¿ã¹ã¯ã§ããã匱ãã³ã³ãã¥ãŒã¿ãŒïŒ Highchartsãªã©ïŒ ã§ã¯0.5ç§ããããŸãã éå±ããŠããŠããã§ãã¯ããã¯ã¹ãç¹°ãè¿ãã¯ãªãã¯ããããšã«ãããŠãŒã¶ãŒãæ³åããŠãã ããã ã©ããªãã®ïŒ å€æ°ã®ãªã¯ãšã¹ããéä¿¡ãããå€æ°ã®åçãè¿ãããŸããããã«ãããã°ã©ããäœåºŠãæç»ãããŸãã ãã®å Žåã圌ãã¯éåžžäœãããŸããïŒ ãµãŒããŒèŠæ±ããã£ã³ã»ã«ããŸãã åé¡ã¯ãèœã¡çããŸã§åŸ
ã€ããšãã§ããã®ã«ããªããã®ãªã¯ãšã¹ããéä¿¡ãããã®ããšããããšã§ãã :)
ãã®åé¡ã解決ããããã«ãæãåçŽãªé¢æ°ïŒããããèªè»¢è»ïŒã䜿çšããŸããããã®é¢æ°ã¯åŒæ°ãšããŠå¥ã®é¢æ°ãåãããã®å€æŽãè¿ããŸãããã®é¢æ°ã¯äžå®æéã«1åããå®è¡ã§ããŸããã ãããªãã§ã¯åäžã®ãããžã§ã¯ãã§ã¯ã§ããªãããããããªã§ãŒã·ã«ã³ãŒãã«å«ããããšã決å®ãããŸããã äŸïŒ
var doSomethingHeavy = function( i ) { console.log( 'Ok', i ); }; var procrastinateSomethingHeavy = MK.procrastinate( doSomethingHeavy ); for( var i = 0; i < 100; i++ ) { procrastinateSomethingHeavy( i ); }
æ©èœã³ãŒãïŒãããªã§ãŒã·ã«ä»¥å€ã§äœ¿çšãããå ŽåïŒïŒ
var procrastinate = function ( f, d, thisArg ) { var timeout; if( typeof d !== 'number' ) { thisArg = d; d = 0; } return function() { var args = arguments, _this = this; clearTimeout( timeout ); timeout = setTimeout( function() { f.apply( thisArg || _this, args ); }, d || 0 ); }; };
ãã®ã¡ãœããã¯ããåŠçãããé¢æ°ã«å ããŠãé
延ãšã³ã³ããã¹ããåŒæ°ãšããŠåããŸãã é
延ã¯ã次ã«åŒã³åºããããšãã«å®éã®é¢æ°åŒã³åºããäœããªç§é
延ãããã決å®ããŸãã
ãããŠãããã¯é¢æ°ã決ããŠåŒã³åºããªãå Žåã®äŸã§ãïŒç解ãæ·±ããããïŒã
var procrastinateSomethingHeavy = MK.procrastinate( function() { console.log( 'Ok' ); }, 1000 ); setInterval( function() { procrastinateSomethingHeavy(); }, 500 );
æ°ãããã€ã³ãããŒã®initialize
ãã€ã³ããŒã¯ã Matreshka #bindElementã¡ãœããã® 3çªç®ã®åŒæ°ã§ãã èŠããŠããå Žåãããã¯3ã€ã®ããããã£ã§æ§æããããªããžã§ã¯ãã§ãïŒ on
ïŒããããã£ãæŽæ°ããDOMã€ãã³ãã«ãã£ãŠïŒã getValue
ïŒèŠçŽ ããããããã£ã®å€ãæœåºããæ¹æ³ïŒã setValue
ïŒããããã£ã®å€ãèŠçŽ ã«èšå®ããæ¹æ³ïŒã 詳现ã¯ãã¡ããã芧ãã ãã ïŒãšããã§ããããªã§ãŒã·ã«ã«é¢ãããã¹ãŠã®èšäºã¯ãªãªãŒã¹ããšã«æŽæ°ãããé¢é£è³æã§ãïŒã çŸåšãå¥ã®ãªãã·ã§ã³ã®ããããã£initialize
ã
initialize
ã¯ããã€ã³ãã£ã³ã°äžããŸãã¯ãã®åã«éå§ããé¢æ°ã§ãã é¢æ°ã®ã¿ã¹ã¯ã¯ã³ãŒããçãããããšã§ãã æåã®èšäºã®äŸãã芧ãã ãã ã
ãŸãããã€ã³ãããåã«ãã¹ã©ã€ããŒã宣èšããŸãã
<div class="slider"></div>
$( ".slider" ).slider({ min: 0, max: 100 });
次ã«ããããªã§ãŒã·ã«ã®ã€ã³ã¹ã¿ã³ã¹ã宣èšããŸãã
var mk = new Matreshka();
次ã«ããã€ã³ãã£ã³ã°ãåŒã³åºããŸãã
mk.bindElement( 'x', '.slider', { on: 'slide',
ã³ãŒãã¯ããåé·ã§ãã slider
ã¯ã©ã¹ã䜿çšããŠèŠçŽ ã«2åã¢ã¯ã»ã¹ããŸãïŒæåã«ãã©ã°ã€ã³ã䜿çšããŠãããèŠçŽ ããã€ã³ãããŸãïŒã ããã¯åé¿ã§ããŸãïŒ
var mk = new Matreshka(); mk.bindElement( 'x', '.slider', { initialize: function() { $( this ).slider({ min: 0, max: 100 }); }, on: 'slide', getValue: function() { return $( this ).slider( 'option', 'value' ); }, setValue: function( v ) { $( this ).slider( 'option', 'value', v ); } });
ãæ³åã®ãšããããã®æ°ããã¡ãœããã¯ããããã£ã®ã»ãã¿ãŒãå®çŸ©ããŸãã
this.defineSetter( 'x', function( value ) { return alert( value ); });
ã¡ãœããã䜿çšããå Žåãçµã¿èŸŒã¿ã®ããããã£ã»ãã¿ãŒïŒååšããå ŽåïŒãã°ã©ã€ã³ãããããããã£å€æŽã€ãã³ããæ©èœããªãããšãèŠããŠããå¿
èŠããããŸãã
this.x = 1; this.on( 'change:x', function( evt ) {
ã€ãã³ãåã®æ°ããæ§æïŒããããã£ããã³ã³ã¬ã¯ã·ã§ã³ã¢ã€ãã ã®ã€ãã³ããã³ãã©ãŒã®è¿œå
ããããããã®ãªãªãŒã¹ã§æãéèŠãªããšã¯ãã€ã³ã¹ã¿ã³ã¹ã®å
éšã³ã³ãã³ãã«ã€ãã³ããã³ãã©ãŒãè¿œå ããæ©èœã§ãã
ã€ãã³ã"@_"
ããããã£å€ãMatryoshkaã®ã€ã³ã¹ã¿ã³ã¹ã§ããå Žåã Matryoshkaããç¶æ¿ããã¯ã©ã¹ïŒ MK.Objectããã³MK.Arrayãå«ãïŒå
ã«ããããã£ã®ãã³ãã©ãŒãè¿œå ã§ããããã«ãªããŸããã äŸãèŠãŠã¿ãŸãããïŒ
var mk = new MK; mk.on( 'x@yeah', function() { alert( 'yeah' ); }); mk.x = new MK; mk.x.trigger( 'yeah' );
ããããã£ãå®çŸ©ãããé åºãããã³ãã³ãã©ãŒãã¢ã¿ãããããšãã¯éèŠã§ã¯ãªãããšã«æ³šæããŠãã ãããæåã«ã€ãã³ããã³ãã©ãŒãè¿œå ããŠãããããããã£ã宣èšã§ããŸãã ããã«ãããããã£ã®å€ãå€æŽãããå Žåããã³ãã©ãŒã¯æ°ããå€ã«å¯ŸããŠã®ã¿æ©èœããå€ãå€ã«å¯ŸããŠã¯ãã³ãã©ãŒãåé€ãããŸãã
MK.Object
ã€ãã³ã"@_"
ãã®ã€ãã³ãåã䜿çšãããšã MK.Object
ã€ã³ã¹ã¿ã³ã¹ã®JSONããŒã®ãã³ãã©ãŒãè¿œå ã§ããŸãïŒJSONããŒãŸãã¯ããŒã¿ãæ
åœããããŒã«ã€ããŠã¯ãMK.Objectã«é¢ããèšäºãåç
§ããŠãã ãã ïŒã
var mkObject = new MK.Object; mkObject.on( '@yeah', function() { alert( 'yeah' ); }); mkObject.jset( 'x', new MK ); mkObject.x.trigger( 'yeah' );
ããããã£ã宣èšãããé åºãšã€ãã³ããã³ãã©ãŒãéèŠã§ã¯ãããŸããã
MK.Array
ã€ãã³ã"@_"
MK.Object
ãšåæ§ã«ã MK.Object
ãåãæ©äŒããããŸãããã®èŠçŽ ãMK.Object
ããMK.Object
ããå Žåããã³ãã©ãŒã¯é
åã®ä»»æã®èŠçŽ ã«ãã³ã°ã¢ããããŸãã
var mkArray = new MK.Array; mkArray.on( '@yeah', function() { alert( 'yeah' ); }); mkArray.push( new MK ); mkArray[ 0 ].trigger( 'yeah' );
ãããã®3ã€ã®å€æŽã¯ã "yeah"
ã€ãã³ãããªãã¹ã³ããã ãã§ãªãã "change:"
ãªã©ã®ä»ã®ã€ãã³ããå®å¿ããŠãªãã¹ã³ã§ããŸã"change:"
this.on( 'x@change:y', function() { } ); this.on( '@change:y', function() { } );
çè«çã«ã¯ããã®æ©èœã䜿çšãããšãããŒã¿ããªãŒã®æ·±éšã«ããä»ã®ã€ãã³ãããªãã¹ã³ããããšã§ãåã£ãã€ãã³ãåãäœæã§ããŸãã ãªããžã§ã¯ããšããŠè¡šçŸã§ããããŒã¿æ§é ããããšããŸãããïŒ
{ a: [{ b: { c: { e: 1 } } }, { b: { d: { e: 2 } } }] }
"e"
ããããã£ã®å€æŽã®æåŸã«å°éããã«ã¯ã次ã®ãããªãã³ãã©ãŒãè¿œå ã§ããŸãã
this.on( 'a@@b@@change:e', function() { } );
ãããªã§ãŒã·ã«ã«ã¯ããã€ã³ããããèŠçŽ ãè¿ã2ã€ã®ã¡ãœããããããŸããæåã®ãã€ã³ããããèŠçŽ ãŸãã¯null
ãè¿ãMatreshkaïŒboundãš ããã€ã³ããããèŠçŽ ã®ã³ã¬ã¯ã·ã§ã³ãè¿ãMatreshkaïŒboundAllã§ãã ããã¯ããã³ã¬ã¯ã·ã§ã³ããšããçšèªãç解ãããã«ãç¥ãããšã«æ
£ããŠããã VanillaJSã«ç²ŸéããŠããªãjQueryã䜿çšããåå¿è
ã«åé¡ãåŒãèµ·ããå¯èœæ§ããããŸãã ãããã£ãŠã $bound
ã¡ãœããããã¬ãŒã ã¯ãŒã¯ã«è¿œå ããã MatreshkaïŒboundAllãšãŸã£ããåãããšãè¡ããŸãã ã
this.bindElement( 'a', '#x, #y' ); this.$bound( 'a' ).animate( );
ãã®ä»ã®å€æŽ
ããŒãžã§ã³0.1ããããããªã§ãŒã·ã«ã¯jQueryãããŒãžäžã«ãªãå ŽåãBalaalaikaãã€ã¯ãã©ã€ãã©ãªã䜿çšããŠjQueryã®ããŒãäŸåé¢ä¿ãåãé€ããŸããã ãã®å€æŽã®çµæã¯ãjQueryã®ååšã«é¢ä¿ãªãã usejQuery
ã¡ãœããïŒjQueryãuseBalalaika
åŸã«æ¥ç¶ãããå ŽåïŒãšuseBalalaika
ïŒjQueryãuseBalalaika
åã«æ¥ç¶ãããå ŽåïŒã䜿çšããŠã usejQuery
2ã€ã®ã©ã€ãã©ãªã®ããããã䜿çšãã2ã€ã®ã¡ãœããã®äœæã§ãããã ããçµã¿èŸŒã¿ã©ã€ãã©ãªãåŒãç¶ã䜿çšããå¿
èŠããããŸãïŒã ä»ã§ã¯ãjQueryã®ãããªã©ã€ãã©ãªãäžè¬ã«äœ¿çšã§ããã¡ãœãããèžã£ãŠããŸãïŒ usejQuery
ãšuseBalalaika
ã¯éæšå¥šãšããŠããŒã¯ãããŠããŸãïŒã
䜿çšäŸïŒ
MK.useAs$( jQuery ); MK.useAs$( jQuery.noConflict() ); MK.useAs$( Zepto ); MK.useAs$( MK.$b );
ãã®å€æŽã®çµæããããªã§ãŒã·ã«ã¯ãããŒãããŠãjQueryã®ã¿ã䜿çšãã代ããã«ããã«èšå·ã©ã€ãã©ãªãååšããç¹å®ã®ã¡ãœãããããã°ããã䜿çšããŸãã ãããžã§ã¯ããã¡ã€ã«ã®ãœãŒã¹ã³ãŒãã®ã©ã®ã¡ãœãããæ£ç¢ºã«èŠã€ããããšãã§ããŸã ã
ã¯ã©ã¹ã«ã·ã¿ãã¯ã¹ã·ã¥ã¬ãŒãè¿œå ããå°ããªå€æŽïŒ ç¶æ¿ã«é¢ããèšäºãåç
§ïŒã å€ãã®å Žåãã¯ã©ã¹ãäœæãããšãããã®ã¯ã©ã¹ã®ã³ã³ã¹ãã©ã¯ã¿ãŒã¯ãç¬èªã®ã³ã³ããã¹ãã§èŠªã®ã³ã³ã¹ãã©ã¯ã¿ãŒãåŒã³åºãã ãã§æžã¿ãŸãã
var MyClass = Class({ 'extends': AnotherClass, constructor: function() { AnotherClass.call( this, arguments ); }, someNewMethod: function() { } });
åãããšãããç°¡æœã«ã§ããããã«ãªããŸããã
var MyClass = Class({ 'extends': AnotherClass, constructor: AnotherClass.same(), someNewMethod: function() { } });
èŠçŽ ããã€ã³ããããåã«DOMã€ãã³ããã³ãã©ãŒïŒããšãã°ã "click::x"
ïŒãè¿œå ãã
Matryoshkaã«ã¯ã MatreshkaïŒonã¡ãœããã䜿çšããŠãæ·»ä»ãããèŠçŽ ã«ã€ãã³ããã³ãã©ãŒãæ·»ä»ããæ©èœããããŸãã
this.bindElement( 'x', '.my-element' ); this.on( 'click::x', function() { alert( '.my-element is clicked' ); });
åé¡ã¯ãèŠçŽ ããã€ã³ããããåã«ã³ã¬ã¯ã·ã§ã³DOMãã³ãã©ãŒãè¿œå ã§ããªãã£ãããšã§ãã bind
ã€ãã³ããåŸ
ã£ãŠããã®ã€ãã³ããçºçãããšãã«ãã³ãã©ãŒãè¿œå ããããšã§ãåé¯ããå¿
èŠããããŸããã
this.on( 'bind:x', function() { this.on( 'click::x', function() { alert( '.my-element is clicked' ); }); }); this.bindElement( 'x', '.my-element' );
ããã§ãDOMã€ãã³ãã®ãã€ã³ã/è¿œå ã®é åºã¯éèŠã§ã¯ãªããªããŸããã
this.on( 'click::x', function() { alert( '.my-element is clicked' ); }); this.bindElement( 'x', '.my-element' );
ãã°ä¿®æ£/ãªãã¡ã¯ã¿ãªã³ã°
- Matreshka.ArrayïŒinitializeSmartArray ïŒæäœäžã®ã¡ãœããã®ããã¥ã¡ã³ãïŒã
this
è¿ãthis
- Matreshka.ArrayïŒcreateFromã¯åŒæ°ãšããŠ
undefined
ãåããŸã - Matreshka.Arrayã¯ã©ã¹ã«å¯ŸããŠ
"modify"
ã€ãã³ããçºç"modify"
ã±ãŒã¹ãå€æŽããŸãã Matreshka.Array
ã¯åãååã®ã€ãã³ãããããŸãããå¥ã®å Žåã«çºçãããããããããã£ã"remove"
ã§ã¯ãªãåé€ããããšã Matreshka.Array
ã"delete"
ã€ãã³ããçºçãããããã«ãªããŸãã[].forEach
ãååšããªãå Žåã es5-shimãæå¹ã«ããããã®ææ¡ãšãšãã«ãšã©ãŒãçæãããŸã- ãã©ã©ã€ã«ããŒãµãŒã®ãã°ãä¿®æ£
- MatreshkaïŒäžåºŠã®ã¡ãœããã®ãã°ãä¿®æ£ããã MatreshkaïŒoffã¡ãœããã䜿çšããŠãã³ãã©ãŒãåé€ã§ããããã«ãªããŸãã
- ãã©ã€ã¢ã
eventName + eventHandler + context
ã¯ãã€ã³ã¹ã¿ã³ã¹ããšã«1åã®ã¿è¿œå ã§ããããã«ãªããŸãã Class
é¢æ°ã®ãã°ãä¿®æ£ïŒ splice
vs slice
ïŒ- MatreshkaïŒonããã³MatreshkaïŒoffã¡ãœããã®ãªãã¡ã¯ã¿ãªã³ã°
- å°ããªãªãã¡ã¯ã¿ãªã³ã°MatreshkaïŒããªã¬ãŒãšMKïŒã»ãã
次ã¯ïŒ
1.次ã®èšäºã§ã¯ãTodoMVCã®å®è£
ã«ã€ããŠçŽ¹ä»ããŸãã èšäºã®æºåã¯ã§ããŠããŸãããç·šéãå¿
èŠã§ãã å®è£
ãæºåãã§ããŠããŸãããããã¥ã¡ã³ãã¯æŽæ°ãããŠããŸãã
2.ãã®åŸã MK.Array
ã«é¢ãã倧ããªèšäºãèšç»ããã以åã®èšäºã眮ãæããããŸãã ããã§ãã¡ãœãããé
åã®èŠçŽ ãã¬ã³ããªã³ã°ãããæ¹æ³ããã¢ãã«ããããã³é
åã¡ãœããã«ãªãã·ã§ã³ãæž¡ãæ¹æ³ã«ã€ããŠè©³ãã説æããŸãã
3.æ¢ã«ãã¹ããããŠããå€æ°ã®èå³æ·±ãå€æŽãå«ãããŒãžã§ã³0.3ã ãã€ãã®ããã«ãèšäºããããŸãã
ãã®åŸãããã¹ãã®ã³ãŒãã³ã°ãè±èªã«é¢é£ãããšã©ãŒã®ä¿®æ£ãªã©ãããã¥ã¡ã³ãã®å€§èŠæš¡ãªã¬ãã¥ãŒãè¡ãããŸãã ã¡ã€ã³ããŒãžãšããããªã§ãŒã·ã«ãéžã¶çç±ã ããŒãžã®ããã¹ãã¯æ¢ã«ä¿®æ£ãããŠããŸãã
ãã¹ãŠã«è¯ãïŒ