vue开发请求本地数据

1.新建一个与index同级的db.json文件,里面放入假数据

2.在入口main.js中添加

import VueResource from 'vue-resource'

Vue.use(VueResource)

3.分别在webpack.dev.conf.js中的const portfinder = require('portfinder')后面和Devserver后面添加‘---------’内的代码

const portfinder = require('portfinder')
//加载假数据-----------
const express = require('express')
const app = express()//请求server
var appData = require('../db.json')//加载本地数据文件
var getNewsList = appData.getNewsList//获取对应的本地数据
var apiRoutes = express.Router()
app.use('/api', apiRoutes)//通过路由请求数据
//--------------------- 
//作者:Fecker
//来源:优快云 Fecker
const HOST = process.env.HOST
const PORT = process.env.PORT && Number(process.env.PORT)

const devWebpackConfig = merge(baseWebpackConfig, {
  module: {
    rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap, usePostCSS: true })
  },
  // cheap-module-eval-source-map is faster for development
  devtool: config.dev.devtool,

  // these devServer options should be customized in /config/index.js
  devServer: {
    clientLogLevel: 'warning',
    historyApiFallback: {
      rewrites: [
        { from: /.*/, to: path.posix.join(config.dev.assetsPublicPath, 'index.html') },
      ],
    },
    //返回数据-------------
    before(app) {
      app.get('/api/getNewsList', (req, res) => {
        res.json({
          data: getNewsList
        })//接口返回json数据,上面配置的数据getNewsList就赋值给data请求后调用
      })
      },
    /*--------------------- 
    作者:Fecker
    来源:优快云 */

4.在export default里附上如下代码即可

created: function() {
        this.$nextTick(function () {
          this.$http.get('http://localhost:8080/api/getNewsList').then(function(res) {
            console.log(res.data)
            this.newsList = res.data.data;
          })
        })
      },

 

Vue前端项目中,如果需要从本地文件(如JSON、API模拟服务器等)请求数据而面临跨域问题,通常有几种解决策略: 1. **JSONP**(JSON with Padding):适用于GET请求,利用script标签的src属性可以跨域。但是安全性较差,只能处理GET请求,并且返回的数据需要包装在函数调用中。 ```js axios.get('data.json', { responseType: 'text' }) .then(response => eval('(' + response.data + ')')); ``` 2. **Mock API**:在本地设置一个代理服务器,如`vue-cli`的`dev-server`配置中的`proxyTable`选项,将所有发往特定域名的请求转发到本机的一个端口上。 ```json { "/api": { "target": "http://localhost:8080", "changeOrigin": true, "pathRewrite": { "^/api" : "" } } } ``` 这里的`changeOrigin`允许跨源请求,而`pathRewrite`用于修改URL前缀。 3. **CORS**(Cross-Origin Resource Sharing):对于现代浏览器,可以在服务器端设置响应头来启用CORS,允许指定的源访问资源。如果是Node.js环境,可以使用中间件如`cors`来处理。 4. **File System Access API** (仅限同源策略允许):在某些现代浏览器支持下,使用`fetch`或`XMLHttpRequest`时,可以指定`credentials: 'include'`来访问同源的`filesystem`接口。 5. **本地环境开发阶段**: 如果是在开发环境中,你可以选择禁用浏览器的跨源限制,例如Chrome开发者工具中的“Allow-Control-Allow-Origin”选项。 记住,在生产环境下,由于安全原因,应该尽量避免直接通过前端请求本地数据,而是应该部署到真正的服务器上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值