我一直在关注SuperRentals Ember。JS教程,还从here克隆了成品。
我很难确定我们在哪里定义了从租金中检索数据。<app_dir>/public/api中的json:
XXX@XXXX-XX:~/super rentals/public/api$ls
租金rentals.json
如果我换租金。如果将json改为另一个名称,则站点停止加载,这完全意味着需要更改一些配置或代码来反映这一点。
然而,当我在<app_dir>/app中递归地为“Rentals”生成grep时,返回的引用都不相关。
这个命名是按照约定进行的,还是在应用程序中的某个位置明确定义的?
1条答案
按热度按时间3z6pesqy1#
Per the Ember CLI docs:
public/
–此目录将被逐字复制到构建的应用程序的根目录中。将其用于没有构建步骤的资产,例如图像或字体通常在Ember应用程序中,我们使用它来提供静态资产,如文档所示的图像或字体。然而,在本例中,我们利用了一个事实,即教程中使用的JSON文件是静态的。当Ember CLI构建应用程序时,它会将e1d1e复制到
dist/api/rentals.json
中。(您可以自定义构建输出的位置,但默认情况下它是dist
。)然后,当任何web服务器为
dist
中的文件提供服务时,都可以从服务器请求这些文件。Ember-dev服务器提供/dist
中的所有文件,包括Ember应用程序本身,但也包括dist/api/rentals.json
,这意味着您可以执行fetch('/api/rentals.json')
并获取该数据块。Ember Data还具有一些细节,允许您将
fetch
转换为看起来更像ORM的东西:您可以定义一个Map到API资源的模型。(如果您使用的是JSON:API,这最容易实现,但如果需要,可以灵活地支持大多数REST或REST式API)。一旦定义了它们,就可以使用Ember的常规布局,通过与模型对应的名称来请求它们。在本教程中,最终定义了一个rental
模型,与rentals
“API端点”一起使用。结合Ember数据store
服务,您将编写this.store.findAll('rental')
而不是fetch('/api/rentals.json')
。如果Ember Data不适合您的后端,您当然可以继续直接使用
fetch
,或者将Axios作为可自定义层放在fetch
的顶部,或者使用GraphQL客户端等。本教程将Ember数据显示为一个很好的“开箱即用”选项,但Ember根本不需要它。