3 поста с таг mootools

Apr 04

Понеделник 29.03.2010

Ruby Quick Tip: Regular Expressions in Case Statements – Как може да се използват регулярни изрази в case конструкциите в Ruby.

Вторник 30.03.2010

Odd Ruby Methods – В Ruby могат да се предефинират операторите, в поста има няколко интересни примера и размисли.

Fred Wilson’s 10 Golden Principles of Successful Web Apps – Доста внимателно го слушах и съм напълно съгласен с човека. Много добре обяснява точка по точка, какво е задължително да се гледа когато се прави уеб приложение.

Сряда 31.03.2010

Hopping in the cloud – Поредната страхотна статия от Giant Robots Smashing Into Other Giant Robots. В статията се описва как са прехвърлили своето Hoptoad приложение в “облакът” на Engine Yard. Там се описват част от промените по цялостната архитектура на приложението, които са направили.

Четвъртък 01.04.2010

Много внимавам на първи Април, всяка година е пълно с “лъжливи мини”. Някои са доста доста лесни за разгадаване като – MooJo и Objective-Sprout. Докато примерно Github: Announcing SVN Support, два дни си мислех че е шега. А пък  “svn checkout http://svn.github.com/schacon/simplegit.git” си работи :)

Sproutcore and NodeJS are stars and comets – Две от любимите ми теми – NodeJs и SprouteCore. Какво просто да кажа :)

JavaScript Style – Chris Wanstrath доста нагледно е показал какъв е JavaScript стила в света.

Петък 02.04.2010

Microsoft Gets More Involved with jQuery – От една страна, това е добре за тези които работят с Microsoft технологии, че поне на готово ще имат една добра JavaScript библиотека. Но от друга от Microsoft, като се замисля, нищо хубаво не съм видял. И много се надявам да не я развалят много или да се опитат да я наложат на всички насила.

Federico Cargnelutti – Most Visited Posts of 2009 – Много харесвам този блог, според мен е един от най-стойностните PHP блогове. Това е малко закъснял списък с най-посещаваните постове за миналата година.

Aug 28

Много харесвам github (даже и скоро и мои проекти ще има там ;) ). Едно от най-яките неща е следенето на проекти, направено супер просто само с един click и можеш да следиш какво става по света. Така в момента следя 21 проекта (или fork-ове на проекти).

И днес забелязах един интересен commit в mootools-corе0f9a324ff34577b28e6eaa26566fdcd3cc42c18e:

Aug 09

Наскоро, един приятел ме помоли да му направя проста програмка, няма да изпадам в подробности за това какво точно трябваше да има в програмката. И аз реших да я направя по най-простия начин, за който се сетих – Adobe AIR( винаги ми е било странно защо му викат Adobe AIR, защото до колкото знам AIR e Adobe Integrated Runtime…). Някой хора биха се сетили за нещо от типа на JAVA или Flash/Flex подобни, но за мен някак си AIR-a е доста по-интересен и удобен.

Та реших още и да не ползвам стандартната си JavaScript библиотека Prototype, още повече че малко през зъби бих казал че за момента Prototype и AIR не се разбират на 100% (което до версия 1.6.1, да се надявяме, ще се оправи). И така ми останаха 2 избора – jQuery и Mootools. Предпочетох Mootools защото ми е някак си по-близо до сърцето, а и Prototype и Mootools за мен са като 2 разклонения на една идея, така че почнах.

Програмката стана доста бързо и доста добре :) и като цяло Mootools-a се оказа доста удобен, въпреки че имахме някои пререкания. Като например:

  • addEvent в Mootools e observe в Prototype
  • addClass, removeClass, hasClass в Mootools са addClassName, removeClassName, hasClassName в Prototype
  • new Class({ … }) в Mootools e Class.create({ … }) в Prototype
  • getNext, getPrevious, getParent, getFirst, getChildren в Mootools са горе-долу next, previous, up, down, select
  • …. общо взето такива са разлики

Естествено има неща който в Mootools ги има а в Prototype ги няма, но те не са толкова сложни, че да не може да се добавят от Prototype в Mootools и обратно. Например нещата който най-много ми харесаха в Mootools бяха:

  • Class.Extra – наистина страхотна идея, много полезни и даже си мисля да си ги вложа във версията на Prototype, която ползвам
  • Assets.image – това не го ползвах в AIR, но просто е безценно, защото не мога да кажа колко пъти аз и колеги сме имали проблеми с не заредени снимки (под IE6 главно)
  • Array.link – наистина интересен метод, който доста ми помогна във функциите с “неясни” аргументи
  • DomReady - и това в AIR не го ползвах, а и в Prototype си имаме dom:ready но той под IE6 не работи добре
  • FX – ефектите в Script.aculo.us са доста повече и са ми по-удобни, но тези са по-бързи и доста по “стабилни” като се говори за preformance. Това ще се промени със Script.aculo.us 2.0 / Scripty, … но то още не е готово, а и поне за сега ги няма стандартните ефекти и трябва да се правят ръчно.

Поне това са основните неща който настина ми харесаха в Mootools (сигурно и други щеше да има ако бях работил повече).

Но и доста неща с който бях свикнал в Prototype, а в Mootools ги нямаше. Няма да ги изреждам защото не са малко. Но както казах по-горе и Mootools и Prototype позволяват да се добавят extendet и то по доста лесен начин и за това си port-нах 2-3 неща:

Тъй като много ми липсваше Enumerable модула от Prototype и особено invoke метода реших да си го добавя:

Array.implement({
	invoke: function(method){
		var args = $A(arguments).slice(1);
		return this.map(function(value) {
			return value[method].apply(value, args);
		});
	}
});

Тук искам да кажа само, че много ми харесаха implement методите който са вградени към по-голямата част от Mootools Native обектите, за което в Prototype се използва Оbject.extend и prototype атрибута на съответния обект.

Mootools има Element.inject(el[, where]) и Element.grab(el[, where]), но Prototype има Element.insert което според мен е доста по-добра от 2те функции който са в Mootools

Element.implement({
	insert: function(insertions){
		if ($type(insertions) == 'element' || insertions.toElement)
			insertions = { bottom: insertation };

		for(var insert in insertions){
			var element = insertions[insert];
			Element.Inserters.get(insert, this, $(element.toElement ? element.toElement() : element, true));
		}

		return this;
	}
});

Това е само елементарта форма на Protoype фунцията защото в истинската Element.insert се приемаха и само html елементи и класове, и чист html код. Но, това не ми се наложи да го ползвам и за това не си играх да го port-вам.

Други две малки “подобрения”, който сложих бяха:

Event.implement({
	findElement: function(pattern){
		return this.target.match(pattern) ? this.target : this.target.getChildren(pattern)[0];
	}
});

function $w(string){
	if ($type(string) != 'string') return [];
	string.trim();
	return string ? string.split(/\s+/) : [];
}

Общо взето това са моите наблюдения (малко по-дълги се оказаха от колкото си мислех :) ). Поне за сега за мен Prototype си е номер 1, но и Mootools е много добра алтернатива (особено ако Prototype, не си оправят Adobe AIR съпорта ). А и Mootools ми е някак си твърде “лъскав”, докато prototype ми се струва по “hardcore”, но това си е мое мнение.

То дефакто дали човек избере Mootools, jQuery, Prototype, YUI, ExtJS, …. все ще е прав :)

п.п. ако някой има намерение да се занимава със Adobe AIR и Mootools непременно да погледне Snippely от кода му и от него като цяло могат да се научат безценни неща :)