有沒有人在RequireJS和Ember.js上有過很多成功?看到Ember喜歡將其結構分配給一個全局對象,我發現它可以真正與Requirej對接。對於Ember,LAB.js會更好嗎?Ember.js和RequireJS
回答
編輯(2012-01-30):我在bitbucket上的repo中推出了一個更完整的例子。
我已成功使用RequireJS加載Ember.js以及日期時間插件(github)。 Ember命名空間本身保持全局,但我所有的應用程序數據,包括我的Ember.Application實例,都通過RequireJS保存在模塊中。我還使用'text!'加載了句柄模板插入。
我還沒有任何問題,但這不是一個完整的應用程序,更多的是一個概念證明。以下是我的工作方式。我可以直接使用Safari加載我的應用程序,而不需要服務器。您仍然需要一臺服務器才能使用Chrome加載該服務器,該服務器不允許JavaScript從文件系統加載文件。
1)因爲Ember.js使用BPM/Spade,所以我無法使用repo的克隆。相反,我的包裹編譯版本模塊中:
的lib/ember.js:
define(['jquery',
'plugins/order!lib/ember-0.9.3.js',
'plugins/order!lib/ember-datetime.js'],
function() {
return Ember;
});
注意,這本身並沒有從全球範圍隱藏灰燼。但是我正在設置一些東西,所以如果將來我可以隱藏它,那麼依賴於這個模塊的其他模塊仍然可以按原樣工作。
2)模塊可以參考灰燼像這樣:
應用程序/ core.js:
define(['lib/ember'], function(Em) {
MyApp = Em.Application.create({
VERSION: "0.0.1"
});
return MyApp;
});
這裏, 「EM」 也可以命名爲別的東西;它並不直接指向全局變量,而是來自lib/ember.js中定義的模塊。
3)要由灰燼訪問,車把必須註冊:
應用/模板/我-template.handlebars:
MyApp v{{MyApp.VERSION}}.
應用程序/視圖/我的 - view.js:
define(['lib/ember',
'plugins/text!app/templates/my-template.handlebars'],
function(Em, myTemplateSource) {
Em.TEMPLATES["my-template"] = Em.Handlebars.compile(myTemplateSource);
var myView = Em.View.create({
templateName: "my-template";
});
return myView;
});
4)我正在使用require-jquery.js(jQuery和RequireJS捆綁在一起)。
當您遵循您的方法時,出現此錯誤: 錯誤:模塊名稱'ember 「運行時間」尚未加載上下文:_你有任何想法如何解決?我出來的想法:) – 2012-01-18 09:07:06
也許你有一個公共回購,我可以看看你的樣本?這將是方便! – 2012-01-18 09:26:55
@ claude-precourt由於您未使用var關鍵字,因此它看起來像MyApp被聲明爲全局變量。你確定這個工作也沒有使用全局上下文嗎? – 2012-01-19 08:04:10
有一個更好的方法來包含一個可以有多個模板塊的句柄文件。它可以在一個包括編譯和可用。
用於例如:您有以下把手模板文件:
../templates/sample.handlebars
<div><!-- just a filler html tag. Wont show up in your page -->
<script type="text/x-handlebars" data-template-name="template1">
Some Html or Template Content ...
</script>
<script type="text/x-handlebars" data-template-name="template2">
Some Html or Template Content ...
</script>
<script type="text/x-handlebars" data-template-name="template3">
Some Html or Template Content ...
</script>
</div>
../views/sampleView.js
define([
'jquery',
'lib/ember',
'plugins/text!../templates/sample.handlebars'],
function($, Em, myTemplateSource) {
// Bootstrap method accepts a context element under which all handlebars
// template blocks are defined. The filler <div> in this case.
// Compiles and assigns to the EM.TEMPLATES hash correctly.
Em.Handlebars.bootstrap($(myTemplateSource));
var myView = Em.View.create({
templateName: "template1";
});
return myView;
});
非常優雅。使用requireJS作爲Ember的「最佳實踐」,或者更多的方式來組織大型項目?我真的在尋找一種方法來構建我的項目,但我有一個不好的感覺,就是讓代理一直預加載所有的東西。另一方面,這樣更清楚。 – nembleton 2012-10-28 10:14:31
我剛剛上傳到Github的EmberJS + RequireJS入門套件,您可以檢查它https://github.com/fernandogmar/Emberjs-RequireJS
任何好的建議將不勝感激。玩的開心!
含羞草有幾個很好的示例項目使用Ember和Require.js。這裏有一個結帳:https://github.com/dbashford/mimosa-ember-emblem-templates。讓它進入的說明在README中。
Ember CLI支持轉換到AMD的ES6模塊語法。似乎社區正在使用Ember CLI作爲使用Ember的首選方式。
- 1. RequireJS和Prototypal Inheritance
- 2. gulp,usemin和requireJS
- 3. RequireJS和Globals
- 4. Grunt usemin和requirejs
- 5. Requirejs Backbone和jqueryui
- 6. Requirejs Angular和TypeScript
- 7. RequireJS和原型
- 8. Backbone,RequireJS和Tree
- 9. requireJS和LESS
- 10. Django和Ember.js
- 11. DataTables,Ember.js和
- 12. Ember.js和ArrayController
- 13. Ember.js和PHP API
- 14. RequireJS和Angular路線
- 15. 使用requirejs和retinajs
- 16. 使用requireJs和Qtip
- 17. 骨幹RequireJS和delegateEvents
- 18. 流星1.3和RequireJS
- 19. 西蘭花和RequireJS
- 20. requireJS和Google+ Javascript API
- 21. requireJS和AngularJS動畫
- 22. iCheck與AngularJS和RequireJS
- 23. 與knockoutjs,requirejs和mvc4
- 24. requirejs和其他庫
- 25. Ember.js和jsfiddle問題
- 26. 使用Ember.js和Sock.js
- 27. Ember.js和Twitter Bootstrap Popover
- 28. 測試Ember.js和runloop
- 29. ember.js和服務器
- 30. Karma和RequireJS:避免重複src和測試RequireJS配置
我還發現requirejs很難與其他庫一起使用,反之亦然。這就是爲什麼我創建了一個使用起來更容易,並且使用角度進行測試的庫。在底部有一個演示應用程序:gngeorgiev.github.io/Modulerr.js您也可以將所有腳本合併爲一個,而不依賴於Modulerr.js – 2014-08-10 21:30:12