2013-07-17 3 views
1

Я думаю о подключении моего существующего приложения к использованию модулей CommonJS и использовании Browserify в bundle модулей в один файл.Магистральное приложение с CommonJS и Browserify

Я получаю голову от написания модулей, но одна вещь, которую я немного скептически перед тем, как погрузиться и начать переписывать определенные биты, заключается в том, как я могу немного ее оптимизировать, поэтому мне не нужно включать Backbone, Underscore, jQuery и любые вспомогательные файлы в каждом файле, т.е.

var Backbone = require('/backbone'); 
var $ = require('/jquery'); 
var _ = require('/underscore'); 

В начале каждого файла через некоторое время будет немного утомительно.

Будучи полным CommonJS, Browserify n00b, мне интересно, не хватает ли я чего-то очень очевидного?

+2

Я думаю, что другая очевидная вещь, помимо принятого ответа, заключается в том, что большинство людей * делают * нужны модули, где они нужны. Это важная часть шаблона require, IMHO. Возможно, утомительно, но это больше, чем шаблон; это ясно указывает, какие другие фрагменты кода зависят от данного модуля и где находится этот код, и помогает сохранять код модульным и независимым. Это, насколько это возможно, от классического PHP-ада grep'ing через файлы, пытаясь найти волшебные определения функций, которые, как вы знаете, приходят из * где-то *. – numbers1311407

+0

Одним из основных принципов модулей commonjs является то, что каждый явно указывает свои зависимости. Сохранение ключевых штрихов, IMO, НИКОГДА не является хорошей причиной для использования глобального. – srquinn

ответ

2

«Очень очевидная вещь», которую вам не хватает, заключается в том, что вы можете создавать глобальные переменные в Node.js и в среде Browserify одинаково. Либо сделайте это явно, используя global.Backbone = require('/backbone'), или менее явно, просто сделав Backbone = require('/backbone') (без var спереди).

Обратите внимание, что в браузере объект global фактически является объектом window. Однако присоединение к объекту window означает, что вы потеряете совместимость с Node.js, потому что обычно не существует глобальной переменной window.

+0

Это то, что я сделал. Это немного неправильно, учитывая тот факт, что мы используем такие инструменты, как Browserify, для управления зависимостями, но это действительно хорошо, пока вы держите его красиво организованным и ограничиваете свою зависимость от глобальных переменных. – basicallydan

+2

Хотя теоретически правильно, я ниспровергаюсь, потому что вы не должны поощрять использование глобального, чтобы сэкономить на нажатиях клавиш. Этот ответ разбивает один из основных принципов спецификации commonjs, который заключается в том, что каждый модуль должен явно определять свои зависимости. – srquinn

 Смежные вопросы

  • Нет связанных вопросов^_^