Quando ho eseguito il progetto MVC 4 in modalità di rilascio, una pagina che utilizza SlickGrid non è stata visualizzata correttamente (la griglia è molto, molto alta e mancano le celle della griglia).Perché il codice miniato non è equivalente all'originale?
Tuttavia, non credo che questo è un problema di SlickGrid, ma piuttosto di come il Bundler (System.Web.Optimization
che è integrato nel MVC 4) ridotte di codice.
Ho afferrato il codice JavaScript minisito e ho iniziato a invertire la minificazione in un'area alla volta fino a quando il problema non veniva risolto. Ho trovato che il cambiamento (e perdonare lo scorrimento, voglio lasciare la versione minified esattamente così com'è)
function SlickFilter(n,t){var i=n.option,r=t.searchString;return n.pctSortKey.key<t.percentCompleteThreshold||r!=""&&i.indexOf(r)==-1&&i!="Unweighted Response"&&i!="Median"&&i!="Average"?!1:!0}
all'originale
function SlickFilter(item, args) {
if (item.pctSortKey.key < args.percentCompleteThreshold) {
return false;
}
if (args.searchString != "" && item.option.indexOf(args.searchString) == -1 && item.option != "Unweighted Response" && item.option != "Median" && item.option != "Average") {
return false;
}
return true;
}
risolve il problema se tutti gli altri elementi del file minified sono invariati
La funzione viene utilizzata come:
dataView.setFilter(SlickFilter);
per fornire una funzione di callback per SlickGrid per filtrare determinati risultati.
Come è possibile che la funzione originale e quella minificata non siano equivalenti?
UPDATE
SlickGrid è "Compilazione" la funzione di filtro che fornisco. Quella fase di compilazione ha esito negativo con la versione minificata. Il codice compilato minified assomiglia:
function anonymous(_items,_args) {
var _retval = [], _idx = 0; var n, t = _args; _coreloop: for (var _i = 0, _il = _items.length; _i < _il; _i++) { n = _items[_i];
//debugger;
var i = n.option,
r = t.searchString;
return
n.pctSortKey.key < t.percentCompleteThreshold
||
r !=""
&& i.indexOf(r)==-1
&& i != "Unweighted Response"
&& i != "Median"
&& i != "Average"
? !1
: !0
; } return _retval;
}
Nota multiplo ritorno dichiarazioni.
Con questa intuizione aggiuntivo, sono stato in grado di identificare un rilevante errore SlickGrid:
https://github.com/mleibman/SlickGrid/issues/301
Stai minifando il js da solo?Ci sono tonnellate di strumenti minificatori là fuori, quindi ti consiglio di provarne un altro. – lolol
@lolol: No sto usando 'System.Web.Optimization' che è integrato in MVC 4. Aggiornato la domanda per chiarire che. –
Il mio male, non posso davvero aiutarti allora. Scusate. (Ho avuto problemi simili, ma lo stavo facendo da solo, cambiando lo strumento ho risolto il problema) – lolol