node.js сервере Какова цель задачи сервера gruntjs?




возможности node js (3)

Я учу, как продвигать использование gruntjs. Я нашел задачу сервера, но я не могу понять.

Могу ли я использовать сопоставление конкатенированных / минитизированных файлов задачи сервера для тестирования моего приложения (использует backbone.js) без перемещения или размещения исходных файлов в корневом веб-сервере? Например, без apache.

Если нет, каково предполагаемое использование серверной задачи?


Задача server используется для запуска статического сервера с base путем, установленным в качестве корня веб-сервера.

Пример: Подавать ./web-root как http://localhost:8080/ :

grunt.initConfig({
  server: {
    port: 8080,
    base: './web-root'
  }
});

Он будет функционировать подобно серверу Apache, обслуживая статические файлы на основе их пути, но использует http-модуль через соединение, чтобы настроить его ( источник ).

Если вам нужно, чтобы он обслуживал больше, чем просто статические файлы, то вам нужно будет рассмотреть задачу настраиваемого server :

grunt.registerTask('server', 'Start a custom web server.', function() {
  grunt.log.writeln('Starting web server on port 1234.');
  require('./server.js').listen(1234);
});

И пользовательский экземпляр сервера:

// server.js
var http = require('http');
module.exports = http.createServer(function (req, res) {
    // ...
});

Могу ли я использовать сопоставление конкатенированных / минитизированных файлов задачи сервера для проверки моего приложения [...]

Конкатенация и минимизация имеют свои собственные задачи - concat и min - но могут использоваться вместе с задачей server для выполнения всех 3.

редактировать

Если вы хотите, чтобы он некоторое время сохранял сервер (а также хрюкать), вы могли бы определить задачу как асинхроннуюсобытием 'close' сервера):

grunt.registerTask('server', 'Start a custom web server.', function() {
  var done = this.async();
  grunt.log.writeln('Starting web server on port 1234.');
  require('./server.js').listen(1234).on('close', done);
});

Задача server теперь - задача connect и она включена в пакет grunt-contrib-connect .

Задача connect запускает веб-сервер подключения.

Установите этот плагин с помощью этой команды:

npm install grunt-contrib-connect --save-dev

Примечание. --save-dev включает пакет в ваши devDependencies , см. Https://npmjs.org/doc/install.html.

После того, как плагин был установлен, он может быть включен внутри вашего файла Grunt с этой строкой JavaScript:

grunt.loadNpmTasks('grunt-contrib-connect');

Запустите эту задачу с помощью команды grunt connect .

Обратите внимание, что этот сервер работает только до тех пор, пока работает grunt. По завершении задания grunt веб-сервер останавливается. Это поведение можно изменить с помощью опции keepalive и активировать ad-hoc, выполнив задачу, например, grunt connect:targetname:keepalive . targetname равно «серверу» в примере кода ниже.

В этом примере grunt connect (или более verbosely, grunt connect:server ) запустит статический веб-сервер по адресу http://localhost:9001/ , с базовым путем, установленным в каталог www-root относительно файла Grunt, и любой задачи, которые будут выполняться впоследствии, смогут получить к нему доступ.

// Project configuration.
grunt.initConfig({
  connect: {
    server: {
      options: {
        port: 9001,
        base: 'www-root'
      }
    }
  }
});

Задачей сервера является быстрый и грязный доступ к статическим файлам для тестирования. grunt server НЕ является средой производственного сервера. Он действительно должен использоваться только во время жизненного цикла grunt, чтобы получить компоненты статического тестирования в тестовую среду. Используйте полноценный сервер, возможно, управляемый сценариями жизненного цикла NPM, для производственных сред.





gruntjs