Vue.js练习:通过json占位符实现AdventureFoods

需积分: 5 0 下载量 105 浏览量 更新于2025-01-12 收藏 4.76MB ZIP 举报
首先,我们会讨论Vue.js的基本概念和组件化开发流程。接着,我们将重点关注如何通过json-server快速搭建本地后端服务,并用db.json文件模拟数据库。在此过程中,我们将深入了解如何通过CD(更改目录)命令切换到后端目录,并执行相关命令以启动json-server,使其监听db.json文件中的数据变化。这个过程将涉及到Vue.js与JSON数据交互的基本知识,以及如何在Vue.js项目中使用JSON占位符动态显示内容。" Vue.js是一个流行的JavaScript框架,用于构建用户界面和单页应用程序。它采用了组件化的开发方式,允许开发者将应用分割成小的、独立的部分,从而提高代码的可维护性和可重用性。Vue.js的核心库只关注视图层,但同时,它也易于与现代工具和库(如webpack或Babel)整合,从而提供更丰富的功能。 在本教程中,我们使用json-server来模拟一个简单的REST API服务器。json-server是一个轻量级的Node.js模块,能够根据一个JSON文件快速生成RESTful API。通过使用db.json文件作为数据源,json-server可以让我们在没有真实后端服务器的情况下测试前端应用。 具体步骤如下: 1. 首先需要安装Node.js和npm(Node.js的包管理器),因为json-server需要通过npm来安装。 2. 接着,在命令行界面(CLI)中输入`npm install -g json-server`来全局安装json-server。这一步将允许我们在任何项目目录下运行json-server命令。 3. 在项目根目录下创建一个名为`db.json`的文件。在这个文件中,你可以定义一些初始数据,比如一个食品列表,用于模拟数据库中的数据。 4. 通过命令行切换到项目的后端目录,可以通过执行`cd backend`来实现。 5. 在后端目录中,运行json-server,并使用`--watch`参数来启动服务。这样json-server会监听`db.json`文件的任何更改,并实时反映到API中。命令为:`json-server --watch db.json`。 在Vue.js项目中,我们可以创建一个Vue组件,用来展示从json-server获取的JSON数据。在Vue组件中,我们通常使用Vue的`data`函数来定义组件的数据,使用`methods`对象来定义一些方法。例如,可以创建一个方法来从后端获取数据,并在组件加载时调用该方法。 ```javascript <template> <div> <ul> <li v-for="food in foods" :key="food.id">{{ food.name }}</li> </ul> </div> </template> <script> export default { data() { return { foods: [] }; }, created() { this.fetchFoods(); }, methods: { fetchFoods() { fetch('http://localhost:3000/foods') .then(response => response.json()) .then(data => { this.foods = data; }); } } }; </script> ``` 在上面的Vue组件代码中,我们定义了一个名为`foods`的数据属性,用于存储从后端获取的食品列表。我们使用了Vue生命周期钩子`created`来确保在组件实例被创建后立即调用`fetchFoods`方法。`fetchFoods`方法使用JavaScript的`fetch` API来从后端获取数据,并将结果赋值给`foods`数组。使用`v-for`指令,我们可以在模板中遍历`foods`数组,并显示每个食品的名称。 总结来说,本教程通过一个名为“AdventureFoods”的项目,演示了如何结合使用Vue.js和JSON占位符进行前端开发。我们学习了如何使用json-server来模拟后端API,并通过Vue.js组件动态地展示JSON数据。这种方法可以用来快速开发和测试前端应用,特别是在没有后端开发资源的情况下。

VM8007:1 Uncaught SyntaxError: "undefined" is not valid JSON at JSON.parse (<anonymous>) at eval (settingOperate.vue:426:1) eval @ settingOperate.vue:426 setTimeout(异步) _callee5$ @ settingOperate.vue:425 tryCatch @ regeneratorRuntime.js:44 eval @ regeneratorRuntime.js:125 eval @ regeneratorRuntime.js:69 asyncGeneratorStep @ asyncToGenerator.js:3 _next @ asyncToGenerator.js:22 Promise.then(异步) asyncGeneratorStep @ asyncToGenerator.js:12 _next @ asyncToGenerator.js:22 eval @ asyncToGenerator.js:27 eval @ asyncToGenerator.js:19 performinfuns @ settingOperate.vue:427 _callee4$ @ settingOperate.vue:389 tryCatch @ regeneratorRuntime.js:44 eval @ regeneratorRuntime.js:125 eval @ regeneratorRuntime.js:69 asyncGeneratorStep @ asyncToGenerator.js:3 _next @ asyncToGenerator.js:22 eval @ asyncToGenerator.js:27 eval @ asyncToGenerator.js:19 changecmd @ settingOperate.vue:390 _callee3$ @ settingOperate.vue:379 tryCatch @ regeneratorRuntime.js:44 eval @ regeneratorRuntime.js:125 eval @ regeneratorRuntime.js:69 asyncGeneratorStep @ asyncToGenerator.js:3 _next @ asyncToGenerator.js:22 Promise.then(异步) asyncGeneratorStep @ asyncToGenerator.js:12 _next @ asyncToGenerator.js:22 eval @ asyncToGenerator.js:27 eval @ asyncToGenerator.js:19 performinfun @ settingOperate.vue:379 _callee$ @ settingOperate.vue:296 tryCatch @ regeneratorRuntime.js:44 eval @ regeneratorRuntime.js:125 eval @ regeneratorRuntime.js:69 asyncGeneratorStep @ asyncToGenerator.js:3 _next @ asyncToGenerator.js:22 Promise.then(异步) asyncGeneratorStep @ asyncToGenerator.js:12 _next @ asyncToGenerator.js:22 eval @ asyncToGenerator.js:27 eval @ asyncToGenerator.js:19 setForm @ settingOperate.vue:322 updateOperate @ add.vue:549 click @ add.vue:686 invokeWithErrorHandling @ vue.runtime.esm.js:1854 invoker @ vue.runtime.esm.js:2179 invokeWithErrorHandling @ vue.runtime.esm.js:1854 Vue.$emit @ vue.runtime.esm.js:3888 handleClick @ element-ui.common.js:9417 invokeWithErrorHandling @ vue.runtime.esm.js:1854 invoker @ vue.runtime.esm.js:2179 original._wrapper @ vue.runtime.esm.js:6917

199 浏览量
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部