我的背景是老式Web开发和LAMP堆栈开发以及Linux服务器管理。这意味着我可以轻松编写HTML,PHP,CSS和JavsScript的代码,以及管理Linux服务器。但是,就网络客户端技术而言,我决定需要有点“现代”,并在Mac OS X 10.9.5计算机上自学EmberJS。核心版本如下:
Ember CLI版本:1.13.12
节点JS版本:4.2.2
NPM(节点程序包管理器)版本:2.14.10
值班员:4.1.0
EmberJS官方网站上的基本“自动更新手柄模板”示例有效,但我在the “Components” example on the EmberJS homepage上迷路了。
到目前为止,我的过程是启动一个新的应用程序,如下所示:
ember new new-app
然后,一旦完成并建立了文件夹结构,我就可以基于“Components” example创建新文档,如下所示:参见屏幕截图中的示例:
app/templates/components/gravatar-image.js
app/templates/application.hbs
app/templates/components/gravatar-image.hbs
因为我是EmberJS的新手,所以我假定这是此简单应用程序示例的正确文件夹结构,因为
templates/application.hbs
是我看到的安装了application.hbs
的唯一位置,并且该简单主页示例中的所有路径都相对于某个根目录,对吗?但是当我尝试像这样运行它时:ember serve
它始终失败,并出现以下错误:
version: 1.13.12
Livereload server on http://localhost:49152
Serving on http://localhost:4200/
EEXIST: file already exists, symlink '/path/to/new-app/tmp/template_compiler-input_base_path-97V11oKY.tmp/0/ember-sandbox/templates/components/gravatar-image.js' -> '/Applications/MAMP/htdocs/Ember-Sandbox/tmp/template_compiler-output_path-Tn5z8iTb.tmp/ember-sandbox/templates/components/gravatar-image.js'
做一些基本的在线搜索使我相信这可能需要我删除缓存的文件和依赖项,如下所示:
rm -rf node_modules tmp dist bower_components
然后像这样重新安装它们:
npm install && bower install
但是即使这样做,同样的
EEXIST: file already exists, symlink…
也会再次弹出。我究竟做错了什么?我该怎么做才能使这个非常基本的示例启动并运行?
最佳答案
这里的问题是您已将gravatar-image.js
文件放置在templates/components
文件夹中,并且该文件应该在components
文件夹中。在templates
文件夹中仅包含*.hbs
(templates
用于路由模板,templates/components
用于组件模板)。
还有一种构造名为POD
的文件夹的方法,其中有一个文件夹,其中包含组件名称及其文件。与您的组件将是这样的:gravatar-image/component.js
gravatar-image/template.hbs
如果您有兴趣使用此POD
结构,请检查this tutorial。
关于javascript - EmberJS官方主页上有关如何设置基本“组件”示例的指南,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33773650/