Example #1
0
View.prototype.inline = function(fn) {
  var script = "(" + fn + ")()";
  if (racer.get('minify')) {
    script = racer.get('minifyJs')(script);
  }
  this._inline += script + ';';
};
Example #2
0
    view._loadTemplates(root, clientName, function(err, templates, instances, libraryData) {
      if (err) errors['Template'] = refresh.templateError(err);
      view._makeAll(templates, instances);
      view._makeComponents(libraryData);
      var templatesScript = loadTemplatesScript(templates, instances, libraryData);
      if (racer.get('minify')) {
        templatesScript = racer.get('minifyJs')(templatesScript);
      }

      // Don't include JS for static pages
      if (isStatic) return callback(null, errors, css);

      // JS files are only loaded once per process start
      if (view._js) return finish(view._js);

      files.js(appFilename, function(err, js, inline) {
        if (err) return callback(err);
        if (inline) view.inline("function(){" + inline + "}");
        view._js = js;
        finish(js);
      });

      function finish(js) {
        files.writeJs(root, js + '\n;' + templatesScript, false, function(err, jsFile, appHash) {
          if (err) return callback(err);
          callback(err, errors, css, jsFile, appHash);
        });
      }
    });
Example #3
0
View.prototype.pack = function(callback) {
  var view = this
    , appFilename = view._appFilename
    , fileInfo = files.parseName(appFilename)
    , root = fileInfo.root
    , clientName = fileInfo.clientName
    , minifyPrevious = racer.get('minify')

  function finish(err) {
    racer.set('minify', minifyPrevious);
    callback(err, clientName);
  }
  racer.set('minify', true);

  view._loadStyles(root, clientName, function(err, css) {
    if (err) return finish(err);

    view._loadTemplates(root, clientName, function(err, templates, instances, libraryData) {
      if (err) return finish(err);
      var templatesScript = loadTemplatesScript(templates, instances, libraryData);
      templatesScript = racer.get('minifyJs')(templatesScript);

      files.js(appFilename, function(err, js, inline) {
        files.writeJs(root, js + '\n;' + templatesScript, true, function(err, jsFile, appHash) {
          if (err) return finish(err);

          var filename = clientName + '.json'
            , file = JSON.stringify({
                css: css
              , templates: templates
              , instances: instances
              , libraryData: libraryData
              , inline: inline
              , jsFile: jsFile
              , appHash: appHash
              })
          files.writeGen(root, filename, file, true, finish);
        });
      });
    });
  });
};
Example #4
0
    view._loadTemplates(root, clientName, function(err, templates, instances, libraryData) {
      if (err) return finish(err);
      var templatesScript = loadTemplatesScript(templates, instances, libraryData);
      templatesScript = racer.get('minifyJs')(templatesScript);

      files.js(appFilename, function(err, js, inline) {
        files.writeJs(root, js + '\n;' + templatesScript, true, function(err, jsFile, appHash) {
          if (err) return finish(err);

          var filename = clientName + '.json'
            , file = JSON.stringify({
                css: css
              , templates: templates
              , instances: instances
              , libraryData: libraryData
              , inline: inline
              , jsFile: jsFile
              , appHash: appHash
              })
          files.writeGen(root, filename, file, true, finish);
        });
      });
    });
Example #5
0
View.prototype._loadStyles = function(root, clientName, callback) {
  var styleFiles = []
    , out = []
    , libraries = this._libraries
    , minify = racer.get('minify')
    , len, i, library, styles, finish

  function add(styles) {
    var file = path.resolve(library.root, styles);
    styleFiles.push(file);
  }

  for (i = 0, len = libraries.length; i < len; i++) {
    library = libraries[i];
    styles = library.styles;
    if (!styles) continue;
    if (Array.isArray(styles)) {
      styles.forEach(add);
    } else {
      add(styles);
    }
  }

  styleFiles.push(clientName);

  finish = finishAfter(styleFiles.length, function(err) {
    if (err) return callback(err);
    callback(null, out.join(''));
  });

  styleFiles.forEach(function(file, i) {
    files.css(root, file, minify, function(err, value) {
      out[i] = minify ? trimLeading(value) : '\n' + value;
      finish(err);
    });
  });
};
Example #6
0
var path = require('path')
  , EventDispatcher = require('./EventDispatcher')
  , racer = require('racer')
  , Promise = racer.util.Promise
  , isProduction = racer.util.isProduction
  , merge = racer.util.merge
  , finishAfter = racer.util.async.finishAfter
  , Model = racer["protected"].Model
  , minifyJs = racer.get('minifyJs')
  , files = require('./files')
  , htmlUtil = require('html-util')
  , escapeHtml = htmlUtil.escapeHtml
  , trimLeading = htmlUtil.trimLeading
  , refresh = require('./refresh.server')
  , errorHtml = refresh.errorHtml
  , cssError = refresh.cssError
  , templateError = refresh.templateError
  , View = module.exports = require('./View')
  , emptyModel = new Model
  , emptyRes = {
      getHeader: empty
    , setHeader: empty
    , write: empty
    , end: empty
    }
  , emptyPathMap = {
      id: empty
    }
  , emptyEventDispatcher = {
      bind: empty
    }