Здесь кратко рассматриваются некоторые основы Node.
<сильный>0. Организация кода. По соглашению код основного приложения Node помещается в файл с именем app.js
в корне проекта.
Внутри app.js вещи сгруппированы в две основные части:
- синхронные инициализации: требуют модулей, создают каталоги, читают конфигурации, подключения к БД и т. д. Вещи, которые блокируют, поэтому они должны существовать или быстро исчезнуть.
- асинхронные задачи приложения: запуск сервера, фоновые процессы, автоматическая компиляция CSS и JS, маршрутизация, ввод-вывод и т. д. Вещи, которые находятся в цикле событий.
<сильный>1. Скомпилируйте Stylus в CSS при сборке приложения. Нам потребуется стилус. модуль. Обычно это делается в верхней части app.js, чтобы хранить зависимости вместе.
var stylus = require('stylus');
При первом запуске Node app.js
вам понадобится этот JS-модуль для создания CSS. Это основная идея:
stylus.render(stylus-code-string, function(err, css) {
if (err) throw err;
console.log(css);
});
Вот официальный Stylus Javascript API.
Чтобы использовать возможности Node, вы должны прочитать файл стилуса с помощью модуля fs в буфер, затем преобразуйте его в строку и, наконец, передайте в stylus.render()
. Затем отправьте результат в файл назначения. Поскольку это часть процесса сборки, он может быть синхронным. Но это не совсем ваш вопрос...
<сильный>2. Автоматическая компиляция CSS с помощью Stylus в фоновом режиме.
Эта функция порождает 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'
person
Benxamin
schedule
26.02.2015