小程序开发技巧记录

我开发小程序用的wepy,别问好不好,或者其他的更好为啥不用,https://tencent.github.io/wepy/ tencent几个词解释了。

1.环境变量

小程序没有环境变量,而node的process.env.NODE_ENV又传不过去,如果要做到打包的时候替换一些信息,比如线上线下api接口不一致的时候,需要用到如下解决方法。

//安装
cnpm install babel-plugin-global-define --save

然后更改wepy.config.js

compilers:{
  ...
plugins: [
        ['global-define', {
              __isProd: prod
        }]
    ]
}

然后在其他文件里面就可以直接使用__isProd来判断环境,prod如果未定义可以加上:let prod = process.env.NODE_ENV === 'production';
以防小白不清楚,顺便贴下我的package.json的scripts:

"scripts": {
    "dev": "wepy build --watch",
    "dev2": "cross-env NODE_ENV=production wepy build --watch",
    "build": "cross-env NODE_ENV=production wepy build --no-cache",
    "test": "echo \"Error: no test specified\" && exit 1"
  }

2.混合mixin

在每个页面,最好都引入一个自定义base 混合,处理全局事件和定义一些全局方法。

3. 小程序2018年10月10日后更改了用户授权机制

以前可以直接在onshow里面弹出授权窗口,现在微信更改了,需要在button的open-type和回调里面处理授权。 意思是需要用户手动点击这个按钮后才会有授权。

但是公司又要求小程序进来需要授权昵称和名称,要不然统计只有个openid,领券或者个人中心授权手机号。

曲线救国的方案。在上面的全局minxn里面,onShow方法检测是否授权,检测需要用个存储保存授权状态,因为wx.getSetting里面的scope好像不太全,后面微信也会把这个接口关掉,所以自己记录最好。 然后未授权的弹出wx.showModal,点击确定后跳转到新的页面,一个自定义授权页面,上面就放授权按钮。虽然绕了一圈,但是也实现了曲线救国。 如果只有一个页面需要授权,就在当前页面做个模拟的弹窗就行。全局的就悲剧,得跳转,要不然代码加的想吐

标签: 无

发表评论: