> For the complete documentation index, see [llms.txt](https://narro.gitbook.io/tinyts-handbook-cn/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://narro.gitbook.io/tinyts-handbook-cn/services/start.md).

# 创建服务

首先，让我们创建一个示例服务。代码如下：

```
class InfoService {

    /**
     * GetGradeInfo 获取年级信息
     */
    GetGradeInfo() {
        return ["grade one", "grade two"];
    }

    /**
     * GetStudentInfo 获取用户信息
     * @param success 成功回调
     */
    GetStudentInfo(success) {
        $.ajax({
            url: "/student/",
            method: "get",
            data: {
                grade: "grade one"
            },
            success: (data) => {
                success(data);
            }
        });
    }
}

// 使用该服务
var s = new InfoService();
var gradeInfoes = s.GetGradeInfo();
console.log(gradeInfoes);
```

可以看到，示例中InfoService这个服务类提供了一个获取年级信息的方法GetGradeInfo，该方法返回一个字符串数组，数组中的每一项代表一个年级。我们在使用服务类的时候，首先初始化了一个服务，然后调用GetGradeInfo方法获取信息并输出到控制台。可能你会感觉，我们这么做有点多此一举，直接在使用的地方定义grade信息是否可以省去以上大部分代码。\
想象你现在正在开发一个校园信息管理系统，你的系统成功地开发并使用了两年。突然有一天，你接到校长的通知，他们学校从小学五年制变成了小学六年制，也就是意味着他们的年级比之前多了一个六年级。校长问你，你的系统是否能正常地运行？这个时候，你可能就需要全局搜索那些grade信息，并逐个为他们加入grade six这个年级。如果你有丰富的开发经验，你就该知道全局替换是一个非常忌讳的做法，他会引入更多的问题。\
那么使用全局变量呢？你可能已经想到了这个方案。那么恭喜你，这是一种正确的思维，**我们需要把这些多次使用的静态数据设置为全局的**。使用服务也能完成这样的任务，与使用全局变量不同的是，使用服务可以给用户一个统一的接口，或者一种思想，当你需要用到一个数据的时候，调用服务就对了。
