GithubHelp home page GithubHelp logo

twtcer / taro-mock Goto Github PK

View Code? Open in Web Editor NEW

This project forked from ecstasy/taro-mock

0.0 1.0 0.0 1.58 MB

在Taro项目里面配置Mock,并且实现通过proxy代理,解决H5请求跨域问题

JavaScript 67.40% CSS 30.92% HTML 1.68%

taro-mock's Introduction

技术栈

React + Taro + Dva + Sass + ES6/ES7 + Mockjs

项目运行

# 全局安装taro脚手架
npm install -g @tarojs/cli

# 安装项目依赖
npm install

# 微信小程序
npm run dev:weapp

# H5
npm run dev:h5

# Mock
npm run mock
// 需要重新打开一个命令窗口

适配进度

  • 微信小程序 -- 完美适配
  • H5 -- 完美适配

业务介绍

目录结构

├── .temp                  // H5编译结果目录
├── dist                   // 小程序编译结果目录
├── mock                   // mock数据
├── config                 // Taro配置目录
│   ├── dev.js                 // 开发时配置
│   ├── api.js               // 默认配置
│   └── prod.js                // 打包时配置
├── screenshots            // 项目截图,和项目开发无关
├── site                   // H5静态文件(打包文件)
├── src                    // 源码目录
│   ├── components             // 组件
│   ├── config                 // 项目开发配置
│   ├── images                 // 图片文件
│   ├── models                 // redux models
│   ├── http                   // 请求
│   │   ├── Api                // 请求API接口
│   │   ├── config             // 请求配置信息
│   │   ├── index              // 到处配置信息
│   │   ├── Request            // 页面请求的封装
│   ├── pages                  // 页面文件目录
│   │   └── home
│   │       ├── api.js           // 页面逻辑
│   │       ├── index.scss         // 页面样式
│   │       ├── model.js           // 页面models
│   │       └── service.js        // 页面api
│   ├── styles             // 样式文件
│   ├── utils              // 常用工具类
│   │    └── dva.js        // 集成dva 
│   ├── app.js             // 入口文件
│   └── index.html
└── package.json

H5请求跨域问题

config/dev.js

const isH5 = process.env.CLIENT_ENV = 'h5'
// 你自己的请求域名
const HOST = '"http://localhost:3721"'; 

module.exports = {
  env: {
    NODE_ENV: '"development"'
  },
  defineConstants: {
    HOST: isH5 ? '"/api"' : JSON.parse(HOST)
  },
  weapp: {},
  h5: {
    devServer: {
      // 设置代理来解决 H5 请求的跨域问题
      proxy: {
        '/': {
          target: JSON.parse(HOST),
          pathRewrite: {
            '^/': '/'
          },
          changeOrigin: true
        },
      }
    }
  }
}

src/http/Request.js

import Taro from '@tarojs/taro';
import { baseUrl, noConsole } from './config';

/**
|--------------------------------------------------
| @Taro.getEnv
| 获取当前开发环境是 (WEB: H5 WEAPP: 小程序 APPLY: 支付宝)
| @特别注意
| 小程序端不会出现跨域问题,H5端则会出现跨域问题
| H5设置代理以后,一定要在请求的地方把路径写完全
| 小程序端则不需要,只要按照原来请求地址即可
|--------------------------------------------------
*/

export default (options = { method: 'GET', data: {} }) => {
  // 根据不同的环境来补全请求地址
  let Url = ''
  if (Taro.getEnv() = 'WEB') {
    Url = `/${options.url}`
  } else {
    Url = `${baseUrl}${options.url}`
  }
  return Taro.request({
    url: Url,
    data: {
      ...options.data
    },
    header: {
      'Content-Type': 'application/json'
    },
    method: options.method.toUpperCase(),
  }).then((res) => {
    const { statusCode, data } = res;
    console.log(res)
    if (statusCode >= 200 && statusCode < 300) {
      if (!noConsole) {
        console.log(`${new Date().toLocaleString()}【 M=${Url} 】【接口响应:】`, res.data);
      }
      if (data.statusCode ! '200') {
        Taro.showToast({
          title: `网络错误!`,
          icon: 'none',
          mask: true,
        });
      }
      return data;
    } else {
      throw new Error(`网络请求错误,状态码${statusCode}`);
    }
  })
}

文档

License

MIT

taro-mock's People

Contributors

dependabot[bot] avatar ecstasy avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.