Protototy.js е любимия ми javascript framework, за нещастие в последно време популярността му спада. Това се дължи на голяма степен, че за една година и повече са излизали само 2 малки версии, които само оправят бъгове. Въпреки че в последния major release 1.6 имаше страшно много нови и полезни неща, все пак една година е твърде много време.
В последната версия на Prototype е 1.6.0.3, имаше само bug-fixes и code-improvements (Въпреки, че все още имам проблем с dom:loaded под IE6, но аз и без това не го ползвам).
Но напоследък се вижда светлина в тунела
. Забелязвам доста активност в последните месеци в Lighthouse-a на Prototype, a от скоро и в github. Новата версия 1.6.1, за която няма дата, но според мен някъде Януари 2009 трябва да я видим на бял свят, ще има доста нови неща.
Като за начало забелязвам че в github-a се е появил доста интересен branch – rewrite. Не знам дали ще се ползва за 1.6.1, или за някакво бъдещо 2.0, но изглежда доста интересно. Основната идея е да се раздели framework-a на още по малки логически части и да се отделят в отделни clouseres. Основната му идея е се определи точен начин за писане в самия Prototype Core, зада може нови хора като добавят код да знаят какви са стандартите. За момента това което виждам е че примерен код от rewritе би изглеждал така:
Object.extend(NativeObject.prototype, (function(){
// този метод не излиза от scope-a на и не може да бъде достигнат от вън
function _privateMethod(){ /* ... */}
function newMethod1(){ /* позва примерно _privateMethod */ }
// примерно се проверява дали даден браузър поддържа нещо
// и в зависимост от това се използват различни имплементации на newMethod2
if (someGeekyBrowserChecks()){
var newMethod2 = function(){};
} else {
var newMethod2 = function(){};
}
// ...
return {
newMethod1: newMethod1,
newMethod2: newMethod2
// ...
}
})());
Лично за мен това е добра идея, и много зависи като preformance как ще работи, иначе изглежда доста добре и от пръв поглед се разбират доста неща от кода.
Очаква се и интеграция или нещо подобно с google caja, въпреки че не съм много на ясно с caja проекта, вчера видях това: Caja Goes Live on Yahoo!. И както там се казва в момента caja има към ~ 275,000,000 потребителя и не знам дали някои друг javascript framework да има някаква интеграция със caja. Май трябва по-сериозно да го разгледам какво настина е това нещо.
Така това бяха нещата, които подразбирам и по дочувам тип: “една жена на пазара ми каза”, сега сигурните неща.
Вече имаме доста по-бърз document.viewport.get[Dimensions|Height|Width] (commit)
Работещ dom:loaded (ticket | commit) – няма да кажа от кога го чакам това нещо да работи
или поне се надявам да работи
$(element)[store, retrieve] и Element#getStorage (commit) – е това ще нещо настина полезно, а и май е първото ново нещо в prototype от 1.6.0.1 насам ( злите езици, ще кажат че това го имат jQuery и MooTools от много време, но какво да се прави)
Върви в момента леко пренареждане на кода на самата библиотека
и както винаги малки bug fix-чета
( това е добавено в последната седмица )
Какво се чака още – Number#constrain, Prototype.exec, Prototype.setRule(това по скоро ще е влезе като plugin някъде), mouseenter и mouseleave действия, и Ajax#abort и малко поправки по Ajax системата. Даже и аз имам скромен принос към Prototype – Element/Event#delegate и Event#register. Event.delegate 100% ще го има, жалкото е че няма да е с API-то, което аз исках, но все пак е нещо. Докато за Event#register не мисля че има голям шанс да влезе в core-а, но би бил много добър plugin
А също така се носи слух за нова версия на – Scripteka и нейна по-тясна интеграция с официалния сайт на prototype
Горе долу това си мисля, че са основните нещата който се случват с Protototy.js, дано скоро има материали за още поне 1-2 поста по темата (и да не се слага началото на рубрика – “Какво НЕ става в Prototype”).
