iKcamp官网:http://www.ikcamp.com

访问官网更快阅读全部免费分享课程:《iKcamp出品|全网最新|微信小程序|基于最新版1.0开发者工具之初中级培训教程分享》。

包含:文章、视频、源代码

第一章:小程序初级入门教程

工具安装

在上一节第 8 步所展示的页面中,可以点击 开发者工具 直接进入到下载页面,也可以直接访问 官网下载地址。然后根据自己的设备选择相应的下载

安装过程不再复述,一路默认。

下载开发工具

§ 小程序工具起手

此教程选择的工具为 mac 平台版本,没差

  1. 打开安装好的 微信web开发者工具 ,需要用 管理员开发者 的微信账号扫码登录。管理员账号 是上一节第 6 步中注册 appID 时,绑定的微信账号。开发者账号可在上一节第 8 步中的 添加开发者 中设置

  1. 登录成功后,选择 本地小程序项目,然后 添加项目



3. 如果没有注册 appID,也可以开发小程序项目,但部分功能会受限,比如在手机上预览。在这里,我们已经有了 appID

  1. 添加成功后,我们的项目会在 微信web开发者工具 中自动打开并启动,可以在此工具中对代码进行修改、调试、断点、预览,文件有修改的话,项目会实时更新。

目录说明

项目生成后,会看到如下结构的目录文件:

├─ pages/
│ ├─ index/
│ ├─ index.js
│ ├─ index.wxml
│ ├─ index.wxss
│ ├─ logs/
│ ├─ logs.js
│ ├─ logs.json
│ ├─ logs.wxml
│ ├─ logs.wxss
├── utils/
│ ├─ util.js
├── app.js // 必备文件
├── app.json // 必备文件
├── app.wxss

先看下最外层的三个文件:app.jsapp.jsonapp.wxss

  1. app.js

    小程序的主入口文件,类似于我们在模块加载器时代(requirejs/seajs)常常会码一个 main.js 来作为程序的启动入口。如果你有接触过 node - express 技术栈,理解起来会更贴切。注意:文件名不可更改

    我们可以在 app.js 里面对小程序在不同生命周期段进行处理,设置小程序里面的 全局变量(比如只请求一次公用的数据,让所有的页面都能用)。

    微信平台 app.js 说明文档

  2. app.json

    小程序的全局配置文件,比如设置小程序有哪几个页面组成(目前是 indexlogs)、窗口表现(背景色等)、设置网络超时时间、设置导航条样式等背景色。注意:该文件不可添加任何注释内容

    微信平台 app.json 配置文档

  3. app.wxss

    小程序的全局样式文件,在小程序中,所有的样式文件不再是 .css 后缀,全都需要以 .wxss 作为后缀。与传统的 css 样式相比,wxss 支持 @import 样式导入和像素单位自适应。

    独立页面中的局部样式,请书写在相对的页面文件夹中,后面会有说明。

    微信平台 app.wxss 样式说明文档

小程序的页面文件

app.json 文件中配置了当前小程序的两个页面 pages/index/indexpages/logs/logs,可以看到,其实就是 文件的路径+文件名 组成。如果增加一个页面,需要在参数 pages 中把页面的地址配置进去。

细心的同学可能已经发现一个现象,每个页面文件夹,与里面的文件,名字都一样一样滴。是的,一般情况下,一个完整的页面需要 jswxss(css)wxml(html) 组成。

比如 index 页面,如果需要对 index 页面进行一些独立的配置,需要像 logs 一样,增加 index.json 文件来保存配置信息。

来看下 wxml 文件与 html 文件的区别

<!--index.wxml-->
<view class="container">
<view class="userinfo">
<button wx:if="{{!hasUserInfo && canIUse}}" open-type="getUserInfo" bindgetuserinfo="getUserInfo"> 获取头像昵称 </button>
<block wx:else>
<image bindtap="bindViewTap" class="userinfo-avatar" src="{{userInfo.avatarUrl}}" background-size="cover"></image>
<text class="userinfo-nickname">{{userInfo.nickName}}</text>
</block>
</view>
<view class="usermotto">
<text class="user-motto">{{motto}}</text>
</view>
</view>

传统的 html 文件由各种各样的标签组成,而在 wxml 中,可用的标签元素并不多,可以看到这里涉及到了 viewimagetext标签。

  • view 相当于 div,你可以这么去理解。
  • image 相当于 img,这个应该都懂了。
  • text 很明显,用来标注文本的标签,既然是 文本,肯定是 行级元素 了。

还有一些内置好的组件标签,自带样式和特性,详见 官方文档

页面样式表 index.wxss

作用域只在当前页面生效,它可以覆盖 app.wxss 里面的样式规则。可以看到,与平时我们用的样式文件基本没差:

/**index.wxss**/
.userinfo {
display: flex;
flex-direction: column;
align-items: center;
} .userinfo-avatar {
width: 128rpx;
height: 128rpx;
margin: 20rpx;
border-radius: 50%;
} .userinfo-nickname {
color: #aaa;
} .usermotto {
margin-top: 200px;
}

页面脚本文件 index.js

app.js 一样,包含了一个页面的生命周期,声明并处理数据,响应页面交互事件等。

//index.js
//获取应用实例
const app = getApp() Page({
data: {
motto: 'Hello World',
userInfo: {},
hasUserInfo: false,
canIUse: wx.canIUse('button.open-type.getUserInfo')
},
//事件处理函数
bindViewTap: function() {
wx.navigateTo({
url: '../logs/logs'
})
},
onLoad: function () {
if (app.globalData.userInfo) {
this.setData({
userInfo: app.globalData.userInfo,
hasUserInfo: true
})
} else if (this.data.canIUse){
// 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
// 所以此处加入 callback 以防止这种情况
app.userInfoReadyCallback = res => {
this.setData({
userInfo: res.userInfo,
hasUserInfo: true
})
}
} else {
// 在没有 open-type=getUserInfo 版本的兼容处理
wx.getUserInfo({
success: res => {
app.globalData.userInfo = res.userInfo
this.setData({
userInfo: res.userInfo,
hasUserInfo: true
})
}
})
}
},
getUserInfo: function(e) {
console.log(e)
app.globalData.userInfo = e.detail.userInfo
this.setData({
userInfo: e.detail.userInfo,
hasUserInfo: true
})
}
})

下期更新内容:小程序初级入门教程-小试牛刀+发布流程

iKcamp原创新书《移动Web前端高效开发实战》已在亚马逊、京东、当当开售。


相关文章:

听说 2017 你想写前端?

前端开发者指南(2017)

翻译连载 |《你不知道的JS》姊妹篇 | JavaScript 轻量级函数式编程

iKcamp出品|微信小程序|工具安装+目录说明|基于最新版1.0开发者工具初中级教程分享的更多相关文章

  1. 微信小程序教学第二章:小程序中级实战教程之预备篇 - 项目结构设计 |基于最新版1.0开发者工具

    iKcamp官网:http://www.ikcamp.com 访问官网更快阅读全部免费分享课程:<iKcamp出品|全网最新|微信小程序|基于最新版1.0开发者工具之初中级培训教程分享>. ...

  2. 微信小程序基于最新版1.0开发者工具分享-小试牛刀(视频)+发布流程

    第一章:小程序初级入门教程 小试牛刀[含视频] 视频地址:https://v.qq.com/x/page/i0554akzobq.html 这一章节中,我们尝试着写一个最简单的例子,包含 2 个静态页 ...

  3. iKcamp出品|全网最新|微信小程序|基于最新版1.0开发者工具之初中级培训教程分享

  4. 微信小程序+OLAMI(欧拉蜜)自然语言API接口制作智能查询工具--快递、聊天、日历等

    微信小程序最近比较热门,再加上自然语义理解也越来越被人关注,于是我想赶赶潮流,做一个小程序试试.想来想去快递查询应该是一种比较普遍的需求. 如果你也在通过自然语言接口做点什么,希望我的这篇博客能帮到你 ...

  5. 微信小程序和asp.net core基于docker和nginx的交互

    这个文章的题目起的比较长,我想实现这样一个产品: 前端是微信小程序,后端是基于docker运行的asp.net core webapi.webapi通过nginx实现的反向代理接入,nginx同样基于 ...

  6. 【微信】微信小程序 新建页面目录后,怎么自动生成目中的的四个基本文件呢? 新建目录报错如下VM458:2 未找到 app.json 中的定义的 pages "pages/module/module" 对应的 WXML 文件

    如下图,在使用微信开发者工具过程中,新创建了页面目录,想要页面文件夹中自动生成四个基本文件 但是新创建了一个页面文件夹,里面的四个基本文件并没有展示出来 然后在app.json添加这个路径,ctrl+ ...

  7. ESA2GJK1DH1K微信小程序篇: 安装Nginx,配置反向代理

    前言 一,为什么需要反向代理 小程序访问的是 443端口,咱需要把443端口的数据传给MQTT 这节为了避免大家配置出错,以下源码已经配置. 如果大家想自己配置,请参考 https://www.cnb ...

  8. 微坑---微信小程序ios上时间字符串转换为时间戳时,在开发工具上和安卓手机上运行成功

    给定一个时间字符串  var time="2017-02-27 16:42:53" js有三种转换为时间戳的方法:1.var timestamp = Date.parse(time ...

  9. 【微信小程序】安装DingoApi开发小程序api

    1.安装 composer require dingo/api 2.发布配置: php artisan vendor:publish 选择DingoApi发布. 3.向.env文件添加配置 (1)项目 ...

随机推荐

  1. 1001.A+B Format (20)代码自查(补足版)

    1001.A+B Format (20)代码自查(补足版) 谢谢畅畅酱的提醒,发现了代码中的不足,把变量名更改成更合理的名字,并且把注释也换成英文啦! 栋哥提供的代码自查的方式也帮助了我发现很多代码中 ...

  2. 【Beta阶段】第五次scrum meeting

    Coding/OSChina 地址 1. 会议内容 学号 主要负责的方向 昨日任务 昨日任务完成进度 接下去要做 99 PM 查阅换肤功能相关资料 100% 着手联网功能 100 DEV 完成分享邀请 ...

  3. 团队作业4——第一次项目冲刺(Alpha版本)1st day

    一.Daily Scrum Meeting照片 二.燃尽图 三.项目进展 1.界面 主界面以及游戏界面大体上完成了 界面内的功能正在写 2.登陆方面 QQ授权还未申请 申请完在登陆界面完成后实现用QQ ...

  4. 201521123110 《Java程序设计》第6周学习总结

    1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 2. 书面作业 1.clone方法 1.1 Object对 ...

  5. 201521123093 JAVA程序设计

    团队博客链接 /[博客链接]http://www.cnblogs.com/yayaya/p/7062197.html 课程设计---购物车系统(201521123093 赵铭) 1.个人负责模块或者任 ...

  6. 201521123071 《JAVA程序设计》第九周学习总结

    第九周-异常 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 此处仅部分知识点归纳 2. 书面作业 1. 常用异常,题目5-1 1.1 截图你的提交结果(出现学号) ...

  7. 从文本中读取内容并把读取到的内容转化成二进制保存的形式(包含十进制数如何转换成二进制数dtob函数)

    #include<stdio.h> #include<string.h> #include<stdlib.h> #include<malloc.h> d ...

  8. Modeling -> Mixamo auto rigging -> UE4 retargeting

    In general, there are 3 ways we can work with the Blender-UE4 pipeline:   1 Model character Export m ...

  9. JavaScript中的for in循环

    在学习AJAX的时候,发现JavaScript中for in循环,这种循环对于遍历JSON是很好用的.于是写下了这篇博文 作用 for in循环本质上是forEach循环,它主要有两个作用 遍历数组 ...

  10. xml是什么,为什么要用xml

    XML概念 众所周知,xml常用语数据存储和传输,文件后缀为 .xml: 它是可扩展标记语言(Extensible Markup Language,简称XML),是一种标记语言. 标记,指计算机所能理 ...