Cách kiến ​​trúc ứng dụng Ember.js


105

Thật khó để theo kịp sự phát triển của Ember JS khi nó tiếp cận (và đạt được!) Phiên bản 1.0.0. Các hướng dẫn và tài liệu đã xuất hiện và biến mất, dẫn đến nhiều nhầm lẫn về các phương pháp hay nhất và mục đích của các nhà phát triển ban đầu.

Câu hỏi của tôi chính xác là: Các phương pháp hay nhất cho Ember JS là gì? Có bất kỳ hướng dẫn cập nhật hoặc mẫu làm việc nào cho thấy Ember JS được dự định sử dụng như thế nào không? Mẫu mã sẽ rất tuyệt!

Cảm ơn tất cả mọi người, đặc biệt là các nhà phát triển Ember JS!


7
Câu hỏi này được xếp hạng đầu cho tìm kiếm trên Google về 'hướng dẫn EmberJS', nhưng nó không thực sự trả lời câu hỏi đó. Đây thực sự là một câu hỏi về 2 liên kết trên internet. Bạn có cân nhắc thay đổi câu hỏi này để phù hợp với tiêu đề không? Tôi nghĩ câu trả lời tốt nhất sẽ là câu trả lời thực sự đã đưa ai đó vượt qua quá trình tạo ứng dụng với EmberJS.
George Stocker

Câu trả lời:


17

Có một dự án quan trọng mà cả các nhà phát triển Ember.js mới và kỳ cựu nên tận dụng:

Ember-CLI

Mặc dù nó yêu cầu một số mức độ thoải mái với dòng lệnh, bạn có thể tạo một dự án Ember hiện đại với các phương pháp hay nhất do cộng đồng đề xuất trong vài giây.

Mặc dù có lợi khi thiết lập một dự án Ember.js theo cách khó như trong câu trả lời của Mike Grassotti, bạn không nên làm điều đó cho mã sản xuất. Đặc biệt là khi chúng ta có một dự án mạnh mẽ và dễ sử dụng như Ember-CLIđể cho chúng ta thấy con đường hạnh phúc đã được Yehuda phê duyệt .


1
Cảm ơn Matt! Tôi đã biến điều này thành câu trả lời được chấp nhận để hướng lưu lượng truy cập đến Ember-CLI.
Craig Labenz

Chỉ mới bắt đầu sử dụng Ember lần đầu tiên cách đây vài ngày và Ember-CLI khá dễ bắt đầu và sử dụng. Chỉ có một nhược điểm là nó gây ra rất nhiều sự phức tạp mà bạn có thể không muốn / cần (mặc dù sự phức tạp có thể bị bỏ qua, nếu bạn là một người đáng tin cậy). Bower và JSHint và Ember-CLI và Travis CI và EditorConfig và Git tập tin cấu hình, cùng với những thứ khác như Broccoli đối với tài sản và PhantomJS để thử nghiệm ...
JKillian

Điểm công bằng @JKillian. Tôi biết có một mối quan tâm về đường cong học tập của Ember, vì những lý do đó. Mặc dù Ember-cli có giới thiệu một số phức tạp (Ember-data & Broccoli), nó loại bỏ sự nhầm lẫn đáng kể xung quanh các yêu cầu của nhà cung cấp và cấu trúc dự án của bạn. Vì vậy, có một hạt muối.
Matt Jensen

1
Hoàn toàn đồng ý với con đường hạnh phúc của Ember CLI! Hướng dẫn bắt đầu nhanh của Mike Grassotti dưới đây sẽ là "bước tiếp theo" hoàn hảo nếu nó không quá ... lỗi thời. Đối với những người muốn xây dựng ứng dụng Ember 2.0, điều tốt nhất, theo các phương pháp hay nhất, là đảm bảo bạn hiểu các khái niệm cốt lõi: mô hình, tuyến đường, dịch vụ, thành phần, v.v. Tài liệu Ember là một nguồn tài liệu tuyệt vời, nhưng vì tôi có không đi qua một hướng dẫn cập nhật đơn kết nối tất cả các khái niệm (ít hơn nhiều với một ứng dụng mẫu) tôi quyết định viết lên điều này: emberigniter.com/5-essential-ember-2.0-concepts
Frank Treacy

110

Hướng dẫn Bắt đầu Nhanh Ember.js Tối thiểu Khả thi của Mike Grassotti

Hướng dẫn bắt đầu nhanh này sẽ đưa bạn từ 0 đến hơn 0 trong vài phút. Khi hoàn tất, bạn sẽ cảm thấy phần nào tin tưởng rằng ember.js thực sự hoạt động và hy vọng sẽ có đủ hứng thú để tìm hiểu thêm.

CẢNH BÁO: Đừng chỉ thử hướng dẫn này rồi nghĩ rằng ember-sucks vì "Tôi có thể viết hướng dẫn bắt đầu nhanh đó tốt hơn trong jQuery hoặc Fortran" hoặc bất cứ điều gì. Tôi không cố gắng bán cho bạn trên ember hay bất cứ thứ gì, hướng dẫn này không chỉ là một lời chào thế giới.

Bước 0 - Kiểm tra jsFiddle

jsFiddle này có tất cả mã từ câu trả lời này

Bước 1 - Bao gồm ember.js và các thư viện bắt buộc khác

Ember.js yêu cầu cả jQuery và Handlebars. Đảm bảo các thư viện đó được tải trước ember.js:

<script type='text/javascript' src='http://code.jquery.com/jquery-1.9.1.js'></script>
<script type='text/javascript' src="http://cdnjs.cloudflare.com/ajax/libs/handlebars.js/1.0.0-rc.3/handlebars.js"></script>
<script type='text/javascript' src="http://cdnjs.cloudflare.com/ajax/libs/ember.js/1.0.0-rc.1/ember.js"></script>

Bước 2 - Mô tả giao diện người dùng ứng dụng của bạn bằng một hoặc nhiều mẫu thanh điều khiển

Theo mặc định, ember sẽ thay thế nội dung trang html của bạn bằng cách sử dụng nội dung của một hoặc nhiều mẫu thanh điều khiển. Một ngày nào đó, các mẫu này sẽ nằm trong các tệp .hbs riêng biệt được tập hợp bởi các đĩa xích hoặc có thể là grunt.js. Hiện tại, chúng tôi sẽ giữ mọi thứ trong một tệp và sử dụng các thẻ script.

Đầu tiên, hãy thêm một applicationmẫu duy nhất :

<script type="text/x-handlebars" data-template-name="application">
  <div class="container">
    <h1>Ember.js is easy?<small> Minimum Viable Ember.js QuickStart Guide</small></h1>
    <p>{{message}}</p>
  </div>
</script>

Bước 3 - Khởi tạo ứng dụng ember của bạn

Chỉ cần thêm một khối tập lệnh khác App = Ember.Application.create({});để tải ember.js và khởi tạo ứng dụng của bạn.

<script type='text/javascript'>
  App = Ember.Application.create({});
</script>

Đó là tất cả những gì bạn cần để tạo một ứng dụng ember cơ bản, nhưng nó không thú vị lắm.

Bước 4: Thêm bộ điều khiển

Ember đánh giá từng mẫu ghi đông trong ngữ cảnh của bộ điều khiển. Vì vậy, applicationmẫu có một sự phù hợp ApplicationController. Ember tạo là tự động nếu bạn không xác định, nhưng ở đây hãy tùy chỉnh nó để thêm thuộc tính thông báo.

<script type='text/javascript'>
App.ApplicationController = Ember.Controller.extend({
    message: 'This is the application template' 
});
</script>

Bước 5: Xác định các tuyến + nhiều bộ điều khiển và mẫu hơn

Bộ định tuyến Ember giúp dễ dàng kết hợp các mẫu / bộ điều khiển vào một ứng dụng.

<script type='text/javascript'>
  App.Router.map(function() {
    this.route("index", { path: "/" });
    this.route("list", { path: "/list" });
  });

  App.IndexController = Ember.Controller.extend({
    message: 'Hello! See how index.hbs is evaluated in the context of IndexController' 
  });

  App.ListRoute = Ember.Route.extend({
    setupController: function(controller) {
      controller.set('content', ['angular.js', 'backbone.js', 'ember.js']);
    }
  });

</script>

Để làm cho việc này hoạt động, chúng tôi sửa đổi mẫu ứng dụng của mình bằng cách thêm một {{outlet}}người trợ giúp. Bộ định tuyến Ember sẽ hiển thị mẫu phù hợp vào ổ cắm tùy thuộc vào lộ trình của người dùng. Chúng tôi cũng sẽ sử dụng trình {{linkTo}}trợ giúp để thêm liên kết điều hướng.

    <script type="text/x-handlebars" data-template-name="application">
      <div class="container">
          <h1>Ember.js is easy?<small> Minimum Viable Ember.js QuickStart Guide</small></h1>
        <p>{{message}}</p>
        <div class="row">
          {{#linkTo index class="span3 btn btn-large btn-block"}}Home{{/linkTo}}
          {{#linkTo list class="span3 btn btn-large btn-block"}}List{{/linkTo}}
        </div>
        {{outlet}}
      </div>
    </script>

    <script type="text/x-handlebars" data-template-name="list">
      <h3 class="demo-panel-title">This is the list template</h3>
      <ul>
      {{#each item in content}}
          <li>{{item}}</li>
      {{/each}}
       </ul>
    </script>

    <script type="text/x-handlebars" data-template-name="index">
      <h3 class="demo-panel-title">This is the index template</h3>
      <p>{{message}}</p>
    </script>

Làm xong!

Một ví dụ làm việc của ứng dụng này có sẵn ở đây .

Bạn có thể sử dụng jsFiddle này làm điểm khởi đầu cho các ứng dụng ember của riêng mình

Bước tiếp theo...

Để tham khảo, câu trả lời ban đầu của tôi:


Câu hỏi của tôi dành cho bất kỳ chuyên gia nào của Ember.js và chắc chắn là các tác giả hướng dẫn tương ứng: Khi nào tôi nên sử dụng các mẫu thiết kế từ một hướng dẫn này và khi nào từ hướng dẫn khác?

Hai hướng dẫn này đại diện cho các phương pháp hay nhất tại thời điểm chúng được viết. Chắc chắn rằng có điều gì đó có thể học được từ mỗi người, nhưng đáng buồn là cả hai đều bị lỗi thời vì ember.js đang di chuyển rất nhanh. Trong số hai, Trek's hiện tại hơn nhiều.

Những thành phần nào trong mỗi thành phần là sở thích cá nhân và những thành phần nào sẽ chứng tỏ là cần thiết khi ứng dụng của tôi trưởng thành? Nếu bạn đang phát triển một ứng dụng ember mới, tôi không khuyên bạn nên làm theo phương pháp Code Lab. Nó chỉ là quá lỗi thời để có thể hữu ích.

Trong thiết kế của Code Lab, Ember dường như gần với tồn tại hơn trong ứng dụng (mặc dù nó là 100% JS tùy chỉnh của anh ấy), trong khi ứng dụng của Trek dường như sống động hơn trong Ember.

Nhận xét của bạn rất thú vị. CodeLab đang tận dụng các thành phần ember cốt lõi và truy cập chúng từ phạm vi toàn cầu. Khi nó được viết (9 tháng trước), điều này khá phổ biến nhưng ngày nay phương pháp hay nhất để viết các ứng dụng ember gần với những gì Trek đang làm.

Điều đó nói rằng, ngay cả hướng dẫn của Trek cũng đang trở nên lỗi thời. Các thành phần được yêu cầu ApplicationViewApplicationControllerhiện được tạo bởi chính khuôn khổ.

Cho đến nay, nguồn tài liệu mới nhất là bộ hướng dẫn được xuất bản tại http://emberjs.com/guides/ - chúng được viết từ đầu trong vài tuần qua và phản ánh phiên bản ember (trước khi phát hành) mới nhất.

Tôi cũng sẽ xem dự án wip của trek tại đây: https://github.com/trek/ember-todos-with-build-tools-tests-and-other-modern-conveniences

CHỈNH SỬA :

@ sly7_7: Tôi cũng sẽ đưa ra một ví dụ khác, sử dụng ember-data https://github.com/dgeb/ember_data_example


1
Ban đầu, tôi viết Code Lab như một cách để thu hút mọi người tham gia vào các khung công tác Ember và MVC, nhưng thật không may, tôi đã không có thời gian để cập nhật nó và có vẻ như nó đã đủ thay đổi để những người khác đã tạo ra các tài nguyên tốt hơn. Cá nhân tôi, kể từ khi chuyển sang sử dụng Angular cho hầu hết các dự án của mình, tôi thấy nó yêu cầu ít JavaScript hơn và dễ hiểu hơn một chút. Lựa chọn MVC của bạn là hoàn toàn cá nhân, vì vậy đừng để tôi làm bạn lung lay.
PeteLe

1
Đã truy cập emberjs.com/guides và trong khi các giải thích được thực hiện cực kỳ tốt, các ví dụ không đủ hoàn chỉnh để chạy như hiện tại và bị các tham chiếu chuyển tiếp nhận thức, điều này gây phiền hà cho một người nào đó mới hoàn toàn. Chúng vẫn đang được cập nhật hay có tài nguyên miễn phí?
Walt Stoneburner

1
Để chắc chắn rằng chúng vẫn đang được cập nhật. Tính đến hôm nay có lẽ là cách tốt nhất để bắt đầu một cách nhanh chóng được kiểm tra ra screencast peepcode tại địa chỉ: peepcode.com/products/emberjs
Mike Grassotti

2
@MikeGrassotti Có cách nào bạn có thể chỉnh sửa câu trả lời của mình để hiển thị mã nguồn để bắt đầu với EmberJS không? Có thể hướng dẫn từng bước về cách tạo ứng dụng "Hello World" với EmberJS?
George Stocker

2
@MikeGrassotti Các ember.js thẻ wiki cần được cập nhật để bao gồm câu hỏi này và câu trả lời
MilkyWayJoe


4

Tôi thực sự khuyên bạn nên sử dụng Yeoman và bộ tạo than hồng đi kèm của nó. Bạn sẽ có được tất cả các công cụ cần thiết để phát triển, kiểm tra và chuẩn bị ứng dụng để sản xuất. Như một phần thưởng bổ sung, bạn sẽ có thể chia các mẫu xem của mình thành nhiều tệp và bắt đầu với cấu trúc thư mục thông minh sẽ tạo điều kiện thuận lợi cho bạn trong việc tạo một cơ sở mã có thể bảo trì.

Tôi đã viết một bài hướng dẫn về cách thiết lập và chạy nó trong khoảng 5 phút. Chỉ cần cài đặt node.js và làm theo tại đây



1

Cũng xem qua hướng dẫn miễn phí này có tiêu đề Let's Learn Ember từ Tuts + Premium. Nó miễn phí vì nó từ free coursesloạt phim của họ . Khóa học này, như những người của Tuts gọi, được chia thành mười bốn chương dễ theo dõi.

Tôi hi vọng cái này giúp được.

Trân trọng,


0

Tôi thích cách tiếp cận yeoman bằng than hơn. Nó cung cấp cho bạn rất nhiều thứ bao gồm:

  • một kiến ​​trúc thư mục đẹp bằng cách sử dụng cách tiếp cận 'mô-đun'.
  • neuter
  • tải lại trực tiếp
  • làm nhỏ
  • không phù hợp
  • jshint

và hơn thế nữa.

và nó siêu dễ cài đặt, chỉ cần chạy yo charcoalđể tạo một ứng dụng sau đó yo charcoal:module myModulethêm một mô-đun mới.

thêm thông tin tại đây: https://github.com/thomasboyt/charcoal


0

Tôi vừa tạo Bộ khởi động, nếu bạn muốn sử dụng EmberJS mới nhất với Ember-Data, với công cụ mẫu Emblem. Tất cả được gói gọn trong Middleman, vì vậy bạn có thể phát triển bằng CoffeeScript. Mọi thứ trên GitHub của tôi: http://goo.gl/a7kz6y


0

Mặc dù Flame đã lỗi thời trên Ember.js vẫn là một hướng dẫn tốt cho những người lần đầu tiên nhìn vào ember.


0

Tôi đã bắt đầu xây dựng một loạt video bắt đầu từ trước Ember và xây dựng theo hướng sử dụng Ember trong cơn giận dữ trong các trường hợp sử dụng nghiêm trọng cho những thứ trong thế giới thực.

Nếu bạn quan tâm đến việc điều này xuất hiện trong ngày (tôi rất vui khi cuối cùng công khai nó nếu có sự quan tâm), bạn chắc chắn nên xem bài đăng tôi đã tạo và nhấn "thích" (hoặc chỉ cần bình luận ở đây, Tôi đoán):

http://discuss.emberjs.com/t/making-ember-easier-to-approach-aka-crazy-screencasts-videos-that-will-stick-in-your-mind-for-learning-ember/5284

Tôi rất muốn làm nó để giúp cộng đồng phát triển nhưng cũng để giúp mọi người học cách xây dựng các trang web chuẩn một cách dễ dàng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.