2012-05-14 31 views
6

Tôi đã tải xuống MVC4 và cố gắng tìm hiểu cách tính năng nhóm hoạt động trong một dự án tiêu chuẩn. Dường như có gói:Tại sao không bó bó MVC4 Knockout.js?

<script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Scripts/js")"></script> 

Mang lại tất cả các tệp jquery.js nhưng không phải tệp knockout.js trong tập lệnh được bao gồm. Tại sao điều này? Và còn tập tin _references.js là gì và tại sao tập tin knockout.js lại bình luận?

Trả lời

8

Nếu bạn nhìn vào hồ sơ dự án Global.asax của bạn, bạn nên tìm thấy ở đó một cái gì đó như thế này:

protected void Application_Start() 
{ 
    ... 
    BundleTable.Bundles.RegisterTemplateBundles(); 
} 

Bây giờ RegisterTemplateBundles được đăng ký chỉ là một tập hợp con được xác định trước các kịch bản:

  • jquery- *
  • jquery.mobile *
  • jquery-ui *
  • jquery.unobtrusive *
  • jquery.validate *
  • MicrosoftAjax.js
  • MicrosoftMvc.js
  • Modernizr *
  • AjaxLogin.js

Nếu bạn muốn có một số file bổ sung mà bạn có thể một trong hai thay đổi RegisterTemplateBundles-EnableDefaultBundles:

protected void Application_Start() 
{ 
    ... 
    BundleTable.Bundles.EnableDefaultBundles(); 
} 

Hoặc tạo gói tùy chỉnh của riêng bạn (bạn có thể đọc thêm về gói và rút gọn here). Bạn cũng nên biết rằng EnableDefaultBundles có một số tác động hiệu suất.

Tệp _references.js được sử dụng bởi Visual Studio cho JavaScript intellisense. Bạn có thể tìm hiểu thêm từ bài viết sau đây:

2

tpeczek là đúng. Hầu hết mọi người không sử dụng Knockout.js, đó là lý do tại sao nó không được bao gồm theo mặc định. Bundling/Minification (BM) đã thay đổi đáng kể cho RC và nó sẽ đơn giản hơn nhiều để thêm các tập tin vào bó. Xem tôi Bundling and Minification tutorial

0

tôi đã có thể để thêm một tập tin để bó với dòng mã sau đây thêm vào sau khi RegisterTemplateBundles()

BundleTable.Bundles.RegisterTemplateBundles(); 
BundleTable.Bundles.Where(x => x.Path == "~/Scripts/js").First().AddFile("~/scripts/knockout-2.0.0.js"); 
Các vấn đề liên quan