Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 03.02.2014, 20:30
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от cyber Посмотреть сообщение
где можно по читать как это замутить?)
100 раз кидал уже эту ссылку: https://developers.google.com/closur...s-for-compiler

(это официальная дока closure compiler)
__________________
kobezzza
code monkey
Ответить с цитированием
  #12 (permalink)  
Старый 03.02.2014, 20:59
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

kobezzza, а почему не используешь объект для передачи параметров?
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #13 (permalink)  
Старый 03.02.2014, 21:18
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 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
code monkey

Последний раз редактировалось kobezzza, 03.02.2014 в 21:23.
Ответить с цитированием
  #14 (permalink)  
Старый 03.02.2014, 23:36
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от kobezzza
Ещё один слой оптимизации - это оптимизация и сжатие либы в GCC Adv Mode Хз что он там колдует, но после сжатия всё реально шустрее работает
только замучаешься warning'и фиксить

Plovr тоже ничё так
Ответить с цитированием
  #15 (permalink)  
Старый 04.02.2014, 00:31
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

kobezzza, не могу понять как сделать что класс не переименовывало, пробывал ставить @constructor но не помогает
(function () {
  /**
  @constructor - пробывал так
 */
  function constr() {// сохранить имя constr

  }

  window.Constr = constr
}())


Сообщение от melky
только замучаешься warning'и фиксить
да ладно, все го то по 1й ошибки на каждые 10 строк кода
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #16 (permalink)  
Старый 04.02.2014, 09:41
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от cyber Посмотреть сообщение
kobezzza, не могу понять как сделать что класс не переименовывало, пробывал ставить @constructor но не помогает
(function () {
  /**
  @constructor - пробывал так
 */
  function constr() {// сохранить имя constr

  }

  window.Constr = constr
}())
Ну @constructor тут не причём.

Во первых: http://javascript.ru/optimize/google...d-optimization

Во вторых: @expose
https://developers.google.com/closur...s-for-compiler

Ну и в третьих просто глянул бы, как сделано у меня:
https://github.com/kobezzza/Collecti.../core/core.jsn

(this.Collection; и this.$C; - это для поддержки автокомплита в WebStorm)
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 04.02.2014 в 09:48.
Ответить с цитированием
  #17 (permalink)  
Старый 04.02.2014, 09:43
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от melky Посмотреть сообщение
только замучаешься warning'и фиксить
Я в своё время оч заморочился, что сейчас пишу без проблем под GCC, ну а ваще да - это гемор
__________________
kobezzza
code monkey
Ответить с цитированием
  #18 (permalink)  
Старый 04.02.2014, 11:19
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от kobezzza
Во вторых: @expose
нини.

вот как у тебя, так и надо. (про строковые имена):
global['Collection']
Ответить с цитированием
  #19 (permalink)  
Старый 04.02.2014, 11:23
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 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
code monkey

Последний раз редактировалось kobezzza, 04.02.2014 в 11:46.
Ответить с цитированием
  #20 (permalink)  
Старый 04.02.2014, 11:57
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 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.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Закрытие и открытие дива по клику OLDBOY Общие вопросы Javascript 30 28.09.2016 19:41
как обновлять collection каждые 5 секунд sergey_magic Backbone.js 1 29.07.2013 14:31
Collection – фреймворк для управления данными kobezzza Ваши сайты и скрипты 155 10.05.2013 08:59
Удаление всех options в select Ceргей Элементы интерфейса 9 28.11.2012 08:36