在主干JS中,我在哪里定义几个视图之间共享的功能?

In Backbone JS, where do I define functionality shared between several views?

本文关键字:视图 几个 之间 共享 功能 JS 定义 在哪里      更新时间:2023-09-26

我的Backbone JS应用程序使用了一堆web服务,虽然有些服务是特定于某些视图的,但有一些服务调用在站点的许多地方都使用。这些应该在哪里定义?它们是否属于myApp.webServices之类的地方?

想象一下,例如,应用程序使用用户目录web服务和天气数据服务,并且这些服务在许多不同的地方都需要。这是正确的做法吗?

myApp.webServices = {
  userDirectory: {
    getUser: function(userID) {
      // Do service call
      return foo;
    }
  },
  weather: {
    getWeather: function(cityName) {
      // Do service call
      return bar;
    }
  }
}

我会像组织其他地方一样组织这个:UserDirectoryWeatherService不是其他任何东西的一部分,所以它们属于自己的模块。

我使用ES6,所以在需要的地方(例如,在你的每个视图中):

import Weather from "services/Weather";
import Directory from "directories/Users";

不需要将它们绑定到一个单体。Backbone的强大之处在于,它不需要以任何一种方式来做,因此只需对应用程序结构做出合理的决定,然后根据该决定加载文件。