客户端转小程序之入门一

2018-12-04  本文已影响0人  我是田工

最近团队H5开发资源紧张,客户端开发同学资源略有闲置,所以决定让客户端同学也了解和熟悉小程序开发/快应用/小程序开发,以作后备。

这一系列的分享主要是引导有兴趣的同学能够快速入门小程序开发,不会有太深入的技术研究,目的是让客户端同学可以快速的进行小程序开发工作。

1.概要

    1.1 开发文档:

        官方的开发文档是最好的教程,我们接下来的所有知识点都是基于官方的开发文档的,所以实际开发过程中,随时翻阅开发文档很重要,不管是技术方面,还是合规方面,以及小程序的特殊要求,都可以在官方文档中找到。

        官方文档地址:https://developers.weixin.qq.com/miniprogram/dev/index.html?t=18111920

1.2 微信开发管理后台

    1.2.1 地址

        https://mp.weixin.qq.com

    1.2.2 账号

        绑定在公众号下面的小程序账号也需要注册,每个小程序账号都必须要有一个管理员,小程序后台需要录入管理员的身份证信息,每个身份证下面最多只能做5个小程序的管理员。

    1.2.3 功能

        这里只介绍开发管理功能和设置功能,其他的功能暂时与技术开发无关。

        开发管理:这里主要用来进行上线版本的管理,包括已上线/未通过审核/审核中/已上传的版本

        设置:

             a.基本设置:想要新建一个可上线的小程序工程,则必须要有AppID,只有完善了小程序的基本信息,才能生成AppID

            b.开发设置:完成基本设置之后,就可以开到AppID了。除此以外,小程序能访问的服务器域名(Api调用域名)、业务域名(H5的域名)需要在此进行配置,否则,真机中的小程序都将报错。同时,这些域名的修改每月都有次数限制。

1.3 开发工具:

       这里只介绍微信官方提供的开发工具,当然市面上可以用来进行微信小程序开发的工具有很多,这里就不介绍了,有兴趣的同学可以自己百度(这里建议不要Google,中国的东西找百度还是靠谱些)

       官方开发工具下载地址:https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html

       1.3.1 新建工程

            a.项目目录:小程序本地所在的文件夹

            b.AppID:申请了小程序开发账号之后,在微信小程序开发管理后台可以看到AppID

            c.项目名称:尽量起名为上线时的名称

        1.3.2 模拟器

            微信小程序的模拟器应该是最好用的,相较于快应用必须要使用真机来搭建模拟器环境的方案,小程序的模拟器甩了快应用十八条街都不止。iOS的模拟器还可以,但是编译速度远比不上小程序的,Android的模拟器就更加不用提了,所以使用微信小程序的模拟器进行初期开发,是一种很好的选择。

        1.3.3 编辑器与调试器

            做过客户端开发的同学应该不会太习惯小程序的这套逻辑,代码coding完成后,如果需要调试,是需要进入到调试器中才能进行调试,实际表现上,编译器中的代码是编译之前的,调试器中的代码是编译之后的,所以会存在两份几乎一样的代码,初期不熟悉的时候容易把两者弄混,导致出错。

            调试器的下方是常见的打印区,熟悉H5开发的同学会觉得这个界面非常的亲切。

        1.3.4 编译与预览

            保存功能会默认进行编译,所以想要重新编译新的代码,使用保存功能即可,点击编译可。

            预览是指开发工具会生成一个小程序临时二维码,只有被加入到了开发者计划中的微信用户,才可通过扫描该二维码打开开发中的小程序,只要是在真机中运行的小程序只支持https,模拟器中可以选择是否支持http。

        1.3.5 详情

            最右边的详情按钮是个很重要的按钮,当前开发的小程序的基本信息都在里面了。

            小程序包最大只能为2M,小游戏包最大只能为4M,开发时要时刻注意,点击详情按钮刻意随时查看包的大小。

            此处可以设置模拟器中是否支持http方式,是否校验服务器域名和业务域名。

2.开发基本知识

            这一节主要介绍开发所需的基础知识。

       2.1 项目工程结构

            pages:主要用来存放页面文件的文件夹。

            utils:主要用来存放一些工具类的文件夹,这里面一般只有js文件。

            app.js:这是小程序的入口,iOS可以类比为AppDelegate(UIApplication)的对象,Android可以类比为Application

            app.json:这是小程序的页面相关的配置文件,比如页面路径,导航的颜色等。

            app.wxss:这是一个总的样式文件,可以理解为样式的基类。

            project.config.json:这是小程序的配置文件,类似于iOS的info.plist,Android的build.gradle

            assets:这个文件夹本身是不存在的,不过页面文件的图片需要存放,所以我这里新建了这个图片文件的文件夹,专门用来存放图片,这里按照iOS的风格起名为assets。

    2.2 四件套

            小程序开发和H5开发很相似,包括实际开发中用的语言和技术,大部分和H5开发是重叠的,还有一部分是微信团队在H5开发的基础上进行了二次封装。所以小程序开发的基础是H5的三件套:js,css,xml。微信进行了二次封装之后,变成了js,wxss,wxml,同时,微信在此基础上,添加了一个json文件,接下来会详细介绍这四个文件的作用。

        js:这里主要是页面的逻辑,类似于Android的activity文件,iOS的VC文件

        json:这个文件的主要作用是当前页面的配置,主要是针对导航的,比如导航的标题,颜色等

        wxml:这个文件主要是页面的结构,Android:fragment;iOS:IB文件

        wxss:这个文件主要是页面元素的样式的描述,同样的,Android:fragment;iOS:IB文件

    2.3 常见的基础知识

        2.3.1 数据类型

            微信小程序开发中有三种数据类型,分别是:

            const:全局变量,不开修改,一般用于声明工具类

            var:全局变量,可修改

            let:局部变量,可修改

        2.3.2 文件的引用

            a.在相同文件夹中引用:const file = require("file.js")

            b.在不同文件夹中引用:const file = require("../util/file.js"),这里的../ 表示当前文件夹的上一级文件夹

        2.3.3 方法的调用

            2.3.3.1 同一js文件中的方法调用:

                a.单例类:functionName()

                b.普通类:this.functionName()

        2.3.3.2 不同js文件中的方法调用:

                a.单例类:需要在单例类中添加如下代码:

                    module.exports = {

                        publicFunctionName1:privateFunctionName1,

                        publicFunctionName2:privateFunctionName2

                    }

                b.普通类:一般普通类的js方法不对外开放

        2.3.4 this

            page类中的this可以理解为当前js对象,类似于iOS中的self,或者Android中的this。

            如果一个闭包要使用this,则必须在闭包外声明:var that = this ,否则将报错。

        2.3.5 app.js

            获取当前App对象var app = getApp() 在任何地方都可以通过该函数获取到app.js对象。

        2.3.6 数据的传递

            2.3.5.1 将数据传给单例类

                想要将page中的数据传递给单例类,比如page的js中调用网络通信的工具类,一般直接通过工具类的方法进行传递即可,和传统的iOS/Android开发并无差别

            2.3.5.2 page1.js传递数据到page2.js

                a.可以通过app.js中进行传递

                    在page1.js中:var app = getApp() ;app.data.tmpData = "测试数据"

                    在page2.js中:var app = getApp() ;let tmpData = app.data.tmpData

                b.可以通过路径进行传递,此处可以传递map对象或者一般的string对象都可以

                    在page1.js中:

                        wx.navigateTo({

                            url:"../home/home?tmpData=" + "测试数据"

                        })

                    在page2.js中的onload函数中:

                        onload:function(options){

                            let tmpData = options.tmpData

                        }

上一篇下一篇

猜你喜欢

热点阅读