Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   HTML/DHTML/CSS/JS/VB (http://www.flasher.ru/forum/forumdisplay.php?f=66)
-   -   Нужен совет по подключению классов в JS-проекте (http://www.flasher.ru/forum/showthread.php?t=210645)

mikhailk 14.04.2015 13:11

Нужен совет по подключению классов в JS-проекте
 
В NodeJS есть штатный механизм подключения модулей

Код:

var misc = require('./misc');
Есть необходимость в аналоге для браузерного JS. Есть какое-нибудь готовое опробованное решение?

ЗЫ. Обязательно чтобы отладчик работал. Потому что при сборке на лету некоторыми способами все в целом работает, но тот же FireBug не может показать строчку с ошибкой, если она возникает.

Zebestov 14.04.2015 13:18

Речь идет о произвольном коде или конкретно о NodeJS?
И что подразумевается под "классами"?

mikhailk 14.04.2015 13:38

Речь идет о проекте на чистом JS для работы клиентской части приложения. Если точнее, то там разрабатывается движочек, использующий возможности html5.

Хотелось бы, чтобы в итоге проект выглядел примерно как проект на AS3, т.е., один класс - один файл, в начале каждого файла с классом был указан импорт, все само собирается и биндится. Т.е., примерно как require в NodeJS или require_once в PHP.


Под классами в данном случае подразумевается их реализация на JS.

Код:

function Animal(name) {
  this.speed = 0;
  this.name = name;

  this.run = function(speed) {
    this.speed += speed;
    alert( this.name + ' бежит, скорость ' + this.speed );
  };

  this.stop = function() {
    this.speed = 0;
    alert( this.name + ' стоит' );
  };
};

var animal = new Animal('Зверь');


ЗЫ. Пишу не я, пишет коллега, но я вижу, что он зарылся и не может найти решения. По крайней мере, те решения, которые он нашел к текущему моменту, не подходят.

Zebestov 14.04.2015 13:48

1. Достаточно прописать в <head> все используемые скрипты. Начинать работу следует по факту полной загрузки страницы.

2. Использовать минимизатор, который собирает все отдельные js-файлы в один, который указывается в том же <head>.

P.S.
И да, "классы" немного по-другому имитируются, через прототипы.

Добавлено через 13 минут

Пример объявления "класса":
Код:

// Это наш класс. Конструктор.

var Animal = function(name) {
    this.speed = 0;
    this.name = name;
};

// Это пример статических полей и методов.

Animal.CLASS_DESC = "Животные всякие";
Animal.ping = function() { console.log("Мы тут, пасемся!"); };

// Это методы. Они все будут публичными. Можно как-то намутить
// приватные, но там черт голову сломает, потому нуегонафиг.

Animal.prototype.run = function(speed) {
    this.speed += speed;
    console.log(this.name + ' бежит, скорость ' + this.speed);
};

Animal.prototype.stop = function() {
    this.speed = 0;
    console.log(this.name + ' стоит');
};

Вот этот код нам необходимо загрузить в самом начале описанными выше способами. После загрузки страницы можно уже использовать его:
Код:

console.log(Animal.CLASS_DESC);
var animal = new Animal("Зверь"):
animal.run(10);
animal.stop();


OlmerDale 14.04.2015 14:32

Для отладки гуглите source map, для require browserify.

И привата в js нет. Многие js разработчики приватом называют замыкание.
Они привыкли писать модульно и не создавать больше одного модуля на приложение,
по этому для них замыкание действительно имитирует приват. Но для тех кто создает
более одного модуля, приватная скопа становится общей для всех инстенсов.
Еще есть в шестой версии символ и что-то ещё призванное имитировать приватность..
Но и к таким приватным свойствам можно будет добраться.

mikhailk 14.04.2015 14:44

ок, спс.
посмотрим в эту сторону тоже.

OlmerDale 14.04.2015 14:52

И раз у Вас такие скудные познания в js, то я бы ещё посоветовал посмотреть в сторону препроцесоров babelJS или typescript. Если появятся мысли типа - "я не буду х использоваться, я же программист, я буду на чистом писать". Выкиньте эти мысли из головы.

mikhailk 14.04.2015 15:05

Цитата:

посмотреть в сторону препроцесоров babelJS или typescript
да, это разумно


Кстати, а никто не подскажет нормального форума по JS (в частности по проектам на JS)?
Javascript.ru не предлагать.

OlmerDale 14.04.2015 18:09

Не знаю почему, но сложилось такое мнение, что в as3 люди воспитанные, максимум могут промолчать.
В php наоборот, одни оборотни, которые друг перед другом выделываются и постоянно грызутся, как собачки.
JS же что-то среднее между первым и вторым. На начальном этапе Вам все разжуют и объяснят, но если копнуть чуть глубже то и послать могут, но чаще всего просто скажут, что каждый должен дойти до всего сам.
Но и ругать их нет причин, так как js это бескрайние просторы космоса в котором варятся все у кого нет своего дисплей листа, как это есть у нас. А все языки разные и люди разные и все хотят свою толику внести, что превращает js во вселенную. И если Вы считает что Вам ответят на вопрос "какой фраймворк" или "какой препроцессор лучше", то нет. Как Вам ответить если вряд ли найдется человек, который их все пробовал и сравнивал. В as3 есть Starling и его хватает заглаза и его все и всякому советуют, а в js даже ещё полноценного игрового движка нет. Даже не все режимы наложения в webgl реализованы.

И как заключение можно лишь сказать, что если у Вас нет друга гуру, то приготовьтесь с полгода все свое время потратить на изучение технологий.

Да и сколько нормальных форумов по проектам на as3 Вы знаете? Я таких не знаю.
Или Вы готовы потратить неделю времени на объяснения создавая себе конкурента, которых в js просто миллионы?

mikhailk 14.04.2015 19:02

Цитата:

И как заключение можно лишь сказать, что если у Вас нет друга гуру, то приготовьтесь с полгода все свое время потратить на изучение технологий.
На самом деле, я там в первом посте написал, что на JS пишу не я, а мой коллега. :)
Но я ему обрисую ситуацию.

caseyryan 14.04.2015 19:04

Цитата:

Кстати, а никто не подскажет нормального форума по JS (в частности по проектам на JS)?
stackoverflow.com ) Не, серьезно. Самая крутая штука по всему. Ответы на свои самые заковыристые вопросы, я всегда получаю именно там, как бы по-кэповски это ни звучало

Zebestov 14.04.2015 19:18

mikhailk, вы игру пилите?

OlmerDale 14.04.2015 19:22

А если Вы не caseyryan, то тогда http://ru.stackoverflow.com/ но ответов Вам там дадут такие же, как в любом другом месте. Вам не будут советовать что-то лучшее или лучший вариант, там за такое банят.

mikhailk 15.04.2015 01:06

Цитата:

mikhailk, вы игру пилите?
Не совсем я пилю, но как бы участвую в процессе.
Да, речь идет о сравнительно небольших играх на JS/HTML5.

Сравнительно небольших - это означает, что все-таки не совсем маленьких. Которые, скажем, на AS3 пишутся с нуля где-то за полтора-два месяца.


Цитата:

но ответов Вам там дадут такие же, как в любом другом месте. Вам не будут советовать что-то лучшее или лучший вариант, там за такое банят.
Подозреваю, надо еще и уметь спрашивать.
Здесь у нас тоже можно спросить так, что никто не ответит.


Цитата:

stackoverflow.com ) Не, серьезно
Ну да.
Там еще и русскоязычный куст образовался.
ru.stackoverflow.com

Zebestov 15.04.2015 01:22

Цитата:

Сообщение от mikhailk (Сообщение 1181320)
Да, речь идет о сравнительно небольших играх на JS/HTML5.

Тогда рекомендую сразу остановиться на каких-то движках.

Лично я выбрал CreateJS из-за его удивительной схожести с тандемом AS3+Starling. Там все настолько привычно — диву даешься! Мне это было очень удобно для портирования AIR>HTML5. Соблюдая определенную осторожность на все уходит пара дней.

Но вроде как самый популярный в больничке у нас Phaser. В нем все по-своему (знающие люди отзывались), но он вроде здорово заточен под игрострой. К тому же умеет рисовать как в canvas, так и в WebGL.

Оба движка (фреймворка) зададут тон JS-ового ООП-а :) пообвыкнуться легче будет. Ну и самое главное — если хочется все же чего-то более близкого сердцу, чем JavaScript, можно остановить свой выбор ну уже упомянутом здесь выше TypeScript.

mikhailk 15.04.2015 10:26

Цитата:

Лично я выбрал CreateJS из-за его удивительной схожести с тандемом AS3+Starling.
Тут как бы базовое то, что идем не от AS3. Считаем, что человек пишет на JS и не имеет опыта разработки на AS3. Но за движки спасибо, глянем.

PainKiller 24.04.2015 17:45

Поздновато заглянул в эту ветку, но тем не менее запоздало внесу свои 5 копеек. Вообще то нодовский способ подключения "классов" это стандарт RequireJS, можно его использовать и на стороне браузера, кстати довольно удобно. Что же касается форумов по JS на русском языке я ничего нормального не находил, согласен с caseyryan, по JS юзаю только stackoverflow.com

mikhailk 27.04.2015 11:33

Цитата:

Вообще то нодовский способ подключения "классов" это стандарт RequireJS
Про RequireJS я читал и у меня не сложилось ощущения, что народ в восторге.


Часовой пояс GMT +4, время: 22:14.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.