微信小程序:搭建小程序环境

主要步骤:

1、store.js(储存信息)
2、router.js(路由相关配置、页面跳转)
3、request.js(网络相关配置)

1、store.js配置

在util下创建store.js
代码如下

/ 存储数据,获取uid等
module.exports = {
    // 设置数据
    setItem(key, value, set_name) {
        if (set_name) {
            let set_name_info = this.setItem(set_name);
            set_name_info[key] = value;
            wx.setStorageSync(set_name, set_name_info);
        } else {
            wx.setStorageSync(key, value)
        }
    },
    // 获取数据
    getItem(key, set_name) {
        if (set_name) {
            let val = this.getItem(set_name);
            if (val) return val[key];
            return "";
        } else {
            return wx.getStorageSync(key)
        }
    },
    // 删除数据
    clear(key) {
        key ? wx.removeStorageSync(key) : wx.clearStorageSync()
    },
    // 获取相关设备信息
    getSystemInfo() {
        return wx.getSystemInfoSync();
    }
}

2、router.js配置

在util下创建router.js;
代码如下:

// 路由配置
// 映射
const routerPath = {
    "index": "/pages/index/index", //首页
    "my": "/pages/my/my", //我的
    "login": "/pages/login/login", //登录
};
module.exports = {
    push(path, option = {}) {
        if (typeof path === "string") {
            option.path = path;
        } else {
            option = path;
        }
        //获取url
        let url = routerPath[option.path];
        //openType跳转类型
        let { query = {}, openType } = option;
        let params = this.parse(query);
        if (params) {
            url += "?" + params;
        }
        this.to(openType, url);
    },
    to(openType, url) {
        let obj = { url } //{ url: "..."}
        if (openType === "redirect") {
            wx.redirectTo(obj);
        } else if (openType === "relaunch") {
            wx.reLaunch(obj);
        } else if (openType === "back") {
            wx.navigateBack({
                delta: 1,
            })
        } else if (openType === "switchTab") {
            wx.switchTab(obj)
        } else {
            wx.navigateTo(obj)
        }
    },
    parse(data) {
        let arr = [];
        for (let key in data) {
            arr.push(key + '=' + data[key]);
        }
        return arr.join("&")
    }
}

3、request.js配置

(1)在http文件夹(pages同级)下创建request.js
代码如下:

// 网络请求
//获取数据状态:loading、toast
// 请求头处理(机型、大小、系统、屏幕......)
let store = require("../utils/store.js")
let system = store.getSystemInfo()
const clienInfo = {
    "clientType": "mp",
    "appnm": "myapplet",
    "model": system.model,
    "os": system.system,
    "screen": system.screenWidth + "*" + system.screenHeight,
    "version": App.version,
    "chennel": "miniprogram"
}
module.exports = {
    fetch: (url, data = {}, option = {}) => {
        let { loading = true, toast = true, method = 'get' } = option
        return new Promise((resolve, reject) => {
            if (loading) {
                wx.showLoading({
                    title: '努力加载中...',
                    mask: true
                })
            }
            let env = App.config.baseApi;
            wx.request({
                url: env + url,
                data,
                method,
                header: {
                    "clienInfo": JSON.stringify(clienInfo),
                },
                success: function(result) {
                    let res = result.data
                    if (res.code == 200 || res.code == 10000) {
                        if (loading) {
                            wx.hideLoading();
                        }
                        resolve(res);
                    } else {
                        if (toast) {
                            wx.showToast({
                                mask: true,
                                title: res.msg,
                                icon: 'none',
                                duration: 2000
                            })
                        } else {
                            wx.hideLoading();
                        }
                        resolve(res);
                    }
                },
                fail: function(e = { code: -1, msg: errMsg, errMeg }) {
                    let msg = e.errMsg;
                    if (msg == "request: fail timeout") {
                        msg = '请求超时,请稍后处理';
                    }
                    wx.showToast({
                        title: msg,
                        icon: "none"
                    })
                    rejects(e)
                }
            })
        })
    },
}

(2)在http文件夹下创建api.js
代码如下:

module.exports = {
    getUserId: "/index/index/appletsLogin", //登录接口
}

4、app.js引入

//app.js
let Api = require("./http/api");
let request = require("./http/request");
let config = require("./env/index.js");
let router = require("./utils/router.js");
let env = "Dev";
App.version = "1.4.2";
App.config = config[env];

App({
    config: config[env], 
    Api,
    router,
    get: request.fetch,
    post: (url, data, option) => {
        option.method = "post";
        return request.fetch(url, data, option);
    },
    onLaunch: function() {

    },
});

5、静态页面应用

在需要的xx.js页面中引入

const app = getApp()
let store = require("../../utils/store.js")
let router = require("../../utils/router.js")
let Api = app.Api

(1)储存信息

store.setItem("uid", this.data.uid) //储存信息
store.getItem("uid") //获取信息

(2)request.js引用

getUser() {//方法名
        var that = this
        app.postToken(Api.getUserId, { //请求接口
            id: store.getItem("uid"),
            type: 3
        }, {}).then(res => {
            if (res.code == 200) {
                that.setData({
                    name: res.data.name,
                })
            }

        })
    },

(3)页面跳转

router.push("index")     //不带参数(“index”路由映射)
router.push({path:'index',query:{id: 1, name: '54xiaojuan'}})    //带参数

emmm 大概这样吧(欢迎大家相互讨论,一起进步!!!)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值