- 安装依赖:
npm install
- 执行命令:
npm run dev
默认会在包根目录下生成 miniprogram_dev 目录,src 中的源代码会被构建并生成到 miniprogram_dev/components 目录下。如果需要监听文件变化动态构建,则可以执行命令:
npm run watch
ps: 如果 minirpogram_dev 目录下已存在小程序 demo,执行
npm run dev
则不会再将 tools 下的 demo 拷贝到此目录下。而执行npm run watch
则会监听 tools 目录下的 demo 变动并进行拷贝。
- 生成的 miniprogram_dev 目录是一个小程序项目目录,以此目录作为小程序项目目录在开发者工具中打开即可查看自定义组件被使用的效果。
ps: 发布前得确保已经执行构建,小程序 npm 包只有构建出来的目录是真正被使用到的。
- 如果还没有 npm 帐号,可以到 npm 官网注册一个 npm 帐号。
- 在本地登录 npm 帐号,在本地执行:
npm adduser
或者
npm login
- 在已完成编写的 npm 包根目录下执行:
npm publish
到此,npm 包就成功发布到 npm 平台了。
PS:一些开发者在开发过程中可能修改过 npm 的源,所以当进行登录或发布时需要注意要将源切回 npm 的源。
以下为推荐使用的目录结构,如果有必要开发者也可以自行做一些调整:
|--miniprogram_dev // 开发环境构建目录
|--miniprogram_dist // 生产环境构建目录
|--src // 源码
| |--components // 通用自定义组件
| |--images // 图片资源
| |
| |--xxx.js/xxx.wxml/xxx.json/xxx.wxss // 暴露的 js 模块/自定义组件入口文件
|
|--test // 测试用例
|--tools // 构建相关代码
| |--demo // demo 小程序目录,开发环境下会被拷贝生成到 miniprogram_dev 目录中
| |--config.js // 构建相关配置文件
|
|--gulpfile.js
PS:对外暴露的 js 模块/自定义组件请放在 src 目录下,不宜放置在过深的目录。另外新增的暴露模块需要在 tools/config.js 的 entry 字段中补充,不然不会进行构建。
- 执行测试用例:
npm run test
- 检测覆盖率:
npm run coverage
测试用例放在 test 目录下,使用 miniprogram-simulate 工具集进行测试,点击此处查看使用方法。在测试中可能需要变更或调整工具集中的一些方法,可在 test/utils 下自行实现。
- 清空 miniprogram_dist 目录:
npm run clean
- 清空 miniprogam_dev 目录:
npm run clean-dev
小程序工程中,package.json 文件中引入组件
{
"dependencies": {
"【npm包名】wxmp-login-register": "1.2.19"
}
}
<component-wx-login env="local" bind:loginSuccess="loginSuccess">
<view>页面内容</view>
<view>页面内容</view>
</component-wx-login>
- local 本地开发环境
- pre 预上线环境
- production 生产环境。默认。
用以配置不同环境的接口地址。
这里需要重复设置一下页面标题,没办法
登录成功回调函数
登录失败回调函数
解绑退出触发器。默认必须是false,当设置为true时会触发解绑退出方法,在解绑退出成功回调中,需要将此属性重置为false,以便下次解绑退出时设置为true才生效。
解绑退出成功的回调函数
解绑退出成功的失败函数 用户必须添加此回调,此回调函数中必须将 logoutEmitter 重置为false
显示认证列表页
执行登录逻辑
main组件与页面子组件可利用组件间关系releations,实现父子组件数据交互。 否则的话,每个子组件都需要定义一堆属性以及触发一系列事件来实现与index父组件数据交互。 而使用了组件间关系,只需要在组件加载时linked钩子上,将目标组件的实例挂载到当前组件上,即可轻松调用目标组件实例上全部数据和方法。 main组件仅需要通过有限的几个属性和方法即可将主要数据传递给父组件index。父组件index将主要数据传递给业务调用方即可。
// index.wxml 中
<main>
<bindAccount></bindAccount>
<createAccount></createAccount>
</main>
多个页面引用组件时,只要有一个页面登录成功了,会在app实例中设置全局属性 app.loggedIn = true,此时其他页面的登录行为便不不再进行。
login_at
login_rt
login_deviceId
login_fromUserCenterUnbind
login_personal_info
data.url.passport 等,存储不同环境的接口地址
data.globalState.at
data.globalState.rt
data.globalState.deviceId
app.loggedIn 是否已登录 Boolean
app.certificate 认证相关