2017-04-06 103 views
0

试图围绕Ember.js包裹我的头。 似乎我理解复杂的事情,但错过了小事情。ember.js包含自定义js

如何添加一个example.js文件? 为简单起见,假设该example.js文件只包含:

(function(){ 
    console.log("example is alive in console"); 
})(window); 

这应该显示“的例子是在控制台活着”浏览器控制台中。

我曾尝试: 加入余烬-CLI-build.js内app.import('vendor/javascripts/example.js');和添加<script src="{{rootURL}}vendor/javascripts/example.js"></script>到的index.html

控制台表示

ⓧ GET http://localhost:4200/vendor/javascripts/example.js
DEBUG:---- ---------------------------
DEBUG:Ember:2.11.3
DEBUG:Ember数据:2.12.1
DEBUG:jQuery的:3.2.1
DEBUG:-------------------------------
ⓧ GET http://localhost:4200/vendor/javascripts/example.js

我发现的所有答案都表明,只需将custom.js添加到供应商文件即可。可悲的是,我错过了一些东西。

回答

0

这适用于我当我巢资产在/vendor目录。 ember-cli构建过程将/vendor中的JS文件合并为一个vendor.js文件,您可以在app/index.html中看到链接。所以,把你的example.js文件在/vendor,然后导入添加到ember-cli-build.js

app.import('vendor/example.js`);

现在,当你启动服务器,从example.js你的代码应该执行,因为这将被纳入assets/vendor.js

+0

感谢您的验证。我将文件切换到根目录,同样的问题。然后将其放回/javascripts/example.js,并从index.html中移除''并重新启动ember服务器。看,知道这是愚蠢的。修改ember-cli-build.js时,你必须手动重新启动ember服务器。 livereload服务器不会接受更改。 – William

0

首先,Ember.js有Convention Over Configuration的方法,和您的URL可以做一个比正常的HTML网站很多东西。

无论你想用你的custom.js文件做什么,它都不是将它作为路径的烬way方式。您需要使用routes才能在应用中进行导航。尽管路线远不止导航。您可以指定用户可以在app/router.js文件中使用Router'smap函数浏览的应用程序的结构。

但是,如果您想将custome.js文件包含在您的应用程序中,并让custom.js为您的应用程序执行一些任务。您可以简单地继续并创建一个任何名称的目录,javascript例如在app目录中。把你的JavaScript文件放在里面。然后,你可以导入这些文件只是作为参考的余烬任何其他文件:

import customObject from 'yourApp/javascript/custom.js'; 

在这里,您custom.js应出口customObject

如果您想了解更多信息,请仔细阅读guides。如果你真的想了解更多,请致电API docs

注:在写这个答案目前烬-CLI版本的时间是@ 2.12.0

+0

“阅读指南和API文档”对我和所有未来的观众来说都含糊不清。我已经多次阅读过它们,但仍未找到具体提到的自定义js包含,它可以完成一项简单的任务,如启动计时器或显示控制台消息。您的建议将来自指南/ API内的什么位置?我似乎跳过了一个重要的章节! – William

0

当修改烬-CLI-build.js您必须手动重新启动服务器的余烬。 livereload服务器不会接受更改。