forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   JavaScript / HTML (http://forum.boolean.name/forumdisplay.php?f=136)
-   -   Инклуд js-файла в Node.js (http://forum.boolean.name/showthread.php?t=18474)

ABTOMAT 19.08.2013 04:39

Инклуд js-файла в Node.js
 
Хотел заинклудить gl-matrix в свой серверный код на node.js и столкнулся с тем, что нельзя просто заинклудить файл, нужно обязательно трахнуть мозг пытающемуся это сделать.

Почитал это: http://stackoverflow.com/questions/7...ile-in-node-js
И был весьма огорчён сложностью действа.

Блин, неужели нет простого способа? Это что, сильно нужно? Ёмоё я хотел просто заинклудить либу и юзать её. Опять же, ковыряться в готовой либе (а потом при необходимости её обновить — повторять процедуру) это какой-то совсем не труЪ-вей.

В голову лезут совсем уж тупые варианты вроде промежуточного сборщика из нескольких js-файлов одного.

Так вот. Что, собственно предложите делать для решения задачи? Мока, твой выход.

moka 19.08.2013 14:41

Ответ: Инклуд js-файла в Node.js
 
Есть два способа:
npm - если твоя либа в репе, то тупо: 'npm install gl-matrix';
Это скачает и поставит её как либо (делай находясь в директории главного исполняемого файла).
Затем в коде (скорее всего):
PHP код:

var mat4 = require('mat4').mat4

Второй способ самому пихнуть класс в exports и также заинклудить (require).

Причина по которой нету тупого инклуда очевидна - это не PHP тебе, и компиляции тут тоже нету.
Модули загружаются, и могут выгружаться, есть куча зависимостей разных модулей и т.п. следственно нужна дельная система, со своим scope'ом чтобы не ломать другие модули и приложения, например объявляя глобальные переменные (конфликты).

Тем более ты когда для себя откроешь npm по полной - это же сказка.
Никакой парилки скачивать не нада, тупо 'npm install blah' и всё.

Phantom 21.08.2013 14:29

Ответ: Инклуд js-файла в Node.js
 
Цитата:

Тем более ты когда для себя откроешь npm по полной - это же сказка.
Никакой парилки скачивать не нада, тупо 'npm install blah' и всё.
Если бы ещё под виндой было всё так просто. Например попробуй поставить sqlite на Windows. Я так и не осилил. Какого хрена, я пишу на JavaScript, но должен разобраться как поставить интерпретатор питона и компилятор C++, чтобы собрать либу? Очень огорчает, что нет готовых бинарников под Windows.

moka 21.08.2013 14:56

Ответ: Инклуд js-файла в Node.js
 
Любой разраб пишущий мало-мальски серьёзные приложения должен иметь С++ бинарники, питон и т.п.
Да даже не серьёзные - должен иметь. На линях там всё идёт обычно из коробки, на винде - извольте сами ставить. Я например предпочитаю скачать сорсы и собрать как полагается под свой таргет с оптимизациями и т.п. а не юзать бинарник который собран для всех и не оптимален для конкретно моей машины.

Ты на линуксах или mac'е попробуй graphicsmagic собрать - обосрёшься вообще.

Да и забудь про sqllite. Юзай mongodb.

Phantom 21.08.2013 15:05

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

moka 21.08.2013 18:17

Ответ: Инклуд js-файла в Node.js
 
В mongo нету пока официального менеджера - пиши сам (тем более бд слишком динамична для какой либо стандаризации для менеджеров). И в этом есть плюсы, т.к. ты напишешь конкретно под задачу то что нужно, что будет в разы удобнее любых менеджеров.

Я написал single-page CMS за 2 недели, с кучей разных данных и типов полей, с фильтрами и всем чем нужно, с использованием RESTful доступа к бд (есть из коробки).

А вообще если нету бинарников для какой-то технологии это всегда проблема, и нужно компилить самому. Ваще зажрались. Раньше народ порой сам писал либы зависимостей и затычки..
Это как писать на С++, и жаловаться что тебе нужно ещё и компилить свой код.

Phantom 22.08.2013 14:02

Ответ: Инклуд js-файла в Node.js
 
Цитата:

В mongo нету пока официального менеджера - пиши сам (тем более бд слишком динамична для какой либо стандаризации для менеджеров). И в этом есть плюсы, т.к. ты напишешь конкретно под задачу то что нужно, что будет в разы удобнее любых менеджеров.
Но зачем, если есть Sqlite и прекрасно работает в моих условиях? Как можно что-то рекомендовать, не зная конкретной ситуации?
Цитата:

Это как писать на С++, и жаловаться что тебе нужно ещё и компилить свой код.
Причём тут C++? Я пишу на интерпретируемом языке ради всех его преимуществ. Если мне при этом приходится разбираться с компилируемыми языками, то преимущества теряются.

moka 22.08.2013 14:15

Ответ: Инклуд js-файла в Node.js
 
Ты же SQLite собрать пытаешься - а он на C собран.

Тем более если говорить о node.js, то там большая часть модулей - это аддоны (либы), написанные на С. Следственно и компилить их нужно.

Поставь node-gyp и cygwin со всякими плюшками и забудь о проблемах компиляции.
Если разраб библиотеки не позапотился о нормальной компиляции под винь - то тут уж прости. :)

И различай что твой интерпретируемый язык, работает не в закрытой и кем-то разработанной среде (броузер) а в системе, которая везде разная.

ANIK123 25.09.2015 20:15

Ответ: Инклуд js-файла в Node.js
 
Здравствуйте
вот файл "DB.ts"
PHP код:

module DB {
}; 

вот файл "app.ts"
PHP код:

var db = require('DB').DB

Получаю заряд печали:
Error: Cannot find module 'DB'

А ёсли пробую так:
PHP код:

///<reference path='DB'/> 

И пытаюсь использовать обьект DB, то получаю:
ReferenceError: DB is not defined

С Node.js познакомился только сегодня, поэтому я в нем даже не начинающий
На этой фиговине прилично подзастрял:)

UPD: Какую базу лучше использовать (не-реляционную)? Из требований: максимально быстрая запись. Вроде как Cassandra подходит

Nikich 25.09.2015 20:20

Ответ: Инклуд js-файла в Node.js
 
.ts? Ты уверен, что тебя интересует TypeScript?
UPD: вроде как монга подходит

moka 25.09.2015 21:14

Ответ: Инклуд js-файла в Node.js
 
Тоже не советую TypeScript юзать.
Cassandra может и быстрая и вместительная, но по фичам и приятности работы проседает конкретно.
RethinkDB, MongoDB глянь.
На счет "скорость записи", тут чаще твой код больше будет потреблять.
У нас real-time сервер редактора на nodejs+redis+mongodb+websockets, и летает при большой нагрузке отлично.

ANIK123 26.09.2015 12:23

Ответ: Инклуд js-файла в Node.js
 
А чем TypeSctipt плох? Мне, после всяких там Java, C#, очень непривычно и неуютно опять писать на JavaScript, и тут TS оказался кстати

Спасибо, значит выбираю монго, чтоб легче освоиться в ноде

Nikich 26.09.2015 14:24

Ответ: Инклуд js-файла в Node.js
 
ИМХО, он просто ненужен. Но дело личное и тред не об этом.
Твой модуль должен экспортировать класс DB, т.е.
Код:

module DB {
export class DB {}
}

и использовать нужно reference, да.

ANIK123 28.09.2015 18:51

Ответ: Инклуд js-файла в Node.js
 
Стесняюсь спросить: делать ли для каждого подключенного юзера свое соединение с базой или хватит одного общего?
Использую socket.io и mongoDB (+async для ожидания выполнения запросов к базе)
Вопрос идиотский, но все же спросил, на всякий случай :)

moka 28.09.2015 20:14

Ответ: Инклуд js-файла в Node.js
 
Одно соединение.

Хороший mongo модуль будет держать свой пулл сокетов и менеджить его, также из-за натуры асинхронности, не нужно много выпендриваться с разными соединениями.


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot