资讯专栏INFORMATION COLUMN

WEBPACK+VUE2.0开发请求本地模拟数据的配置方法

galaxy_robot / 1685人阅读

摘要:在其的下面增加以下代码代码为在根目录下创建存放模拟的数据文件我命名为,名字可以根据自己口味定义,但是要跟第一步的配置依赖要一样。数据存放文件也需要更改为为请求的地址,为查询数据的入口请求请求欧了

早期在vue构建工程文件在build里面有dev-server.js,但是后来构建去除了该文件集成到了webpack的webpack.dev.conf.js里面。 在项目制作过程中,作为一个前端,总不能时刻去调用后端的接口,需要模拟本地进行访问,于是总结一下模拟访问这里面的坑,希望对大家有帮助。

1.打开build下面的webpack.dev.conf.js文件进行配置

不多说 直接上代码:

代码为:

</>复制代码

  1. var glob = require("glob");
  2. const express = require("express")
  3. const app = express()
  4. var apiRoutes = express.Router()
  5. var appData = require("../data/config")
  6. var getApi= appData["get"];//所有的get请求
  7. var postApi= appData["post"];//所有的post请求
  8. //查找所有的json文件
  9. var entryJS = {};
  10. entryJS = glob.sync("./data/**/*.json").reduce(function (prev, curr) {
  11. prev[curr.slice(7)] = "."+curr;
  12. return prev;
  13. }, {});
  14. //合并所有的json文件到一个json中
  15. let jsonData={};
  16. for (var i in entryJS){
  17. let data = require(entryJS[i]);
  18. jsonData = Object.assign(jsonData, data);
  19. }
  20. app.use("/", apiRoutes)

以上为第一个配置,具体引用是做什么的,大家可以自己百度下相关。

2.还是上述文件找到devServer对象。

在其watchOptions的下面增加以下代码:

代码为:

</>复制代码

  1. before (app) {
  2. //get
  3. for(var i = 0;i < getApi.length; i++){
  4. var getData = jsonData[getApi[i].key];
  5. app.get(getApi[i].url, function (req, res) {
  6. res.json(getData);
  7. });
  8. }
  9. //post
  10. for(var i = 0;i < postApi.length; i++){
  11. var postData = jsonData[postApi[i].key];
  12. app.post(postApi[i].url,function (req, res) {
  13. res.json(postData);
  14. });
  15. }
  16. }
3.在根目录下创建存放模拟的数据文件

我命名为data,名字可以根据自己口味定义,但是要跟第一步的配置依赖要一样。

4.在data下面创建一个config.js目的是引入入口

url就是访问到后端接口地址,如果后端新加接口,在这里配置下入口,再新建一个json文件就妥妥的了。

5.下面这两个是模拟数据


到这个时候,npm run dev 后在浏览器里面输入接口地址应该可以打开了,如图:

有点小激动。但是还要完善后面的工作,这只是把服务搭好了,还要访问呢。

访问也是有步骤的:

在这里我用的是node的axios,没有用vue-axios,因为这个算是个插件,没必要用。在main.js里面增加:

</>复制代码

  1. import axios from ‘axios’
  2. Vue.prototype.$http = axios

然后使用就可以了

</>复制代码

  1. created () {
  2. // this.$http.get("/api/seller", {
  3. this.$http.post("/api/goods", {
  4. params: {
  5. appkey: "appkey",
  6. pagenum: 1,
  7. pagesize: 20,
  8. sort: "addtime"
  9. }
  10. }).then((res) => {
  11. console.log(res.data)
  12. }).catch((err) => {
  13. console.error(err)
  14. })
  15. }

整体就OK了,预祝开发大吉。

其实之前还有个坑,就是新版引入.CSS文件报错,老提示找不到postcss之类的,如图

</>复制代码

  1. Failed to compile.
  2. ./node_modules/css-loader?{“sourceMap”:false}!./node_modules/postcss-loader/lib?{“sourceMap”:false}!./node_modules/element-ui/lib/theme-chalk/index.css
  3. Module build failed: Error: No PostCSS Config found in: /Users/liliang/workspace/zyb/teacher-ui-basic/node_modules/element-ui/lib/theme-chalk
  4. at Error (native)
  5. at /Users/liliang/workspace/zyb/teacher-ui-basic/node_modules/postcss-load-config/index.js:51:26
  6. @ ./node_modules/element-ui/lib/theme-chalk/index.css 4:14-124 13:3-17:5 14:22-132
  7. @ ./src/main.js
  8. @ multi (webpack)-dev-server/client?http://localhost:8080 webpack/hot/dev-server ./src/main.js

其实这个挺坑爹的,根据错误是根本没有办法解决的,后来,查询文档,最终解决了。

解决办法:

在根目录下面增加一个文件:postcss.config.js

如图:

文件内容为:

</>复制代码

  1. module.exports = { plugins: [ require(‘autoprefixer’)() ]}

自己安装下上面的依赖:

</>复制代码

  1. npm install autoprefixer –save-dev

然后再次重启服务,如果不OK,你心里骂我就好。

大功告成。

===============
经过项目后来的运用,又优化了下模拟数据请求:直接上代码(其他都不变)

第一部分

</>复制代码

  1. //new start
  2. let glob = require("glob");
  3. const express = require("express");
  4. const app = express();
  5. let apiRoutes = express.Router()
  6. let appData = require("../data/config");
  7. let getApi = appData["get"];//所有的get请求
  8. let postApi = appData["post"];//所有的post请求
  9. //查找所有的json文件
  10. let entryJS = {};
  11. entryJS = glob.sync("./data/**/*.json").reduce(function (prev, curr) {
  12. prev[curr.slice(7)] = "." + curr;
  13. return prev;
  14. }, {});
  15. //合并所有的json文件到一个json中
  16. let jsonData = {};
  17. for (let i in entryJS) {
  18. let data = require(entryJS[i]);
  19. jsonData = Object.assign(jsonData, data);
  20. }
  21. app.use("/", apiRoutes);
  22. //new end
第二部分

</>复制代码

  1. //new start
  2. before(app) {
  3. //get 第三版
  4. for (let i in getApi) {
  5. app.get(getApi[i], function (req, res) {
  6. res.json(jsonData[i]);
  7. });
  8. }
  9. for (let j in postApi) {
  10. app.post(postApi[j], function (req, res) {
  11. res.json(jsonData[j]);
  12. });
  13. }
  14. }
  15. //new end

以上代码是webpack.dev.conf.js里配置。数据存放文件也需要更改为:

</>复制代码

  1. var data = {
  2. // url为请求的地址,key为查询数据的入口
  3. // get请求Api
  4. get: {
  5. seller: "/api/seller",
  6. goods: "/api/goods",
  7. tableList: "/api/tableList",
  8. strategyDetail: "/miscourse/shelfstrategy/shelfstrategydetail"
  9. },
  10. // post请求Api
  11. post: {
  12. goods: "/api/goods",
  13. strategyEdit: "/miscourse/shelfstrategy/shelfstrategyupdate",
  14. strategyAdd: "/miscourse/shelfstrategy/shelfstrategycreate",
  15. uploadfileimg: "/course/api/uploadfileimg"
  16. }
  17. };
  18. module.exports = data;

欧了

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/92292.html

相关文章

  • 关于Vue2一些值得推荐文章 -- 五、六月份

    摘要:五六月份推荐集合查看最新的请点击集前端最近很火的框架资源定时更新,欢迎一下。苏幕遮燎沈香宋周邦彦燎沈香,消溽暑。鸟雀呼晴,侵晓窥檐语。叶上初阳乾宿雨,水面清圆,一一风荷举。家住吴门,久作长安旅。五月渔郎相忆否。小楫轻舟,梦入芙蓉浦。 五、六月份推荐集合 查看github最新的Vue weekly;请::点击::集web前端最近很火的vue2框架资源;定时更新,欢迎 Star 一下。 苏...

    sutaking 评论0 收藏0
  • 关于Vue2一些值得推荐文章 -- 五、六月份

    摘要:五六月份推荐集合查看最新的请点击集前端最近很火的框架资源定时更新,欢迎一下。苏幕遮燎沈香宋周邦彦燎沈香,消溽暑。鸟雀呼晴,侵晓窥檐语。叶上初阳乾宿雨,水面清圆,一一风荷举。家住吴门,久作长安旅。五月渔郎相忆否。小楫轻舟,梦入芙蓉浦。 五、六月份推荐集合 查看github最新的Vue weekly;请::点击::集web前端最近很火的vue2框架资源;定时更新,欢迎 Star 一下。 苏...

    khs1994 评论0 收藏0
  • Vue2.0开发仿豆瓣电影WebApp

    摘要:从之前黄轶老师的高仿外卖开始接触过这个滚动库,感觉体验感很好,用起来也比较顺手,所以在后来的项目联系中就一直在使用。 前言 虽然在此之前已经有类似的仿豆瓣电影的webapp,但或是开发的有些简洁功能不太完善,或是体验感觉得可以再完善下,所以自己摸索着对比豆瓣和豆瓣电影两款app做了一下,初步满足了自己的想法,经过几次完善基本不会出现bug,如果发现存在问题请告诉我修改,谢谢! 2017...

    gplane 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<