UNPKG

dotnode

Version:

.NET-like MVC framework for Node.js

59 lines (39 loc) 2.03 kB
var TagBuilder = require('../html/tagBuilder'), fs = require('fs'), path = require('path'), json = require('JSON'); var HtmlHelper = function (viewContext) { this._viewContext = viewContext; }; // #region public methods HtmlHelper.prototype.renderRequireJsSetup = function () { var mainScriptBuilder = new TagBuilder('script'), configScriptBuilder = new TagBuilder('script'); var configHtml = ''; var requireJsConfigContents = fs.readFileSync(process.cwd() + '/requirejs.config', 'utf8'), pageOptions = this._viewContext.pageOptions || {}; var requireJsConfig = json.parse(requireJsConfigContents), requireConfig = { pageOptions: pageOptions }; configHtml += 'var ' + requireJsConfig.requireConfigVariable + '=' + json.stringify(requireConfig) + ';'; configHtml += '\n'; configHtml += 'var require=' + json.stringify(requireJsConfig) + ';'; var actionName = this._viewContext.controllerContext.actionName, controllerName = this._viewContext.controllerContext.controllerName, areaName = this._viewContext.controllerContext.areaName; var requireJsSrc = path.normalize(requireJsConfig.baseUrl + '/' + requireJsConfig.requireJsPath + '.js'), mainScriptSrc = controllerName + '/' + actionName + '.js'; areaName = areaName || 'root'; mainScriptSrc = /*requireJsConfig.baseUrl + */ '/controllers/' + areaName + '/' + mainScriptSrc; mainScriptSrc = path.normalize(mainScriptSrc); mainScriptBuilder.setAttribute('data-main', mainScriptSrc); mainScriptBuilder.setAttribute('src', requireJsSrc); mainScriptBuilder.setAttribute('type', 'text/javascript'); configScriptBuilder.setAttribute('type', 'text/javascript'); configScriptBuilder.setInnerHtml(configHtml); var setupHtml = configScriptBuilder.toString() + mainScriptBuilder.toString(); return setupHtml; }; // #endregion module.exports = HtmlHelper;