没有后端的vuejs前端开发:如何编写固定装置?
vuejs frontend development without backend: how to write fixtures?
我们正在构建一个后端与前端完全分离的应用程序。通信将通过 rest-api、特定端点、json 等发生
前端是使用 vue-cli 作为 SPA vue.js 应用程序(使用 vuex 和 vue-router)开发的,后端是 Rails 5 API-only 应用程序。
前端和后端的开发将由不同的团队并行完成,两者都遵守相同的 API。
我的问题是:没有后端数据,前端团队如何开发前端?例如,要显示用户个人资料,他们需要从后端为该用户提供相应的 JSON。但是由于后端还没有完成,请求数据的端点还没有工作。
他们是否应该在前端应用程序中创建固定装置(例如 "sample-user.json")并在开发时使用它?这种情况下的最佳实践是什么,以便开发前端不依赖于后端可用和交付数据?
根据我过去项目的经验,对于小的开发周期,只使用静态 json 文件来模拟请求的结果真的很方便。我基本上已经在我的 vuex 模块中导入了所需的文件,并将它们用作我的操作中的假结果,提交了与我对普通端点相同的突变,但使用模拟而不是 http 结果作为突变的参数。这很方便,一旦端点准备就绪,您只需更改一行。这在 scrum 中效果很好,例如,当您的开发周期很短并且您知道在 sprint 结束时,您的端点无论如何都会准备就绪。
当您出于某种原因长时间未获得所需端点时,可能会有点棘手。我们曾经经历过这样的情况,整个微服务一个月都无法使用,但我们仍然需要在前端开发丰富的功能。在这种情况下,我们使用 wiremock 从该微服务中模拟该功能的各种端点。虽然这是一个很大的开销,而且只有当您知道自己处于一个漫长的开发周期中时才真正可行。否则我建议只使用静态文件。
在我们的一个项目中,我们仅使用静态 json 文件独立于后端开发前端。
我们使用了 vue-cli-service
,因此只需在 vue.config.js
中指定 contentBase
选项即可使其为静态 json 文件提供服务。
这是一个(简化的)示例:
vue.config.js:
module.exports = {
devServer: {
contentBase: path.join(__dirname, 'src', 'api')
}
}
在环境变量中添加静态 json 路径,例如在 .env
文件中:
VUE_APP_API_USERS = 'users.json'
然后访问API时:
import axios from 'axios';
axios.get(process.env.VUE_APP_API_USERS)
.then(response => this.users = response.data)
.catch(error => console.log(error));
users.json
目录结构中:
├── package.json
├── src
│ ├── api
│ │ └── users.json
│ ├── App.vue
│ ├── assets
│ │ └── logo.png
│ └── main.js
├── vue.config.js
└── yarn.lock
运行vue-cli-service serve
。它现在将为 users.json 调用 API。
使用的vue-cli-service版本:3.6.0
我们正在构建一个后端与前端完全分离的应用程序。通信将通过 rest-api、特定端点、json 等发生
前端是使用 vue-cli 作为 SPA vue.js 应用程序(使用 vuex 和 vue-router)开发的,后端是 Rails 5 API-only 应用程序。
前端和后端的开发将由不同的团队并行完成,两者都遵守相同的 API。
我的问题是:没有后端数据,前端团队如何开发前端?例如,要显示用户个人资料,他们需要从后端为该用户提供相应的 JSON。但是由于后端还没有完成,请求数据的端点还没有工作。
他们是否应该在前端应用程序中创建固定装置(例如 "sample-user.json")并在开发时使用它?这种情况下的最佳实践是什么,以便开发前端不依赖于后端可用和交付数据?
根据我过去项目的经验,对于小的开发周期,只使用静态 json 文件来模拟请求的结果真的很方便。我基本上已经在我的 vuex 模块中导入了所需的文件,并将它们用作我的操作中的假结果,提交了与我对普通端点相同的突变,但使用模拟而不是 http 结果作为突变的参数。这很方便,一旦端点准备就绪,您只需更改一行。这在 scrum 中效果很好,例如,当您的开发周期很短并且您知道在 sprint 结束时,您的端点无论如何都会准备就绪。
当您出于某种原因长时间未获得所需端点时,可能会有点棘手。我们曾经经历过这样的情况,整个微服务一个月都无法使用,但我们仍然需要在前端开发丰富的功能。在这种情况下,我们使用 wiremock 从该微服务中模拟该功能的各种端点。虽然这是一个很大的开销,而且只有当您知道自己处于一个漫长的开发周期中时才真正可行。否则我建议只使用静态文件。
在我们的一个项目中,我们仅使用静态 json 文件独立于后端开发前端。
我们使用了 vue-cli-service
,因此只需在 vue.config.js
中指定 contentBase
选项即可使其为静态 json 文件提供服务。
这是一个(简化的)示例:
vue.config.js:
module.exports = {
devServer: {
contentBase: path.join(__dirname, 'src', 'api')
}
}
在环境变量中添加静态 json 路径,例如在 .env
文件中:
VUE_APP_API_USERS = 'users.json'
然后访问API时:
import axios from 'axios';
axios.get(process.env.VUE_APP_API_USERS)
.then(response => this.users = response.data)
.catch(error => console.log(error));
users.json
目录结构中:
├── package.json
├── src
│ ├── api
│ │ └── users.json
│ ├── App.vue
│ ├── assets
│ │ └── logo.png
│ └── main.js
├── vue.config.js
└── yarn.lock
运行vue-cli-service serve
。它现在将为 users.json 调用 API。
使用的vue-cli-service版本:3.6.0