これは、いくつかのノードの基本を簡単にカバーしています。
0. コードの編成。メイン Node アプリケーション コードをapp.js
プロジェクト ルートで呼び出されるファイルに配置するのが慣例です。
app.js 内では、次の 2 つの一般的な部分にグループ化されます。
- 同期初期化: モジュールの要求、ディレクトリの構築、構成の読み取り、データベース接続など。
- 非同期アプリ タスク: サーバーの起動、バックグラウンド プロセス、CSS と JS の自動コンパイル、ルーティング、I/O など。イベント ループにあるもの。
1. アプリのビルド時に Stylus を CSS にコンパイルします。スタイラスモジュールを要求する必要があります。通常、これは app.js の先頭で行われ、依存関係をまとめます。
var stylus = require('stylus');
Node を初めて実行app.js
するときは、CSS を構築するためにこの JS モジュールが必要です。これが基本的な考え方です:
stylus.render(stylus-code-string, function(err, css) {
if (err) throw err;
console.log(css);
});
これが公式のStylus Javascript APIです。
Node の機能を利用するには、fs モジュールを使用してスタイラス ファイルをバッファに読み込み、それを文字列に変換して、最後にstylus.render()
. 次に、結果を宛先ファイルに送信します。これはビルド プロセスの一部であるため、同期することができます。しかし、これは本当にあなたの質問ではありません...
2. バックグラウンド プロセスとして Stylus を使用して CSS を自動コンパイルします。
この関数は、単一のファイルを監視し、含まれているファイルをファイルにコンパイルするchild_processを生成します。これにはモジュールは必要ありません。コマンド ラインで実行できるようにスタイラス実行可能ファイルをインストールするだけです。(あなたはすでにこれを行っています)。この例はスタイラス バージョン0.5.0で作成されました。また、使用するフォルダー パス (例:および) が存在する必要があります。.styl
.styl
.css
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
ファイルを 1 つに整理すると役立ちます。app.styl
app.styl
@import 'layout'
@import 'header'
@import 'main'
@import 'footer'
@import 'modal'
@import 'overrides'