Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Сжатие js кода (https://javascript.ru/forum/misc/30014-szhatie-js-koda.html)

kidar2 20.07.2012 19:53

Сжатие js кода
 
Подскажите, есть ли минификатор, который умеет сжимать свойства this (а также внешние) следующим образом:

function test()
{
this._View.bla();
this._View.bla();
this._View.bla();
this._View.bla();
this._View.bla();
this._View.bla();
};

=>

function test()
{
var n = this._View;
n.bla();
n.bla();
n.bla();
n.bla();
n.bla();
n.bla();
};

devote 21.07.2012 08:56

Closure Compiler
но this он не станет сжимать, все остальное сожмет
пример:
из этого:
(function(){

	function heh() {
		this._View = {
			bla: function() {
				alert("lala");
			}
		}
	}
	function test() { 
		this._View.bla();
		this._View.bla();
		this._View.bla();
		this._View.bla();
		this._View.bla();
		this._View.bla();
	}

	test.call(new heh());

})();

сделает это:
(function(){
	this.a.b();
	this.a.b();
	this.a.b();
	this.a.b();
	this.a.b();
	this.a.b()
}).call(new function(){
	this.a={
		b:function(){
			alert("lala")
		}
	}
});
табуляции я сам расставил, а так в одну строку код будет

запуск такой:
java -jar compiler.jar --compilation_level ADVANCED_OPTIMIZATIONS --js=test.js --js_output_file=test.min.js

devote 21.07.2012 09:02

из такого кода:
(function(){

	function heh() {
		this._View = {
			bla: function() {
				alert("lala");
			}
		}
	}
	function test() { 
		var self = this._View;
		self.bla();
		self.bla();
		self.bla();
		self.bla();
		self.bla();
		self.bla();
	}

	test.call(new heh());

})();
делает такой:
(function(){
	var a=this.b;
	a.a();
	a.a();
	a.a();
	a.a();
	a.a();
	a.a()
}).call(new function(){
	this.b={
		a:function(){
			alert("lala")
		}
	}
});

vflash 21.07.2012 10:45

подозреваю что gzip справиться с этим лучше

devote 21.07.2012 11:44

Цитата:

Сообщение от vflash
подозреваю что gzip справиться с этим лучше

ну гзип это не
Цитата:

Сообщение от kidar2
есть ли минификатор

это архиватор, обычно им уже пользуются после
Цитата:

Сообщение от kidar2
минификатор



Часовой пояс GMT +3, время: 15:01.