2012-07-04 9 views
8

Tôi đang làm việc trên một dự án mà một nhà phát triển khác đã phát triển giao diện người dùng làm giải pháp duy nhất phía máy khách duy nhất bằng cách sử dụng khung công tác ember.js.Công cụ Razor và ember.js có thể hoạt động cùng nhau không?

Tôi đã được yêu cầu chuyển công việc này sang dự án ASP.NET MVC3.

Vấn đề là, ember.js sử dụng dấu ngoặc ôm và dấu ngoặc kép trong cú pháp, và điều này dường như ảnh hưởng đến công cụ dao cạo được MVC3 sử dụng.

Tôi có nghĩ rằng 2 công nghệ (ASP MVC3 và ember.js) không thể hoạt động cùng nhau?

+0

Tại sao bạn được yêu cầu chuyển nó vào ASP.Net MVC? Có vấn đề với ứng dụng vì nó tồn tại ngày hôm nay không? –

+0

Đó là yêu cầu của khách hàng. Họ là một công ty sử dụng chủ yếu .NET/.NET MVC. Giao diện người dùng được thực hiện bởi một nhà phát triển với nền tảng chủ yếu là php. –

+0

+1 để chống lại -1 được đưa ra mà không có bình luận. –

Trả lời

-1

Bạn sẽ có thể sử dụng các khối được nêu chi tiết trong http://weblogs.asp.net/scottgu/archive/2010/12/15/asp-net-mvc-3-razor-s-and-lt-text-gt-syntax.aspx để bọc các mẫu ember của bạn để chúng có sẵn chính xác.

Điều đó nói rằng bạn không thực sự thỏa mãn các yêu cầu của khách hàng của mình bằng cách thực hiện việc này. Một nhà phát triển ASP.Net MVC bình thường sẽ vẫn phải học ember.js để làm việc với cơ sở mã này. Những gì bạn thực sự cần phải làm là viết lại nó bằng cách sử khái niệm ASP.Net MVC như tạo các trang từ các mô hình, quang cảnh một phần, vv

+0

Không thực sự.Bạn không thể viết lại cùng một hành vi với ASP.NET MVC vì nó là một khuôn khổ phía máy chủ mà do đó chỉ nhận được yêu cầu http làm đầu vào. Mặt khác, Ember.js là một khung công tác phía máy khách nhận các sự kiện trình duyệt và do đó có thể phản ứng phức tạp hơn với tương tác của người dùng. Để so sánh tốt đẹp giữa mvc phía máy khách và phía máy chủ, hãy xem: [link] (http://emberjs.com/guides/ember_mvc/) –

+0

Có nhiều lý do để sử dụng ASP.NET MVC và lý do sử dụng Ember. Viết những thứ "bằng cách sử dụng khái niệm ASP.NET MVC" có thể không phải là những gì khách hàng của anh ta mong muốn. Chỉ vì họ được yêu cầu sử dụng ASP.NET MVC như công nghệ phía máy chủ không có nghĩa là anh ta không còn có thể sử dụng khung phía máy khách và sử dụng Ember không nhất thiết ngăn chặn "yêu cầu của khách hàng". –

1

ngắn Trả lời: Vâng, bất cứ thư viện js thể làm việc với asp.net MVC

Tuy nhiên, nếu bạn nhận được một số vấn đề cú pháp thì cú pháp hiển thị cụ thể (Dao cạo, biểu mẫu web, Spark, v.v.) cần được phân tích song song với thư viện js.

Ví dụ: jQuery sử dụng ký hiệu $ làm Bí danh, có thể thay thế. Nhìn vào tài liệu tham khảo này - Replace “$”(dollar Sign) with “JQuery”

Tuy nhiên, nếu nó không hoạt động thì có thể bạn đang xem xét lại công cụ xem của mình.

3

Một cách tiếp cận sẽ có tay lái mẫu trong một tập tin tài nguyên (resx) và thêm chúng vào Ember trong một chức năng ẩn danh tương tự như sau:

<script type="text/javascript" src="path/to/ember.js"> 
<script type="text/javascript" src="path/to/your/app.js"> 
<script type="text/javascript"> 
    (function() { 
     Ember.TEMPLATES["your template name"] = Ember.Handlebars.compile('<%= template as string from the resource file goes here %>'); 
    })(); 

    App.initialize(); 
</script> 

này nên xảy ra trước bạn gọi của initialize ứng dụng của bạn phương pháp

Các tập tin tài nguyên cũng là một ý tưởng tốt khi bạn có hỗ trợ đa ngôn ngữ

+1

Để hỗ trợ các mẫu biên dịch sẵn ở phía máy chủ, tôi khuyên bạn nên sử dụng thư viện cbararp-ember-handlebars (cài đặt qua NuGet), do đó bạn sẽ không có xung đột với dao cạo, haml, aspx hoặc bất kỳ công cụ xem nào nữa. Đây là dự án trong github https://github.com/Myslik/csharp-ember-handlebars với một mẫu Web API tempalte (WIP) – MilkyWayJoe

1

tôi đang làm việc trên ASP.NET MVC 4 ứng dụng mà sử dụng E mber nặng nề và không có bất kỳ vấn đề gì.

Trường hợp có dấu ngoặc kép có cách giải quyết rất dễ dàng: chỉ cần sử dụng @:. Mọi thứ sau @: được hiểu là văn bản thuần túy. Vì vậy, đánh dấu dao cạo này với biểu hiện tay lái sẽ có hiệu lực:

<ul> 
@if (Model.SomeCondition) 
{ 
    @:{{#each product in products}} 
    <li>{{product.name}}</li> 
    @:{{/each}} 
} 
</ul> 

Cập nhật: Hiện nay tôi đang sử dụng Ember 1,6-1,9 phiên bản và Ember dữ liệu 1.0.0-beta-8 - 1.0.0-beta-12 phiên bản với ASP.NET MVC 5.2 - công trình tuyệt vời. Sắp tới sẽ di chuyển tất cả các dự án mới nhất trên Ember 1.9, Dữ liệu Ember và Handlebars 2.0