一、注册微信小程序

在创建自己的微信小程序之前,首先需要注册小程序账号,有如下账号类型:

具体的注册流程,可以参考官方的简易教程

二、安装工具,创建项目

第一步:下载微信小程序开发者工具并安装,下载路径:

https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html

进到下载界面后,根据自己的操作系统选择相应的链接进行下载,下载完成后进行安装。

第二步:安装登录工具

开发者工具安装完成后我们就可以将其打开,初次打开会需要用微信扫码登录,如下图,用手机微信扫一扫后确认登录就可以了。

第三步:选择一个项目类型

登录成功后,如果是第一次使用该工具会弹出选择项目类型的窗口,如下图:

第四步:创建一个项目

选择项目类型成功后,会弹出创建项目的窗口,如下图:

​ 在创建过程中,如果选择的本地文件夹是个空文件夹会出来一个勾选项“建立云开发快速启动模版”,为方便初学者了解微信小程序的基本代码结构,请勾选此项,勾选后,开发者工具会帮助我们在开发目录里生成一个简单的 demo,如下图:

三、项目代码结构说明与开发

3.1,项目代码结构

点击开发者工具上侧导航的“编辑器”,我们可以看到这个项目,已经初始化并包含了一些简单的代码文件。最关键也是必不可少的,是 app.js、app.json、app.wxss 这三个。其中,.js后缀的是脚本文件,.json后缀的文件是配置文件,.wxss后缀的是样式表文件。微信小程序会读取这些文件,并生成小程序实例。

下面我们简单了解这三个文件的功能,方便修改以及从头开发自己的微信小程序。

​ 1、app.js是小程序的脚本代码。我们可以在这个文件中监听并处理小程序的生命周期函数、声明全局变量。调用框架提供的丰富的 API,如本例的同步存储及同步读取本地数据。

2、​ app.json 是对整个小程序的全局配置。我们可以在这个文件中配置小程序是由哪些页面组成,配置小程序的窗口背景色,配置导航条样式,配置默认标题。注意该文件不可添加任何注释。

3、app.wxss 是整个小程序的公共样式表。我们可以在页面组件的 class 属性上直接使用 app.wxss 中声明的样式规则。

  我们注意到,在实例程序的代码中还有2个文件夹,一个是pages,一个是style,其中style是放通用样式的一个文件夹,pages是存放所有页面的文件夹。我们着重讲一下这个pages.

3.2,小程序页面文件构成

 在这个示例中,我们有七个页面,index 页面,即欢迎页,他们都在 pages 目录下。微信小程序中的每一个页面的【路径+页面名】都需要写在 app.json 的 pages 中,且 pages 中的第一个页面是小程序的首页。

每一个小程序页面是由同路径下同名的四个不同后缀文件的组成,如:index.js、index.wxml、index.wxss、index.json。.js后缀的文件是脚本文件,.json后缀的文件是配置文件,.wxss后缀的是样式表文件,.wxml后缀的文件是页面结构文件。

​ index.wxml 是页面的结构文件:

<!--index.wxml-->
<view class="container"><!-- 用户 openid --><view class="userinfo"><buttonopen-type="getUserInfo"bindgetuserinfo="onGetUserInfo"class="userinfo-avatar"style="background-image: url({{avatarUrl}})"></button><view><text>jackson影琪</text>
</view>
</view><view class="text-title"><text>Hello world</text>
</view>
</view>

​ 本例中使用了<view/><button/><text/>来搭建页面结构,绑定数据和交互处理函数。

​ index.js 是页面的脚本文件,在这个文件中我们可以监听并处理页面的生命周期函数、获取小程序实例,声明并处理数据,响应页面交互事件等。

//index.js
const app = getApp()Page({data: {avatarUrl: './user-unlogin.png',userInfo: {},logged: false,takeSession: false,requestResult: ''},onLoad: function() {if (!wx.cloud) {wx.redirectTo({url: '../chooseLib/chooseLib',})return}// 获取用户信息wx.getSetting({success: res => {if (res.authSetting['scope.userInfo']) {// 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框wx.getUserInfo({success: res => {this.setData({avatarUrl: res.userInfo.avatarUrl,userInfo: res.userInfo})}})}}})},onGetUserInfo: function(e) {if (!this.logged && e.detail.userInfo) {this.setData({logged: true,avatarUrl: e.detail.userInfo.avatarUrl,userInfo: e.detail.userInfo})}},onGetOpenid: function() {// 调用云函数wx.cloud.callFunction({name: 'login',data: {},success: res => {console.log('[云函数] [login] user openid: ', res.result.openid)app.globalData.openid = res.result.openidwx.navigateTo({url: '../userConsole/userConsole',})},fail: err => {console.error('[云函数] [login] 调用失败', err)wx.navigateTo({url: '../deployFunctions/deployFunctions',})}})},// 上传图片doUpload: function () {// 选择图片wx.chooseImage({count: 1,sizeType: ['compressed'],sourceType: ['album', 'camera'],success: function (res) {wx.showLoading({title: '上传中',})const filePath = res.tempFilePaths[0]// 上传图片const cloudPath = 'my-image' + filePath.match(/\.[^.]+?$/)[0]wx.cloud.uploadFile({cloudPath,filePath,success: res => {console.log('[上传文件] 成功:', res)app.globalData.fileID = res.fileIDapp.globalData.cloudPath = cloudPathapp.globalData.imagePath = filePathwx.navigateTo({url: '../storageConsole/storageConsole'})},fail: e => {console.error('[上传文件] 失败:', e)wx.showToast({icon: 'none',title: '上传失败',})},complete: () => {wx.hideLoading()}})},fail: e => {console.error(e)}})},})

index.wxss 是页面的样式表:

/**index.wxss**/page {background: #f6f6f6;display: flex;flex-direction: column;justify-content: center;
}
.userinfo, .uploader, .tunnel {margin-top: 40rpx;height: 140rpx;width: 100%;background: #fff;border: 1px solid rgba(0, 0, 0, 0.1);border-left: none;border-right: none;display: flex;flex-direction: row;align-items: center;transition: all 300ms ease;
}.userinfo-avatar {width: 100rpx;height: 100rpx;margin: 20rpx;border-radius: 50%;background-size: cover;background-color: white;
}.userinfo-avatar:after {border: none;
}.userinfo-nickname {font-size: 32rpx;color: #007aff;background-color: white;background-size: cover;
}.userinfo-nickname::after {border: none;
}.uploader, .tunnel {height: auto;padding: 0 0 0 40rpx;flex-direction: column;align-items: flex-start;box-sizing: border-box;
}.uploader-text, .tunnel-text {width: 100%;line-height: 52px;font-size: 34rpx;color: #007aff;
}.uploader-container {width: 100%;height: 400rpx;padding: 20rpx 20rpx 20rpx 0;display: flex;align-content: center;justify-content: center;box-sizing: border-box;border-top: 1px solid rgba(0, 0, 0, 0.1);
}.uploader-image {width: 100%;height: 360rpx;
}.tunnel {padding: 0 0 0 40rpx;
}.tunnel-text {position: relative;color: #222;display: flex;flex-direction: row;align-content: center;justify-content: space-between;box-sizing: border-box;border-top: 1px solid rgba(0, 0, 0, 0.1);
}.tunnel-text:first-child {border-top: none;
}.tunnel-switch {position: absolute;right: 20rpx;top: -2rpx;
}.disable {color: #888;
}.service {position: fixed;right: 40rpx;bottom: 40rpx;width: 140rpx;height: 140rpx;border-radius: 50%;background: linear-gradient(#007aff, #0063ce);box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3);display: flex;align-content: center;justify-content: center;transition: all 300ms ease;
}.service-button {position: absolute;top: 40rpx;
}.service:active {box-shadow: none;
}.request-text {padding: 20rpx 0;font-size: 24rpx;line-height: 36rpx;word-break: break-all;
}
.text-title{
margin-top: 50%;
}
.text-title text{font-size: 96rpx;font-family: 'Franklin Gothic Medium', 'Arial Narrow', Arial, sans-serif;
}

页面的样式表是非必要的。当有页面样式表时,页面的样式表中的样式规则会层叠覆盖 app.wxss 中的样式规则。如果不指定页面的样式表,也可以在页面的结构文件中直接使用 app.wxss 中指定的样式规则。

​ index.json 是页面的配置文件:

​ 页面的配置文件是非必要的。当有页面的配置文件时,配置项在该页面会覆盖 app.json 的 window 中相同的配置项。如果没有指定的页面配置文件,则在该页面直接使用 app.json 中的默认配置。

{"pages": ["pages/index/index","pages/userConsole/userConsole","pages/storageConsole/storageConsole","pages/databaseGuide/databaseGuide","pages/addFunction/addFunction","pages/deployFunctions/deployFunctions","pages/chooseLib/chooseLib"],"window": {"backgroundColor": "#F6F6F6","backgroundTextStyle": "light","navigationBarBackgroundColor": "#F6F6F6","navigationBarTitleText": "jackson影琪","navigationBarTextStyle": "black"}
}

运行结果如下:

手机预览

​ 开发者工具上侧菜单栏,点击"预览",扫码后即可在微信客户端中体验。

微信小程序开发的基本流程__BaiMoci相关推荐

  1. 微信小程序开发的完整流程介绍,新手必读

    自从跳一跳小程序游戏出现后,一夜之间,小程序就变得家喻户晓了,功能开发也越来越丰富,在微信搜一搜就会发现许多大品牌早已有自己的小程序了,越来越多的企业和商家都看中了这个风口,想快速开发出一款属于自己的 ...

  2. 微信小程序开发工具安装流程

    微信小程序开发工具安装流程 本文将详细描述微信小程序开发工具安装全流程. 1.官网注册账号 直接搜"微信公众号平台",进入其官网: 点击下方的"小程序": 按流 ...

  3. 小程序问题:微信小程序开发上线全流程是怎样的

    素材编辑 | 宋大狮 排版运营 | 小唐狮 ONE 问题描述 今天要和大家分享的是小程序的问题,主要是对小程序的开发上线等整个流程进行简单阐述,让大家能够更加清晰的了解小程序开发,并由此形成框架体系, ...

  4. 微信小程序开发部署上线流程

    微信小程序注册流程 一.小程序注册流程 1.打开网址,点击立即注册 在微信公众平台官网首页(mp.weixin.qq.com)点击右上角的"立即注册"按钮. 2.选择注册的帐号类型 ...

  5. uni-app 微信小程序开发到发布流程

    安装好HBuilder+微信开发工具,准备发车 1:新建一个uni-app 项目 2:发行微信小程序 3:微信开发者平台的微信小程序appid 复制进来(点击发行) 4:小程序开发工具就可以点击发行版 ...

  6. ui测试怎么做?依据文档有哪些_微信小程序开发流程有哪些?各个环节注意事项...

    微信小程序开发流程有哪些?各个环节注意事项是什么?微信小程序开发有哪些注意事项,开发流程是怎样的?下面就一起来看看吧. 1.微信小程序开发之注册小程序 在开发小程序之前,首先就是要注册一个小程序.不过 ...

  7. 微信小程序开发(一) 微信登录流程

    文/YXJ 地址:http://blog.csdn.net/sk719887916/article/details/53761107 最近在研究微信小程序开发,非常有意思的一个东西.花了一点时间写了一 ...

  8. 微信小程序开发流程指南

    小程序指南 小程序指南 微信小程序简介 账号申请流程 1.注册账号 2.选择注册的账号类型 3.填写注册信息 4.激活邮箱 5.填写主体信息 6.选择主体类型 7.填写主体信息并选择验证方式 8.确认 ...

  9. 微信小程序开发(1)—— 微信小程序申请注册提交审核并发布详细流程

    一.微信小程序注册申请 作为开发者可以用测试版.也可以申请测试号.https://developers.weixin.qq.com/miniprogram/dev/devtools/sandbox.h ...

  10. 微信小程序开发详细步骤(企业小程序开发流程)

    今天珍奶bb给大家简单唠唠微信小程序开发详细步骤(企业小程序开发流程)? 微信小程序制作流程是什么?微信小程序制作模板套用怎么操作?今天珍奶bb给大家简单唠唠微信小程序制作流程是什么? 在唠微信小程序 ...

最新文章

  1. JavaScript初学者编程题(8)
  2. scala入门之识别函数式风格
  3. 关于壳的构架的一些感悟
  4. 右键中添加“管理员取得所有权”
  5. php+打开文件和其子文件,【php学习记录】 引用、打开文件
  6. kettle读取json文件并读取数据_Labview打开Excel文件读取数据
  7. dofilter 无效_“鹅厂”商标注册成功,腾讯异议无效
  8. python源码多平台编译_ubuntu编译python源码的坑
  9. zz -- QQ圈子感想
  10. yolov3识别的类别_Gaussian YOLOv3:一个更强的YOLOv3,现已开源!
  11. C#在线预览文档(word,excel,pdf,txt,png)
  12. 五年级上册计算机工作总结,五年级上册数学教学工作总结
  13. WPS 表格自适应图片
  14. 混合IP-SDN环境的仿真实验
  15. 云产品经理相关技术知识(一)
  16. html写一个猜数字游戏,JS实现网页端猜数字小游戏
  17. 如何把数据分类后各个行的值合并成一个格
  18. Github上bitcoin的CPU挖矿程序部署编译
  19. 夜晚拍照出现耀斑的原因
  20. 【渝粤教育】电大中专计算机职业素养 (13)作业 题库

热门文章

  1. python蓝牙通信_python实现蓝牙通信
  2. 全能电子地图下载器 离线地图 介绍(支持几十种地图下载) 最新版 3.6 (2015.6.13)
  3. opencv-Haar特征
  4. cad汉仪长仿宋体_hzcf.shx字体
  5. tftpd64-SE使用
  6. python比对excel表数据中的差异_Python比对EXCEL数据
  7. 内点法介绍(Interior Point Method)
  8. java中UUID类生成32位随机数(附加 6 位随机数)
  9. C语言单片机笔试题,c语言面试题集(单片机
  10. 简析通达信股票接口测试过程