在FF和所有,我的JavaScript工作正常.但在Chrome中,它会显示以下消息:
资源解释为脚本,但使用MIME类型text/plain进行传输.
我检查了所有的脚本标签,他们都有MIME type="text/javascript".它甚至用jquery和jquery ui这样说.Chrome有什么问题?
有什么问题和解决方法?这是我必须在浏览器的"选项"中更改的内容,还是来自服务器,还是我必须调整代码?
如何
@Scripts.Render("~/bundles/jquery")
Run Code Online (Sandbox Code Playgroud)
不同于仅仅引用html中的脚本
<script src="~/bundles/jquery.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
是否有任何性能提升?
我正在尝试使用Microsoft的Web优化框架呈现JavaScript包,如下所示:
@Scripts.Render("~/assets/bundle.js")
Run Code Online (Sandbox Code Playgroud)
并建立一个小包,像这样:
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new ScriptBundle("~/assets/bundle.js")
.Include(
"~/scripts/jquery-2.1.0.min.js",
"~/scripts/somescript.js"
));
...
}
Run Code Online (Sandbox Code Playgroud)
但是当启用优化时,它只会呈现相对URL,如下所示:
<script src="/assets/bundle.js?v=mGDOiNaiTrSfcNq41OoA7A_BcN8PrXuMbfl-TE84HVY1"></script>
Run Code Online (Sandbox Code Playgroud)
如何让脚本捆绑呈现绝对URL呢? 我找不到一种方法来查看MSDN上的文档.这是我最终会喜欢的:
<script src="http://my.site.com/assets/bundle.js?v=mGDOiNaiTrSfcNq41OoA7A_BcN8PrXuMbfl-TE84HVY1"></script>
Run Code Online (Sandbox Code Playgroud)
这是在框架中,还是我必须使用辅助方法Script.Url?
是否可以在ASP.NET MVC 4中配置Scripts.Render以在"script"标记中生成"type"属性?
如果是这样,怎么样?
提前致谢,
瑞安
asp.net asp.net-mvc bundling-and-minification asp.net-optimization
在ASP.NET MVC 4.5中完成的HTML5离线应用程序中,我们使用框架的内置功能捆绑和缩小样式和脚本.一切都适用于页面本身,但是为了写入Cache Manifest,在那里(因为我们正在编写它),它总是只发出捆绑的URL.
因此,我们无法在脱机模式下调试JavaScript,因为各个调试js文件没有进入应用程序缓存.
这就是我们的BundleConfig.RegisterBundles样子:
// For more information on Bundling, visit http://go.microsoft.com/fwlink/?LinkId=254725
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new ScriptBundle("~/bundles/Scripts").Include(
"~/Scripts/*.js"
));
}
Run Code Online (Sandbox Code Playgroud)
我们将它包含在我们_Layout.cshtml的页面本身中,如下所示:
@System.Web.Optimization.Scripts.Render("~/bundles/Scripts")
Run Code Online (Sandbox Code Playgroud)
当这非常适用于网页,通过发射单个js文件debug是true,和一个当捆绑文件debug是false.
输出 debug=true
<script src="/Scripts/ScriptOne.js"></script>
<script src="/Scripts/ScriptTwo.js"></script>
<script src="/Scripts/ScriptThree.js"></script>
Run Code Online (Sandbox Code Playgroud)
输出 debug=false
<script src="/bundles/Scripts?v=B0_RvAM_5ifnREcGnNQ3FO8qQp4vyLOdtCUJ-2mXSuA1"></script>
Run Code Online (Sandbox Code Playgroud)
这就是我们将脚本包含在我们的内容中的方法 CacheManifest
@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/bundles/Scripts")
Run Code Online (Sandbox Code Playgroud)
输出debug=true和debug=false
/bundles/Scripts?v=B0_RvAM_5ifnREcGnNQ3FO8qQp4vyLOdtCUJ-2mXSuA1
Run Code Online (Sandbox Code Playgroud)
我们想知道是否有一种方法可以像这样输出Cache-Manifest:
输出 debug=true
/Scripts/ScriptOne.js
/Scripts/ScriptTwo.js
/Scripts/ScriptThree.js
Run Code Online (Sandbox Code Playgroud)
输出 debug=false
/bundles/Scripts?v=B0_RvAM_5ifnREcGnNQ3FO8qQp4vyLOdtCUJ-2mXSuA1
Run Code Online (Sandbox Code Playgroud)