[英]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與名稱映射的關系)。 沒什么難的,但是您必須構建一個簡短的腳本來生成注冊。
不幸的是,我無法共享此代碼,但它的工作方式如下:
腳本通過在遇到的每個.hbs
文件上調用ember-template-compiler.js
來掃描項目目錄並編譯模板。
腳本(實際上是同一腳本)掃描項目目錄並生成主入口點。 這很簡單,如果看到,例如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); // ... } });
它應該只是將您的文件名映射到解析器名稱。 另外,您可以控制目錄的組織方式。
在生成的文件上調用匯總。 它將把所有東西拉在一起。 我使用IIFE導出格式,跳過了所有運行時分辨率混亂的問題。 我建議您設置匯總以與babel一起使用,以便可以使用ES6語法。
我不使用任何特定於余燼的模塊,但是添加它應該不會太難。 我的猜測是,這主要是正確設置匯總導入分辨率的問題。 就我所知,它可能是開箱即用的。
您應該研究使用Ember CLI http://ember-cli.com/
您在ES6中編寫代碼,然后向下移植到ES5。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.