「Nancy/Minify & Bundleを使う」の版間の差分
< Nancy
ナビゲーションに移動
検索に移動
(→参考文献) |
|||
(2人の利用者による、間の4版が非表示) | |||
1行目: | 1行目: | ||
ASP.NET 4から搭載されたMinify & Bundleを[[Mac]]上の[[Mono]]とNancyから使ってみる。 | ASP.NET 4から搭載されたMinify & Bundleを[[Mac]]上の[[Mono]]とNancyから使ってみる。 | ||
+ | リリースビルドすると[[JavaScript]]や[[CSS]]から無駄が省かれるという機能である。 | ||
− | + | ==静的コンテンツを扱えるようにする== | |
+ | なにはともあれNancyで静的コンテンツを使える状態にする。 | ||
+ | *[[Nancy/静的コンテンツを扱う]] | ||
==NuGetから必要なパッケージを入れる== | ==NuGetから必要なパッケージを入れる== | ||
82行目: | 85行目: | ||
以下を使うことで代用する。 | 以下を使うことで代用する。 | ||
@Html.Raw(Scripts.Render("~/bundles/jquery").ToString()) | @Html.Raw(Scripts.Render("~/bundles/jquery").ToString()) | ||
− | ToStringを忘れると[[Razor]] | + | ToStringを忘れると[[Razor]]が落ちる。 |
+ | 凄い嵌った。 | ||
+ | |||
+ | ;Razorテンプレートの記述例 | ||
+ | <source lang="html5"> | ||
+ | @using System.Web.Optimization | ||
+ | @{ | ||
+ | Layout = null; | ||
+ | } | ||
+ | <!DOCTYPE html> | ||
+ | <html lang="ja"> | ||
+ | <head> | ||
+ | <meta charset="utf-8"> | ||
+ | <title>@ViewBag.Title</title> | ||
+ | @Html.Raw(Styles.Render ("~/bundles/themes/base/css").ToString()) | ||
+ | @Html.Raw(Scripts.Render("~/bundles/jquery").ToString()) | ||
+ | @Html.Raw(Scripts.Render("~/bundles/jqueryui").ToString()) | ||
+ | </head> | ||
+ | <body> | ||
+ | @RenderBody() | ||
+ | </body> | ||
+ | </html> | ||
+ | </source> | ||
+ | |||
+ | ==その他== | ||
+ | [[Linux]]なら[[mod_pagespeed]]で良いじゃんというツッコミは禁止である。 | ||
+ | あれは[[コンパイル]]が難しいというか配布サーバーが不安定すぎて泣ける。 | ||
+ | |||
+ | ==関連項目== | ||
+ | *[[Nancy.Viewengines.Razor]] | ||
+ | |||
+ | ==参考文献== | ||
+ | {{reflist}} | ||
{{stub}} | {{stub}} | ||
+ | |||
+ | [[category: ASP.NET]] | ||
+ | [[category: Nancy]] |
2016年5月30日 (月) 01:08時点における最新版
ASP.NET 4から搭載されたMinify & BundleをMac上のMonoとNancyから使ってみる。 リリースビルドするとJavaScriptやCSSから無駄が省かれるという機能である。
目次
静的コンテンツを扱えるようにする[編集 | ソースを編集]
なにはともあれNancyで静的コンテンツを使える状態にする。
NuGetから必要なパッケージを入れる[編集 | ソースを編集]
ASP.NET関連のほとんどが、いつの間にかASP.NET本体から分離されてNuGetへ移行している。Linux上のMonoでもASP.NETを使えという思し召しらしい。Xamarin Studioからも一発で入る。
web.configを編集[編集 | ソースを編集]
<configuration> <configSections> <!-- 追加 --> <section name="razor" type="Nancy.ViewEngines.Razor.RazorConfigurationSection, Nancy.ViewEngines.Razor" /> <!-- 追加 --> </configSections> <!-- 追加 --> <razor disableAutoIncludeModelNamespace="false"> <assemblies> <add assembly="System.Web.Optimization" /> <add assembly="System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> </assemblies> <namespaces> <add namespace="System.Web.Optimization" /> </namespaces> </razor> <!-- 追加 --> <system.webServer> <!-- 追加 --> <modules runAllManagedModulesForAllRequests="true"> <remove name="BundleModule" /> <add name="BundleModule" type="System.Web.Optimization.BundleModule" /> </modules> <!-- 追加 --> </system.webServer> </configuration>
バンドルを登録する[編集 | ソースを編集]
どこでもいいので登録内容が記述されたメソッドを作る。 純正に右に倣えで「App_Start/BundleConfig.cs」にしておくと無難だと思われる。
using System;
using System.Web.Optimization;
namespace Test
{
public class BundleConfig
{
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js"));
}
}
}
サーバー起動時に登録する。 Global.asax.cs(無ければ作る)のApplication_Startメソッドから上記の登録メソッドを呼び出す。
using System;
using System.Web.Optimization;
namespace Test
{
public class Global : System.Web.HttpApplication
{
protected void Application_Start(Object sender, EventArgs e)
{
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
}
}
Scripts.Renderの違い[編集 | ソースを編集]
ASP.NET 4で標準の記述方法が使えない。
@Scripts.Render("~/bundles/jquery")
以下を使うことで代用する。
@Html.Raw(Scripts.Render("~/bundles/jquery").ToString())
ToStringを忘れるとRazorが落ちる。 凄い嵌った。
- Razorテンプレートの記述例
@using System.Web.Optimization
@{
Layout = null;
}
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>@ViewBag.Title</title>
@Html.Raw(Styles.Render ("~/bundles/themes/base/css").ToString())
@Html.Raw(Scripts.Render("~/bundles/jquery").ToString())
@Html.Raw(Scripts.Render("~/bundles/jqueryui").ToString())
</head>
<body>
@RenderBody()
</body>
</html>
その他[編集 | ソースを編集]
Linuxならmod_pagespeedで良いじゃんというツッコミは禁止である。 あれはコンパイルが難しいというか配布サーバーが不安定すぎて泣ける。