ما هي أفضل طريقة لتقديم أوراق أنماط js في node.js باستخدام Express؟

StackOverflow https://stackoverflow.com/questions/4028569

  •  26-09-2019
  •  | 
  •  

سؤال

لديّ تطبيق صغير Node.js (الأول) الذي أريد أن يكون ANGILE هو أقل من أوراق الأنماط عند تحميل الخادم. النقطة التي أبدأ فيها هي تطبيق Express Example لـ Jade حيث يبدو أنه يجمع قوالب Sass عند إنشاء الخادم:

var pub = __dirname + '/public';

var app = express.createServer(
  express.compiler({ src: pub, enable: ['sass'] }),
  express.staticProvider(pub)
);

لقد رأيت هذا وآمل أن يكون الأمر بسيطًا مثل تغيير Sass إلى أقل ولكن هذا لا يبدو أنه يعمل.

هل هناك نهج مختلف يجب أن أتخذه؟ هل هناك شيء أفتقده؟ لا يمكنني العثور على الوثائق على طريقة .compile في أي مكان.

شكرًا!

هل كانت مفيدة؟

المحلول

عليك أن تجمع بشكل أقل مباشرة. Sass لا يتجمع إلى أقل في Express. يجمع مباشرة إلى CSS. نفس الشيء مع أقل. يجمع مباشرة إلى CSS.

var app = express.createServer(
  express.compiler({ src: pub, enable: ['less'] }),
  express.staticProvider(pub)
);

نصائح أخرى

إذا كنت ترغب في تحديد CSS المخرج ، فقد وجدت أن المترجم المضمن (من وحدة الاتصال) يفتقد خيار الضغط. لذا بدلاً من كتابة برنامج التحويل البرمجي الخاص بي الخاص به. أنا أكتب المترجم الأقل توصيل في تطبيقي.

var express = require('express');
var app = express.createServer();
var less;

express.compiler.compilers.less.compile = function (str, fn) {
    if (!less) less = require("less");                                                      
    try {
        less.render(str, { compress : true }, fn);
    } catch (err) {
        fn(err);
    }
};

app.use(express.compiler({ src: publicdir, enable: ['less'] }));

لـ Express 3 ، استخدم المقتطف التالي:

var express = require('express'),
    less = require('less');

var app = express();
app.engine('less', function (path, options, callback) {
  fs.readFile(path, 'utf8', function (error, contents) {
    if (error) return callback(error);
    less.render(contents, options, callback);
  });
});
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top