文章目录

  • 一、起步
    • 1.注册一个小程序账号
    • 2.下载安装开发者工具
    • 3.新建小程序项目
  • 二、小程序配置
    • 1.全局配置
      • (1)小程序默认启动页
      • (2)页面路径列表
      • (3)分包
      • (4)全局默认窗口表现
      • (5)底部tab栏配置
    • 2.页面配置
  • 三、基础组件
    • 1.view
    • 2.scroll-view
    • 3.swiper
    • 4.navigator
    • 5.text、image、template、button等
  • 四、自定义组件
    • 1.新建自定义组件
    • 2.使用自定义组件
    • 3.自定义tab栏
    • 4.使用自定义tab栏
  • 五、其他
    • 1.px与rpx
    • 2.引入其他wxss样式文件

官方文档:微信开放文档

一、起步

1.注册一个小程序账号

首先需要在微信公众平台注册你的小程序,官方文档中写明了教程:点我点我

2.下载安装开发者工具

官方下载链接

3.新建小程序项目

AppID(必填)在小程序账号中开发 -> 开发管理 -> 开发设置获取,复制粘贴过来即可。


点击确定,就新建好了。

二、小程序配置


项目目录结构:

小程序的文件大部分分为四种,分别是wxml、wxss、json、js。wxml文件类似html文件,用来描述页面结构;wxss文件类似于css文件,书写一些页面样式;json文件则是页面配置;js文件处理逻辑交互。

vue项目都是把页面结构、样式、逻辑交互写在一个文件,区别的是微信原生开发将这些分开来写。

1.全局配置
{"entryPagePath": "pages/index/index","pages":["pages/index/index","pages/sort/sort","pages/dress/dress","pages/user/user","pages/login/login"],"subPackages": [{"root": "packageA","name": "分包A","pages": ["pages/mydata/mydata","pages/collection/collection","pages/cabinet/cabinet","pages/record/record","pages/addData/addData"]},{"root": "packageB","name": "分包B","pages": ["pages/shareDetail/shareDetail"]}],"window":{"backgroundTextStyle":"light","navigationBarBackgroundColor": "#fff","navigationBarTitleText": "","navigationBarTextStyle":"black","navigationStyle": "default"},"tabBar": {"custom": true,"selectedColor": "#ff9a9e","borderStyle": "white","color": "#7A7E83","backgroundColor": "#ffffff","list": [{"pagePath": "pages/index/index","text": "首页","iconPath": "static/icon/home.png","selectedIconPath": "static/icon/pink-home.png"},{"pagePath": "pages/sort/sort","text": "分类","iconPath": "static/icon/sort.png","selectedIconPath": "static/icon/pink-sort.png"},{"pagePath": "pages/dress/dress","text": "穿搭","iconPath": "static/icon/dress.png","selectedIconPath": "static/icon/pink-dress.png"},{"pagePath": "pages/user/user","text": "我的","iconPath": "static/icon/user.png","selectedIconPath": "static/icon/pink-user.png"}]},"style": "v2","sitemapLocation": "sitemap.json"
}

项目目录结构里面,app.json文件就是小程序全局配置,主要的配置有这些:

(1)小程序默认启动页
 "entryPagePath": "pages/index/index",

指明页面路径

(2)页面路径列表
"pages":["pages/index/index","pages/sort/sort","pages/dress/dress","pages/user/user","pages/login/login"
],

每一个路径对应一个页面,在列表中写好路径,页面文件就会自动生成。

(3)分包

使用分包可以优化小程序启动的耗时,官方建议按照功能划分,实现按需加载。

"subPackages": [{"root": "packageA","name": "分包A","pages": ["pages/mydata/mydata","pages/collection/collection","pages/cabinet/cabinet","pages/record/record","pages/addData/addData"]},{"root": "packageB","name": "分包B","pages": ["pages/shareDetail/shareDetail"]}],

其中root为分包根目录,name分包名,pages分包页面路径。

(4)全局默认窗口表现
 "window":{"backgroundTextStyle":"light","navigationBarBackgroundColor": "#fff","navigationBarTitleText": "","navigationBarTextStyle":"black","navigationStyle": "default"},
  • backgroundTextStyle:下拉 loading 的样式,仅支持 dark / light
  • navigationBarBackgroundColor:导航栏背景颜色
  • navigationBarTitleText:导航栏标题文字内容
  • navigationBarTextStyle:导航栏标题颜色,仅支持 black / white
  • navigationStyle:导航栏样式,仅支持以下值:default 默认样式和custom 自定义导航栏,只保留右上角胶囊按钮。

还有很多配置详见官方文档:点我点我

(5)底部tab栏配置
"tabBar": {"custom": true,"selectedColor": "#ff9a9e","borderStyle": "white","color": "#7A7E83","backgroundColor": "#ffffff","list": [{"pagePath": "pages/index/index","text": "首页","iconPath": "static/icon/home.png","selectedIconPath": "static/icon/pink-home.png"},{"pagePath": "pages/sort/sort","text": "分类","iconPath": "static/icon/sort.png","selectedIconPath": "static/icon/pink-sort.png"},{"pagePath": "pages/dress/dress","text": "穿搭","iconPath": "static/icon/dress.png","selectedIconPath": "static/icon/pink-dress.png"},{"pagePath": "pages/user/user","text": "我的","iconPath": "static/icon/user.png","selectedIconPath": "static/icon/pink-user.png"}]},
  • custom:自定义 tabBar,默认为false
  • selectedColor:tab 上的文字选中时的颜色
  • borderStyle:tabbar 上边框的颜色
  • color:tab 上的文字默认颜色
  • backgroundColor:tab 的背景色
  • list:tab 的列表,最少 2 个、最多 5 个 tab
2.页面配置

在每个页面的json文件中可以给其单独配置,官方文档:点我点我

如果想要使用自定义组件,就需要在json文件中声明。

{"usingComponents": {"组件名": "路径"}
}

三、基础组件

1.view

视图容器view相当于html中的div,也是块级元素。

2.scroll-view

可滚动的视图区域。可以设置其横向滚动或者纵向滚动。

具体属性详见官方文档:点我点我

3.swiper

滑块视图容器。可用来做轮播图,放置多个swiper-item组件。

4.navigator

页面链接。设置url属性即可页面跳转。

5.text、image、template、button等

与html中的相似,分别是文本组件、图像组件、模板组件、按钮组件。

四、自定义组件

1.新建自定义组件

自定义组件同样也是要新建wxml、wxss、json、js四个文件,在json文件中,添加以下语句声明是自定义组件:

{"component": true
}

然后在wxml文件中编写组件的结构,wxss中编写样式,与页面的写法无异。

注意:在组件 wxss 中不应使用 ID 选择器、属性选择器和标签名选择器。

在组件js文件中,要需要使用 Component() 来注册组件,官方代码示例:

Component({properties: {// 这里定义了 innerText 属性,属性值可以在组件使用时指定innerText: {type: String,value: 'default value',}},data: {// 这里是一些组件内部数据someData: {}},methods: {// 这里是一个自定义方法customMethod: function(){}}
})
2.使用自定义组件

在文章上方页面配置中也讲到了,如果要使用自定义组件,在页面的json文件中写如下代码:

{"usingComponents": {"component-tag-name": "path/to/the/custom/component"}
}

然后在页面wxml文件中引用组件即可:

<view><!-- 以下是对一个自定义组件的引用 --><component-tag-name inner-text="Some text"></component-tag-name>
</view>

官方文档注意事项:

3.自定义tab栏

如果想要做一个不一样的tab栏,可以自定义tab栏。

第一步,在app.json中的tab栏配置中添加该语句:

"custom": true,

第二步,所有 tab 页的 json 里需声明 usingComponents 项,也可以在 app.json 全局开启。

"usingComponents": {}

第三步,在项目根目录新建一个名为custom-tab-bar文件夹,新建名为index的wxml、wxss、js、json四个文件。

第四步,编写自定义组件的方式编写tab栏代码,以我写的自定义tab栏为例:

<!--custom-tab-bar/index.wxml-->
<cover-view class="tab-bar"><cover-view class="tab-bar-border"></cover-view><cover-view wx:for="{{list}}" wx:key="index" class="tab-bar-item" data-path="{{item.pagePath}}" data-index="{{index}}" bindtap="switchTab"><cover-image src="{{selected === index ? item.selectedIconPath : item.iconPath}}"></cover-image><cover-view style="color: {{selected === index ? selectedColor : color}}">{{item.text}}</cover-view></cover-view>
</cover-view>
/* index.wxss */
.tab-bar {position: fixed;bottom: 0;left: 0;right: 0;height: 48px;background: white;display: flex;padding-bottom: env(safe-area-inset-bottom);
}.tab-bar-border {position: absolute;left: 0;top: 0;width: 100%;height: 1px;transform: scaleY(0.5);
}.tab-bar-item {flex: 1;text-align: center;display: flex;justify-content: center;align-items: center;flex-direction: column;
}.tab-bar-item cover-image {width: 27px;height: 27px;
}.tab-bar-item cover-view {font-size: 10px;
}
// index.js
Component({data: {selected: 0,color: "#7A7E83",selectedColor: "#ff9a9e",list: [{pagePath: "/pages/index/index",iconPath: "/static/icon/home.png",selectedIconPath: "/static/icon/pink-home.png",text: "首页"}, {pagePath: "/pages/sort/sort",iconPath: "/static/icon/sort.png",selectedIconPath: "/static/icon/pink-sort.png",text: "分类"},{pagePath: "/pages/dress/dress",text: "穿搭",iconPath: "/static/icon/dress.png",selectedIconPath: "/static/icon/pink-dress.png"},{pagePath: "/pages/user/user",text: "我的",iconPath: "/static/icon/user.png",selectedIconPath: "/static/icon/pink-user.png"}]},attached() {},methods: {switchTab(e) {const data = e.currentTarget.datasetconst url = data.pathwx.switchTab({url})this.setData({selected: data.index})}}})
// index.json
{"component": true
}
4.使用自定义tab栏

在所有 tab 页的 json 里需声明 usingComponents 项或者app.json 全局开启后,就已经可以使用了,但是此时会出现问题,点击tab图标会发现其他的tab图标变成选中的状态了,其实是tab页没有选中事件的判断,在tab页的js文件中添加如下代码:

onShow() { // 生命周期函数if (typeof this.getTabBar === 'function' &&this.getTabBar()) {this.getTabBar().setData({selected: 0})}
}

getTabBar()方法是自定义tab栏js文件里定义的方法,selected相当于选中图标的索引,第一个图标就是0,第二个为1。

五、其他

1.px与rpx

wxss样式文件中的尺寸单位,rpx(responsive pixel)是可以根据屏幕宽度自适应的尺寸单位。

官方解释:

如在 iPhone6 上,屏幕宽度为375px,共有750个物理像素,则750rpx = 375px = 750物理像素,1rpx = 0.5px = 1物理像素。

2.引入其他wxss样式文件

将文件放于style文件夹里,在app.wxss中声明即可。

@import "./style/iconfont.wxss";

微信小程序原生开发学习01相关推荐

  1. 微信小程序原生开发功能合集一:微信小程序开发介绍

    一.专栏介绍   本专栏主要内容为微信小程序常用功能开发过程的介绍说明,包括开发微信小程序常用组件的封装.常用功能的开发等,提供源代码.开发过程讲解视频.完整的课程等.   组件封装: 下拉选择组件. ...

  2. 【微信小程序-原生开发】实用教程20 - 生成海报(实战范例为生成活动海报,内含生成指定页面的小程序二维码,保存图片到手机,canvas 系列教程)

    可在系列教程的基础上继续开发,也可以单独使用 [微信小程序-原生开发]系列教程 效果预览 代码实现 点击触发生成海报 在活动详情页,指定点击某图标/按钮,触发跳转到生成海报的页面 pages\comp ...

  3. 【微信小程序-原生开发】实用教程06-轮播图、分类页签 tab 、成员列表(含Tdesign升级,切换调试基础库,设置全局样式,配置组件按需注入,添加图片素材,wx:for,生命周期 onLoad)

    开始前,请先完成首页的开发,详见 [微信小程序-原生开发]实用教程05-首页(含自定义调试模式.插入图片.图文排版.底部留白.添加本地图片) https://blog.csdn.net/weixin_ ...

  4. 【微信小程序-原生开发】实用教程05-首页(含自定义调试模式、插入图片、图文排版、底部留白、添加本地图片)

    开始前,请先完成启动/欢迎/首屏广告页的开发,详见 [微信小程序-原生开发]实用教程04-启动/欢迎/首屏广告页(含倒计时.添加文字.rpx.定义变量和函数.读取变量.修改变量.wx.reLaunch ...

  5. 微信小程序 原生开发 实现弹窗遮罩层 并且在遮罩层内使用scroll-view实现滚动内容(包括图片)

    微信小程序 原生开发 实现弹窗遮罩层 并且在遮罩层内可以滚动内容(包括图片) 效果图 这里的遮罩层内容由两张图片构成 底图+内部内容 实现代码 wxml 使用云开发的存储,自己开发的时候换掉src即可 ...

  6. 【微信小程序-原生开发】实用教程08 - 开通微信云开发,操作云数据库新增数据(含修改数据权限),初始化云服务(含获取微信云环境 id),获取云数据,滚动公告栏

    开始前,请先完成圆梦宝典中宫格导航的开发,详见 [微信小程序-原生开发]实用教程 07 - Grid 宫格导航,详情页,侧边导航(含自定义页面顶部导航文字) https://blog.csdn.net ...

  7. 微信小程序原生开发集成IM服务出现无法找到模块“tim-wx-sdk”的声明文件问题解决

    微信小程序原生开发集成IM服务出现无法找到模块"tim-wx-sdk"的声明文件问题解决: 通过npm命令安装配置: 在终端进入到小程序项目根目录执行:npm install 未初 ...

  8. 【微信小程序-原生开发】实用教程09 - 可滚动选项,动态列表-步骤条(含事件传参),动态详情(含微信云查询单条数据 doc)

    开始前,请先完成圆梦宝典中滚动公告栏的开发,详见 [微信小程序-原生开发]实用教程 08 - 开通微信云开发,操作云数据库新增数据(含修改数据权限),初始化云服务(含获取微信云环境 id),获取云数据 ...

  9. 【微信小程序-原生开发】实用教程02-添加全局页面配置、页面、底部导航

    开始前,请先完成项目创建,详见 [微信小程序-原生开发]实用教程01-注册登录账号,获取 AppID.下载安装开发工具.创建项目.上传体验 前期准备 因我们的项目是根据模板创建的,需先清理掉无效的页面 ...

最新文章

  1. 基于点云的机器人抓取识别综述
  2. Android TabWidget
  3. TripleDES加密解密
  4. MySQL 乐观锁与悲观锁
  5. java usc2短信编码_手机短信PDU编码与解码
  6. roscore尚未安装 问题解决方案
  7. 半监督训练-思想与代码实践
  8. TVM:使用 Auto-scheduling 来优化算子
  9. 开发指南专题十四:JEECG微云快速开发平台MiniDao 介绍
  10. WordPress内核站群全自动新闻采集发布源码,单站专用
  11. android---手电筒之摩尔斯电码
  12. 讨论 innodb_log_block_size 变量
  13. 代码的自动生成...
  14. SQL2005之后MS SQL版本 T-SQL 新增语法、函数(二)
  15. Ecshop V4.1.6 安装
  16. java 制作简历_个人简历java制作.doc
  17. android投屏到web,安卓投屏神器下载|安卓投屏神器(Web Video Caster)v4.5.4高级版下载 - 99安卓游戏...
  18. 论文相关-MATHTYPE字体对应
  19. 一位知名 Python 技术博主因病离世
  20. 技术经理成长复盘-激励

热门文章

  1. Compose error “HTTP request took too long to complete“
  2. Category的底层分析
  3. [Usaco2008 Oct]笨重的石子 DP
  4. 年薪30万、50万、100万的管理者,有啥分别?
  5. 谢少荣到计算机学院,我校校友谢少荣应邀回母校交流并受聘顾问教授
  6. Java实现简单航班查询系统
  7. Esper学习笔记五:EPL语法(3)
  8. CSUST选拔赛题解之-Problem C: 先有durong后有天
  9. (keras自学排雷)Layer lstm will not use cuDNN kernel
  10. 楼教主男人八题(第一题)