Ответ 1
Чтобы понять, как я понимаю ваш пост, я вижу два вопроса:
- Как структурировать код/методы в файлах, файлы, представляющие категорию функций полезности
- Как организовать эти категориальные файлы в одну большую библиотеку
Методы структурирования в категории
Вместо того, чтобы создавать все функции функций конкретных объектов (например, Twitter или текст), вы можете просто экспортировать функции в файлы, названные в их названии. Так как кажется, что вы передаете данные, которые хотите использовать, нет необходимости создавать функции экземпляров экземпляров какого-либо пустого класса.
Если ваши шаблоны использования Twitter или Text обычно имеют переменные класса, которые вы хотите сохранить, и вы хотите создать экземпляр объектов Text или Twitter, чтобы использовать ваши примеры, я полагаю, что это было бы уместно. Когда я настраиваю использование libs в своих проектах, обычно это куча экспортируемых функций, которые составляют модуль, а не экспортированный класс javascript.
Чтобы привести пример того, что файл text.js, состоящий из текстовых функций полезности, может выглядеть так:
module.exports = {
cleanText:function(text) {
// clean it and return
},
isWithinRange(text, min, max) {
// check if text is between min and max length
}
}
В качестве альтернативы вы можете сделать это следующим образом:
exports.cleanText = function(text) {
// clean it and return
}
exports.isWithinRange = function (text, min, max) {
// check if text is between min and max length
}
Структурирование файлов категорий служебных программ для создания большей библиотеки утилиты
Что касается организации методов утилиты, то пример Luca хорош. Я организовал несколько аналогично:
utils-module/
lib/
text.js <-- this is the example file shown above
twitter.js
test/
index.js
Где index.js делает что-то вроде
var textUtils = require('./lib/text');
exports.Text = textUtils;
Затем, когда я хочу использовать утилиту lib, скажу некоторую модель User в моем API-интерфейсе узла, это просто:
/*
* Dependencies
*/
var textUtils = require('path/to/lib').Text;
/*
* Model
*/
function User() {}
/*
* Instance Methods
*/
User.prototype.setBio = function(data) {
this.bio = textUtils.cleanText(data);
}
module.exports = User;
Надеюсь, это поможет. Когда я впервые узнал, было очень полезно посмотреть на популярные, уважаемые библиотеки, чтобы увидеть, как все более опытные разработчики node/javascript делают что-то. Там так много хороших (и плохих)!
Лучший,
Craig