03.02.2014, 20:59
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
kobezzza, а почему не используешь объект для передачи параметров?
__________________
Цитата:
|
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
|
|
|
03.02.2014, 21:18
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Сообщение от cyber
|
kobezzza, а почему не используешь объект для передачи параметров?
|
Перечитай приведённые мною примеры и доку:
https://github.com/kobezzza/Collecti...%D 0%BE%D0%B2
Цитата:
|
Приставка opt_ означает, что параметр является опциональным (соглашение о написание кода на JavaScript от Google). Параметр opt_filter (или просто filter) во всех итераторах может быть представлен как объект входных параметров, т.е.:
|
{
filter,
id,
mult,
count,
from,
startIndex,
endIndex,
reverse,
inverseFilter,
notOwn,
live,
useForIn,
vars,
context
}
т.е. использую.
Для внутренних вызовов юзается вызов с перечислением параметров, т.к. это работает быстрее, а для конечного использования конечно можно использовать объекты-параметры, если нужно.
Последний раз редактировалось kobezzza, 03.02.2014 в 21:23.
|
|
03.02.2014, 23:36
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
Сообщение от kobezzza
|
Ещё один слой оптимизации - это оптимизация и сжатие либы в GCC Adv Mode Хз что он там колдует, но после сжатия всё реально шустрее работает
|
только замучаешься warning'и фиксить
Plovr тоже ничё так
|
|
04.02.2014, 00:31
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
kobezzza, не могу понять как сделать что класс не переименовывало, пробывал ставить @constructor но не помогает
(function () {
/**
@constructor - пробывал так
*/
function constr() {// сохранить имя constr
}
window.Constr = constr
}())
Сообщение от melky
|
только замучаешься warning'и фиксить
|
да ладно, все го то по 1й ошибки на каждые 10 строк кода
__________________
Цитата:
|
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
|
|
|
04.02.2014, 09:43
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Сообщение от melky
|
только замучаешься warning'и фиксить
|
Я в своё время оч заморочился, что сейчас пишу без проблем под GCC, ну а ваще да - это гемор
|
|
04.02.2014, 11:19
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
Сообщение от kobezzza
|
Во вторых: @expose
|
нини.
вот как у тебя, так и надо. (про строковые имена):
global['Collection']
|
|
04.02.2014, 11:23
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Сообщение от melky
|
нини.
|
Почему? Я юзаю @expose для экспорта внешних (публичных) методов либы, т.к. не надо писать убогий ['...'] (код в первую очередь должен хорошо читаться), тем более многие публичные методы юзаются внутри и я не хочу думать о том: "забыл ли я экранировать название".
Либа жмётся и нужные методы внешние, а все "издержки" 100% закрываются gzip, т.е. нет никакой разницы. Если я жму либу вместе с проектом, то пред сжатием я дополнительно вырезаю @expose (replace(/@expose/gm, '') в скрипте сборки) и всё (или написать файл экстерн, но это даст хуже сжатие).
А вот если я юзаю экспорт как ['...'], то при сжатии с проектом уже без файла экстерна не обойтись, и сжатие будет хуже.
***
Если я пишу ['...'] то это означает что всегда-всегда это свойство должно быть с таким именем.
Вот пример: https://github.com/kobezzza/Collecti...rs.storage.jsn
Свойство Collection.Drivers.Storage должно быть доступно при использовании либы как "внешнего скрипта", но при сжатии вместе с проектом должно сжиматься, поэтому я юзаю @expose.
А свойства 'indexedDB', 'localStorage' и т.д. должны быть такими всегда, поэтому я экспортирую их в кавычках.
Например: global['Collection'] сделан так не спроста, т.к. Collection фигурирует в генерируемых скриптах в рантайме, т.е. всегда должны быть именно таким.
Разумеется я читал:
Цитата:
|
@expose should never be used in library code, because it will prevent that property from ever getting removed.
|
Но это просто напоминание: мол думайте, что делаете и всё.
Последний раз редактировалось kobezzza, 04.02.2014 в 11:46.
|
|
04.02.2014, 11:57
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
kobezzza,
Генерирует, по-моему, такой код:
goog.exportProperty( %OBJECT% , "%PROP_NAME%", %PROP_VAL%);
Исходник:
/**
* Exports a property unobfuscated into the object's namespace.
* ex. goog.exportProperty(Foo, 'staticFunction', Foo.staticFunction);
* ex. goog.exportProperty(Foo.prototype, 'myMethod', Foo.prototype.myMethod);
* @param {Object} object Object whose static property is being exported.
* @param {string} publicName Unobfuscated name to export.
* @param {*} symbol Object the name should point to.
*/
goog.exportProperty = function(object, publicName, symbol) {
object[publicName] = symbol;
};
Использование:
/** @export */
MYOBJ.MYPROP = 'FOO'
Сообщение от kobezzza
|
А свойства 'indexedDB', 'localStorage' и т.д. должны быть такими всегда, поэтому я экспортирую их в кавычках.
|
они, вроде, прописаны в экстернах и включены в компилер.
Последний раз редактировалось melky, 04.02.2014 в 12:02.
|
|
|
|