/// <summary> /// Setup RequireJS to be used in layouts /// </summary> /// <example> /// @Html.RenderRequireJsSetup(Url.Content("~/Scripts"), Url.Content("~/Scripts/require.js"), "~/RequireJS.release.config") /// </example> /// <param name="baseUrl">Scrips folder</param> /// <param name="requireUrl">requirejs.js url</param> /// <param name="configPath">RequireJS.config server local path</param> public static MvcHtmlString RenderRequireJsSetup(this HtmlHelper html, string baseUrl, string requireUrl, string configPath = "", IRequireJsLogger logger = null) { return(html.RenderRequireJsSetup(baseUrl, requireUrl, new List <string> { configPath }, logger)); }
/// <summary> /// Setup RequireJS to be used in layouts /// </summary> /// <param name="baseUrl">Scrips folder</param> /// <param name="requireUrl">requirejs.js url</param> /// <param name="configsList">RequireJS.config files path</param> public static MvcHtmlString RenderRequireJsSetup(this HtmlHelper html, string baseUrl, string requireUrl, IList <string> configsList, IRequireJsLogger logger = null) { var entryPointPath = html.RequireJsEntryPoint(); if (entryPointPath == null) { return(new MvcHtmlString(string.Empty)); } if (!configsList.Any()) { throw new Exception("No config files to load."); } var processedConfigs = configsList.Select(r => { var resultingPath = html.ViewContext.HttpContext.MapPath(r); PathHelpers.VerifyFileExists(resultingPath); return(resultingPath); }).ToList(); var loader = new ConfigLoader(processedConfigs, logger); var resultingConfig = loader.Get(); var outputConfig = new JsonConfig { BaseUrl = baseUrl, Locale = html.CurrentCulture(), Paths = resultingConfig.Paths.PathList.ToDictionary(r => r.Key, r => r.Value), Shim = resultingConfig.Shim.ShimEntries.ToDictionary(r => r.For, r => new JsonRequireDeps { Dependencies = r.Dependencies.Select(x => x.Dependency).ToList(), Exports = r.Exports }), Map = resultingConfig.Map.MapElements.ToDictionary(r => r.For, r => r.Replacements.ToDictionary(x => x.OldKey, x => x.NewKey)) }; var options = new JsonRequireOptions { Locale = html.CurrentCulture(), PageOptions = html.ViewBag.PageOptions, WebsiteOptions = html.ViewBag.GlobalOptions }; var configBuilder = new JavaScriptBuilder(); configBuilder.AddStatement(JavaScriptHelpers.SerializeAsVariable(options, "requireConfig")); configBuilder.AddStatement(JavaScriptHelpers.SerializeAsVariable(outputConfig, "require")); var requireRootBuilder = new JavaScriptBuilder(); requireRootBuilder.AddAttributesToStatement("data-main", entryPointPath.ToString()); requireRootBuilder.AddAttributesToStatement("src", requireUrl); return(new MvcHtmlString(configBuilder.Render() + requireRootBuilder.Render())); }
/// <summary> /// Setup RequireJS to be used in layouts /// </summary> /// <param name="html"> /// The html. /// </param> /// <param name="baseUrl"> /// scripts base url /// </param> /// <param name="requireUrl"> /// requirejs.js url /// </param> /// <param name="configsList"> /// RequireJS.config files path /// </param> /// <param name="entryPointRoot"> /// Scripts folder relative path ex. ~/Scripts/ /// </param> /// <param name="logger"> /// The logger. /// </param> /// <returns> /// The <see cref="MvcHtmlString"/>. /// </returns> public static MvcHtmlString RenderRequireJsSetup( this HtmlHelper html, string baseUrl, string requireUrl, IList <string> configsList, string entryPointRoot = "~/Scripts/", IRequireJsLogger logger = null, bool loadOverrides = true) { return(html.RenderRequireJsSetup(baseUrl, requireUrl, null, configsList, entryPointRoot, logger, loadOverrides)); }
/// <summary> /// Setup RequireJS to be used in layouts /// </summary> /// <example> /// @Html.RenderRequireJsSetup(Url.Content("~/Scripts"), Url.Content("~/Scripts/require.js"), "~/RequireJS.release.config") /// </example> /// <param name="html"> /// HtmlHelper instance /// </param> /// <param name="baseUrl"> /// scripts base url /// </param> /// <param name="requireUrl"> /// requirejs.js url /// </param> /// <param name="urlArgs"> /// url arguments /// </param> /// <param name="configPath"> /// RequireJS.config server local path /// </param> /// <param name="entryPointRoot"> /// Scripts folder relative path ex. ~/Scripts/ /// </param> /// <param name="logger"> /// Logger to output errors /// </param> /// <returns> /// The resulting <see cref="MvcHtmlString"/>. /// </returns> public static MvcHtmlString RenderRequireJsSetup( this HtmlHelper html, string baseUrl, string requireUrl, string urlArgs = "", string configPath = "", string entryPointRoot = "~/Scripts/", IRequireJsLogger logger = null, bool loadOverrides = true) { if (string.IsNullOrEmpty(configPath)) { configPath = DefaultConfigPath; } return(html.RenderRequireJsSetup(baseUrl, requireUrl, urlArgs, new List <string> { configPath }, entryPointRoot, logger, loadOverrides)); }
public ConfigLoader(IList <string> paths, IRequireJsLogger logger) { this.paths = paths; this.logger = logger ?? new ExceptionThrowingLogger(); }
public ConfigLoader(IList<string> paths, IRequireJsLogger logger) { this.paths = paths; this.logger = logger ?? new ExceptionThrowingLogger(); }
public ConfigLoader(List<string> paths, IRequireJsLogger logger, ConfigLoaderOptions options = null) { this.paths = paths; this.logger = logger ?? new ExceptionThrowingLogger(); this.options = options ?? new ConfigLoaderOptions(); }
public ConfigLoader(List <string> paths, IRequireJsLogger logger, ConfigLoaderOptions options = null) { this.paths = paths; this.logger = logger ?? new ExceptionThrowingLogger(); this.options = options ?? new ConfigLoaderOptions(); }