Это кратко рассматриваются некоторые основы Node.
0. Организационный код. Это соглашение, чтобы поместить ваш основной код приложения в файл с именем app.js
в корень проекта.
Внутри app.js вещи сгруппированы в две основных части:
- синхронных инициализаций: требуют модулей, строить каталоги, читайте конфиги, подключение к БД и т.д. Вещи, которые блокируют, поэтому они должны существовать или умереть быстро.
- асинхронный задачи приложения: запуск сервера, фоновые процессы, автокомпилирование CSS & JS, маршрутизация, ввод-вывод и т. Д. Вещи, которые находятся в цикле событий.
1. Скомпилируйте стилус в CSS при создании приложения. Нам нужен модуль stylus. Обычно это выполняется в верхней части приложения app.js для сохранения зависимостей.
var stylus = require('stylus');
Первый раз, когда узел работает app.js
, вам это нужно JS модуль для создания вашего CSS. Это основная идея:
stylus.render(stylus-code-string, function(err, css) {
if (err) throw err;
console.log(css);
});
Вот официальная Stylus Javascript API.
Чтобы использовать мощность узла, вы должны прочитать файл стилуса с помощью fs module в буфер, а затем преобразовать его в строку и, наконец, передать его в stylus.render()
. Затем отправьте результат в файл назначения. Поскольку это часть процесса сборки, он может быть синхронным. Но на самом деле это не ваш вопрос ...
2. Автоматически скомпилируйте CSS с помощью стилуса в качестве фонового процесса.
Эта функция порождает child_process, которая наблюдает один .styl
файла и компилирует включены .styl
файлов в .css
файл. Вам не нужен модуль для этого, только установите исполняемый файл стилуса, чтобы он выполнялся в командной строке. (Вы уже это сделали). Этот пример был сделан с помощью стилуса 0.5.0. Кроме того, должны существовать пути к папкам, которые вы используете (например, build/styles
и styles
).
function watchStyles(sourcefile, destinationfolder) {
var Stylus = child_process.spawn('stylus', ['--sourcemap', '-w', sourcefile, '--out', destinationfolder]);
Stylus.stdout.pipe(process.stdout); // notifications: watching, compiled, generated.
Stylus.stderr.pipe(process.stdout); // warnings: ParseError.
Stylus.on('error', function(err) {
console.log("Stylus process("+Stylus.pid+") error: "+err);
console.log(err);
});
// Report unclean exit.
Stylus.on('close', function (code) {
if (code !== 0) {
console.log("Stylus process("+Stylus.pid+") exited with code " + code);
}
});
}
Далее, вы должны вызвать эту функцию когда-нибудь после запуска приложения Передайте в свой мастер .styl
файл в качестве источника. Затем каталог назначения, куда вы хотите, чтобы ваш CSS был включен.
// check that you passed '-w' parameter
if (process.argv[2] && (process.argv[2] == "-w")) {
watchStyles('styles/app.styl', 'build/styles');
}
Запустите приложение, запустив: $ node app.js -w
Это помогает организовать .styl
файлы под одним app.styl
так, чтобы содержимое вашего app.styl
выглядит следующим образом:
@import 'layout'
@import 'header'
@import 'main'
@import 'footer'
@import 'modal'
@import 'overrides'
Хорошо, что часть где говорит: «Тогда добавьте эту строку в конфигурацию приложения», какие конфигурации приложения. Единственное, что мне нужно для node.js for, - это скомпилировать мой файл стилуса. На самом деле веб-приложение не нуждается в node.js, и я не хочу включать node.js для своего веб-приложения. – ryanzec
Отредактированный мой ответ ... надеюсь, что это имеет смысл ... – silverfighter