簡體   English   中英

在沒有模塊支持的情況下如何使用ember.js

[英]How to use ember.js without module support

ember.js指南假設其中一個具有完整的ES6支持,例如http://guides.emberjs.com/v2.2.0/routing/specifying-a-routes-model/使用export default構造顯示,並且未指定任何其他實現目標的方式。 但是,並非在ember支持的所有瀏覽器中實現模塊功能。

如何在不支持模塊的瀏覽器中使用這些功能? 這些示例中的代碼將如何轉換為ES5?

文檔假定您正在使用轉碼工具,因為推薦的工具ember-cli確實使用了。 除非您有充分的理由不使用它,否則絕對應該研究它。

但是,沒有它就可以很好地工作。 例如,在沒有模塊系統的情況下,Ember將controller:posts.index映射到App.PostsIndexController 因此,這應該適用於您鏈接的示例:

App.Router.map(function() {
  this.route('favorite-posts');
});

App.FavoritePostsRoute = Ember.Route.extend({
  model() {
    return this.store.query('post', { favorite: true });
  }
});

您也可以將Ember與自己的模塊支持一起使用。 我成功地有了一個基於匯總的Ember項目。 但是,它確實需要更多的工作才能使解析程序找到您的類(該解析程序鏈接還記錄了ember與名稱映射的關系)。 沒什么難的,但是您必須構建一個簡短的腳本來生成注冊。


編輯blessenm:累積灰燼

不幸的是,我無法共享此代碼,但它的工作方式如下:

  1. 腳本通過在遇到的每個.hbs文件上調用ember-template-compiler.js來掃描項目目錄並編譯模板。

  2. 腳本(實際上是同一腳本)掃描項目目錄並生成主入口點。 這很簡單,如果看到,例如gallery/models/collection.js和`gallery / routes / picture.js',它將生成一個如下所示的主文件:

     import r1 from 'gallery/models/collection.js'; import r2 from 'gallery/routes/picture/index.js'; // ... Ember.Application.initializer({ name: 'registrations', initialize: function (app) { app.register("model:collection", r1); app.register("route:picture.index", r2); // ... } }); 

    它應該只是將您的文件名映射到解析器名稱。 另外,您可以控制目錄的組織方式。

  3. 在生成的文件上調用匯總。 它將把所有東西拉在一起。 我使用IIFE導出格式,跳過了所有運行時分辨率混亂的問題。 我建議您設置匯總以與babel一起使用,以便可以使用ES6語法。

我不使用任何特定於余燼的模塊,但是添加它應該不會太難。 我的猜測是,這主要是正確設置匯總導入分辨率的問題。 就我所知,它可能是開箱即用的。

您應該研究使用Ember CLI http://ember-cli.com/

您在ES6中編寫代碼,然后向下移植到ES5。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM