Skip to content

Commit 8b643b1

Browse files
committed
add
1 parent 99a183a commit 8b643b1

File tree

7 files changed

+6467
-5560
lines changed

7 files changed

+6467
-5560
lines changed

dist/avalon.js

Lines changed: 22 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/*! built in 2016-5-20:15 version 2.01 by 司徒正美 */
1+
/*! built in 2016-5-20:16 version 2.01 by 司徒正美 */
22
(function webpackUniversalModuleDefinition(root, factory) {
33
if(typeof exports === 'object' && typeof module === 'object')
44
module.exports = factory();
@@ -5698,11 +5698,12 @@ return /******/ (function(modules) { // webpackBootstrap
56985698
var rforAs = /\s+as\s+([$\w]+)/
56995699
var rident = __webpack_require__(40).ident
57005700
var update = __webpack_require__(43)
5701-
5701+
var Cache = __webpack_require__(26)
5702+
var loopCache = new Cache(600)
57025703
var rinvalid = /^(null|undefined|NaN|window|this|\$index|\$id)$/
5703-
function getTrackKey(item){
5704-
var type = typeof item
5705-
return item && type === 'object' ? item.$hashcode : type + item
5704+
function getTrackKey(item) {
5705+
var type = typeof item
5706+
return item && type === 'object' ? item.$hashcode : type + item
57065707
}
57075708

57085709
avalon._each = function (obj, fn) {
@@ -5720,32 +5721,29 @@ return /******/ (function(modules) { // webpackBootstrap
57205721
}
57215722
}
57225723
}
5723-
var loopMap = {}
5724-
function getLoopValue(object){
5725-
if(Array.isArray(object)){
5726-
return object.length+"|"+object.map(getTrackKey).join(';;')
5727-
}else{
5724+
5725+
function getLoopValue(object) {
5726+
if (Array.isArray(object)) {
5727+
return object.length + "|" + object.map(getTrackKey).join(';;')
5728+
} else {
57285729
var size = 0
57295730
var arr = []
5730-
for(var i in object){
5731-
if(object.hasOwnProperty(i)){
5731+
for (var i in object) {
5732+
if (object.hasOwnProperty(i)) {
57325733
size++
57335734
arr.push(i)
57345735
}
57355736
}
5736-
return size+"|"+arr.join(';;')
5737+
return size + "|" + arr.join(';;')
57375738
}
57385739
}
57395740

5740-
avalon._checkLoopChange = function(key, obj){
5741+
avalon._checkLoopChange = function (key, obj) {
57415742
var cur = getLoopValue(obj)
5742-
if(!(key in loopMap)){
5743-
loopMap[key] = cur
5744-
return true
5745-
}
5746-
if(cur !== loopMap[key]){
5747-
loopMap[key] = cur
5748-
return true
5743+
var old = loopCache.get(key)
5744+
if (typeof old !== 'string' || cur !== old) {
5745+
loopCache.put(key, cur)
5746+
return true
57495747
}
57505748
return false
57515749
}
@@ -5765,15 +5763,15 @@ return /******/ (function(modules) { // webpackBootstrap
57655763

57665764
var arr = str.replace(rforPrefix, '').split(' in ')
57675765
var assign = 'var loop' + num + ' = ' + avalon.parseExpr(arr[1]) + '\n'
5768-
var isChange = el.signature+'.hasChange = avalon._checkLoopChange("'+el.signature+'", loop' + num + ')\n'
5766+
var isChange = el.signature + '.hasChange = avalon._checkLoopChange("' + el.signature + '", loop' + num + ')\n'
57695767

57705768
var alias = aliasAs ? 'var ' + aliasAs + ' = loop' + num + '\n' : ''
57715769
var kv = arr[0].replace(rforLeft, '').replace(rforRight, '').split(rforSplit)
57725770
if (kv.length === 1) {//确保avalon._each的回调有三个参数
57735771
kv.unshift('$key')
57745772
}
57755773
//分别创建isArray, ____n, ___i, ___v, ___trackKey变量
5776-
return assign +isChange+ alias + 'avalon._each(loop' + num + ', function(' + kv + ', traceKey){\n'
5774+
return assign + isChange + alias + 'avalon._each(loop' + num + ', function(' + kv + ', traceKey){\n'
57775775

57785776
},
57795777
diff: function (current, previous, steps, __index__) {
@@ -5893,7 +5891,7 @@ return /******/ (function(modules) { // webpackBootstrap
58935891
}
58945892

58955893
var domTemplate = avalon.parseHTML(vnode.template)
5896-
5894+
58975895
var key = vnode.signature
58985896
for (var i in vnode.removedComponents) {
58995897
var el = vnode.removedComponents[i]

dist/avalon.modern.js

Lines changed: 22 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/*! built in 2016-5-20:15 version 2.01 by 司徒正美 */
1+
/*! built in 2016-5-20:16 version 2.01 by 司徒正美 */
22
(function webpackUniversalModuleDefinition(root, factory) {
33
if(typeof exports === 'object' && typeof module === 'object')
44
module.exports = factory();
@@ -3347,11 +3347,12 @@ return /******/ (function(modules) { // webpackBootstrap
33473347
var rforAs = /\s+as\s+([$\w]+)/
33483348
var rident = __webpack_require__(40).ident
33493349
var update = __webpack_require__(43)
3350-
3350+
var Cache = __webpack_require__(26)
3351+
var loopCache = new Cache(600)
33513352
var rinvalid = /^(null|undefined|NaN|window|this|\$index|\$id)$/
3352-
function getTrackKey(item){
3353-
var type = typeof item
3354-
return item && type === 'object' ? item.$hashcode : type + item
3353+
function getTrackKey(item) {
3354+
var type = typeof item
3355+
return item && type === 'object' ? item.$hashcode : type + item
33553356
}
33563357

33573358
avalon._each = function (obj, fn) {
@@ -3369,32 +3370,29 @@ return /******/ (function(modules) { // webpackBootstrap
33693370
}
33703371
}
33713372
}
3372-
var loopMap = {}
3373-
function getLoopValue(object){
3374-
if(Array.isArray(object)){
3375-
return object.length+"|"+object.map(getTrackKey).join(';;')
3376-
}else{
3373+
3374+
function getLoopValue(object) {
3375+
if (Array.isArray(object)) {
3376+
return object.length + "|" + object.map(getTrackKey).join(';;')
3377+
} else {
33773378
var size = 0
33783379
var arr = []
3379-
for(var i in object){
3380-
if(object.hasOwnProperty(i)){
3380+
for (var i in object) {
3381+
if (object.hasOwnProperty(i)) {
33813382
size++
33823383
arr.push(i)
33833384
}
33843385
}
3385-
return size+"|"+arr.join(';;')
3386+
return size + "|" + arr.join(';;')
33863387
}
33873388
}
33883389

3389-
avalon._checkLoopChange = function(key, obj){
3390+
avalon._checkLoopChange = function (key, obj) {
33903391
var cur = getLoopValue(obj)
3391-
if(!(key in loopMap)){
3392-
loopMap[key] = cur
3393-
return true
3394-
}
3395-
if(cur !== loopMap[key]){
3396-
loopMap[key] = cur
3397-
return true
3392+
var old = loopCache.get(key)
3393+
if (typeof old !== 'string' || cur !== old) {
3394+
loopCache.put(key, cur)
3395+
return true
33983396
}
33993397
return false
34003398
}
@@ -3414,15 +3412,15 @@ return /******/ (function(modules) { // webpackBootstrap
34143412

34153413
var arr = str.replace(rforPrefix, '').split(' in ')
34163414
var assign = 'var loop' + num + ' = ' + avalon.parseExpr(arr[1]) + '\n'
3417-
var isChange = el.signature+'.hasChange = avalon._checkLoopChange("'+el.signature+'", loop' + num + ')\n'
3415+
var isChange = el.signature + '.hasChange = avalon._checkLoopChange("' + el.signature + '", loop' + num + ')\n'
34183416

34193417
var alias = aliasAs ? 'var ' + aliasAs + ' = loop' + num + '\n' : ''
34203418
var kv = arr[0].replace(rforLeft, '').replace(rforRight, '').split(rforSplit)
34213419
if (kv.length === 1) {//确保avalon._each的回调有三个参数
34223420
kv.unshift('$key')
34233421
}
34243422
//分别创建isArray, ____n, ___i, ___v, ___trackKey变量
3425-
return assign +isChange+ alias + 'avalon._each(loop' + num + ', function(' + kv + ', traceKey){\n'
3423+
return assign + isChange + alias + 'avalon._each(loop' + num + ', function(' + kv + ', traceKey){\n'
34263424

34273425
},
34283426
diff: function (current, previous, steps, __index__) {
@@ -3542,7 +3540,7 @@ return /******/ (function(modules) { // webpackBootstrap
35423540
}
35433541

35443542
var domTemplate = avalon.parseHTML(vnode.template)
3545-
3543+
35463544
var key = vnode.signature
35473545
for (var i in vnode.removedComponents) {
35483546
var el = vnode.removedComponents[i]

dist/avalon.next.js

Lines changed: 22 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/*! built in 2016-5-20:15 version 2.01 by 司徒正美 */
1+
/*! built in 2016-5-20:16 version 2.01 by 司徒正美 */
22
(function webpackUniversalModuleDefinition(root, factory) {
33
if(typeof exports === 'object' && typeof module === 'object')
44
module.exports = factory();
@@ -3348,11 +3348,12 @@ return /******/ (function(modules) { // webpackBootstrap
33483348
var rforAs = /\s+as\s+([$\w]+)/
33493349
var rident = __webpack_require__(40).ident
33503350
var update = __webpack_require__(43)
3351-
3351+
var Cache = __webpack_require__(26)
3352+
var loopCache = new Cache(600)
33523353
var rinvalid = /^(null|undefined|NaN|window|this|\$index|\$id)$/
3353-
function getTrackKey(item){
3354-
var type = typeof item
3355-
return item && type === 'object' ? item.$hashcode : type + item
3354+
function getTrackKey(item) {
3355+
var type = typeof item
3356+
return item && type === 'object' ? item.$hashcode : type + item
33563357
}
33573358

33583359
avalon._each = function (obj, fn) {
@@ -3370,32 +3371,29 @@ return /******/ (function(modules) { // webpackBootstrap
33703371
}
33713372
}
33723373
}
3373-
var loopMap = {}
3374-
function getLoopValue(object){
3375-
if(Array.isArray(object)){
3376-
return object.length+"|"+object.map(getTrackKey).join(';;')
3377-
}else{
3374+
3375+
function getLoopValue(object) {
3376+
if (Array.isArray(object)) {
3377+
return object.length + "|" + object.map(getTrackKey).join(';;')
3378+
} else {
33783379
var size = 0
33793380
var arr = []
3380-
for(var i in object){
3381-
if(object.hasOwnProperty(i)){
3381+
for (var i in object) {
3382+
if (object.hasOwnProperty(i)) {
33823383
size++
33833384
arr.push(i)
33843385
}
33853386
}
3386-
return size+"|"+arr.join(';;')
3387+
return size + "|" + arr.join(';;')
33873388
}
33883389
}
33893390

3390-
avalon._checkLoopChange = function(key, obj){
3391+
avalon._checkLoopChange = function (key, obj) {
33913392
var cur = getLoopValue(obj)
3392-
if(!(key in loopMap)){
3393-
loopMap[key] = cur
3394-
return true
3395-
}
3396-
if(cur !== loopMap[key]){
3397-
loopMap[key] = cur
3398-
return true
3393+
var old = loopCache.get(key)
3394+
if (typeof old !== 'string' || cur !== old) {
3395+
loopCache.put(key, cur)
3396+
return true
33993397
}
34003398
return false
34013399
}
@@ -3415,15 +3413,15 @@ return /******/ (function(modules) { // webpackBootstrap
34153413

34163414
var arr = str.replace(rforPrefix, '').split(' in ')
34173415
var assign = 'var loop' + num + ' = ' + avalon.parseExpr(arr[1]) + '\n'
3418-
var isChange = el.signature+'.hasChange = avalon._checkLoopChange("'+el.signature+'", loop' + num + ')\n'
3416+
var isChange = el.signature + '.hasChange = avalon._checkLoopChange("' + el.signature + '", loop' + num + ')\n'
34193417

34203418
var alias = aliasAs ? 'var ' + aliasAs + ' = loop' + num + '\n' : ''
34213419
var kv = arr[0].replace(rforLeft, '').replace(rforRight, '').split(rforSplit)
34223420
if (kv.length === 1) {//确保avalon._each的回调有三个参数
34233421
kv.unshift('$key')
34243422
}
34253423
//分别创建isArray, ____n, ___i, ___v, ___trackKey变量
3426-
return assign +isChange+ alias + 'avalon._each(loop' + num + ', function(' + kv + ', traceKey){\n'
3424+
return assign + isChange + alias + 'avalon._each(loop' + num + ', function(' + kv + ', traceKey){\n'
34273425

34283426
},
34293427
diff: function (current, previous, steps, __index__) {
@@ -3543,7 +3541,7 @@ return /******/ (function(modules) { // webpackBootstrap
35433541
}
35443542

35453543
var domTemplate = avalon.parseHTML(vnode.template)
3546-
3544+
35473545
var key = vnode.signature
35483546
for (var i in vnode.removedComponents) {
35493547
var el = vnode.removedComponents[i]

0 commit comments

Comments
 (0)