黑马程序员技术交流社区

标题: 【郑州校区】最详细的微信小程序讲解 [打印本页]

作者: 我是楠楠    时间: 2016-10-31 10:52
标题: 【郑州校区】最详细的微信小程序讲解
本帖最后由 我是楠楠 于 2017-8-18 11:18 编辑

最详细的微信小程序讲解

▇文/郑州中心双元课堂产品部 李老师

相信最近各位同学已经被各种关于微信小程序的介绍刷屏了, 大家应该也关心这个新兴起的东西, 但是对于学习Android开发、iOS开发的同学, 可能很难马上上手去做, 也很难去理解这是什么, 那这篇文章就从理论上简单地向大家说明以下几个问题。
1.微信小程序是什么
2.微信小程序开发所使用的技术栈, 以及对它的细致讲解
3.微信提供的小程序开发框架
相信通过这篇文章, 大家起码对于微信小程序会有一个更直观的认识, 也能上手进行一些简单的开发。接下来看第一个部分的内容, 微信小程序是什么, 在这之前先看一下官方的解释。
我们提供了一种新的开放能力,开发者可以快速地开发一个小程序。小程序可以在微信内被便捷地获取和传播,同时具有出色的使用体验。
微信小程序是什么
首先微信小程序这五个字中最重要的有两个词, 一个是小, 一个是程序, 我们分别来看这两个词所表达的意思。
程序
首先是程序一词, 微信小程序所提供的体验是原生的, 而不是H5, 理论上微信小程序提供的是完全原生的体验。
那微信是如何实现的呢? 总体上微信借助了React Native的四项, 那React Native在下面我会简称为RN, 关于RN具体的介绍请参照React Native 中文网, 而微信小程序基本上就是基于RN的框架设计原理自己鼓捣了一个轮子, 为什么我这么说,请参照微信小程序框架原理
也就是说, 微信是一个云操作系统, 你可以开发程序, 运行在微信中, 你的这个程序是完全类似于原生的体验, 就像你使用Android的SDK开发一个程序, 运行在Android手机中一样, 而你为微信开发一个程序, 可以运行在Android上、 iOS上, 所有有微信的地方, 你的程序都可以运行。
虽然微信小程序能够提供近似原生的体验, 但是大家不用慌张, 微信小程序还远不可能代替原生应用, 有如下两个原因:
首先, 微信再大再完整, 也只是一个程序, 在微信里面玩<炉石传说>这种大型游戏, 想想就觉得难受。
其次, 微信运行在iOS和Android中, 本身微信就是受限的, 苹果也不可能让微信把自己的命给革了, 所以微信小程序本身也会受到很多限制。
但是客户端开发者还是有必要了解一些微信小程序的开发, 这样也能做到知己知彼。
技术栈
这个章节简单地介绍一下微信小程序所使用到的一些知识, 并且对这些知识进行一些简单的了解, 大概有如下的几个方面:
  • HTML
  • CSS
  • JS
HTML
HTML类似于我们经常用到的 layout, 是一种类似于XML的文档语言, 使用标签来描述一个页面的结构。来看一个简单的HTML例子:
1.<!DOCTYPE html>
2.<html>
3.    <head>
4.        <meta charset="utf-8">
5.        <title>HelloWorld</title>
6.    </head>
7.    <body>
8.        <img src="hello_world.gif"/>
9.
10.        <a href="https://baidu.com">这是一个超链接</a>
11.    </body>
12.</html>
上述例子中的一些概念
lhtml, head, body叫做标签, 标签有标签的名称。
limg是一个图片标签, 通过img的属性src可以设置图片的路径, 通过路径找到图片。
la标签是超链接标签, 通过href来设置链接到的目标, 而a标签开闭标签之间的叫做标签内容, a标签的内容是标签显示在页面中的文本。
这就是一个常见的HTML结构, 可以复制并且查看, 通过这个例子, 大家基本上就已经能够掌握HTML的语法了, 和我们的layout非常类似, 但是要注意像a标签这样的标签写法, 和我们平常的写法略有不同。
HTML掌握到这里已经差不多了, 不用太过深究, 这些标签在微信小程序的开发中基本上没用, 微信有一套自己的标签组件, 但是一定要理解这种写法才行。
CSS
前面我们已经讲过HTML的写法了, 下面来简单的看一下CSS的一些基本特点。
首先, HTML用来描述页面结构, 这一点很重要, 也就是说, HTML主要的作用是描述页面上有什么元素, 大致的排列, 大致的顺序, 而不关心页面长相。那元素(或者我们称之为控件)的长相, 例如什么字体大小, 什么颜色等, 这些长相或者叫表现上的东西, 通过CSS来描述, 包括相对的位置等, 都是CSS来描述。
为了说明CSS的作用和写法, 我们对刚才的程序做一个扩展。
1.<!DOCTYPE html>
2.<html>
3.    <head>
4.        <meta charset="utf-8">
5.        <title>HelloWorld</title>
6.
7.        <style>
8.            .img_simple {
9.                border: 1px solid #ccc;
10.                padding: 5px
11.            }
12.        </style>
13.
14.    </head>
15.    <body>
16.        <img class="img_simple" src="hello_world.gif"/>
17.
18.        <a href="https://baidu.com">这是一个超链接</a>
19.    </body>
20.</html>
细心的同学可能会发现, 多出来了一个style标签, style标签中写的好像还不是XML, 那这个就是我们的CSS, 类似JSON, CSS中通过冒号来表示key-value的分隔, 通过分号来表示不同属性之间的分隔。
了解了CSS的写法以后, 接下来我们细致的探讨一下CSS的原理。
l如果要给某个标签添加修饰(长相)属性, 需要先找到这个标签
lCSS主要的组成部分有以下三个
²选择器
²位置属性
²元素属性
我们一个一个来解读一下:
选择器
选择器就是通过某种方式找到一个标签,例如我们上面的写法,首先给img标签添加一个class属性img_simple,然后在CSS中.img_simple选中这个标签,就可以给这个标签添加CSS属性了,这也类似于我们平常所写的findViewById。
位置属性
在Android中我们使用布局和一些位置属性来确定一个元素的位置,那CSS中如果要确定一个元素位置的话,通常只使用位置属性即可,而位置属性就是类似于我们Android中的layout_marginLeft paddingLeft等。
元素属性
元素属性就是类似于我们Android开发中常用到的textColor textSize等属性。
微信小程序的开发并不直接使用HTML, 但是基本上却直接使用CSS, 所以CSS还是有必要学习一下,在这里不展开继续讨论CSS的一些具体细节了, 但是提供给大家几篇非常优秀的文章,如CSS入门最好的手册CSS中的Flex布局语法CSS3简介,便于大家更细致的了解CSS。
JavaScript
这个部分我准备详细的介绍一下, 同时和Java做一个对比
变量和数据类型
1.var i = 10;
2.var s = "hello";
3.var bool = true;
4.var arr = [1, 2, 3];
5.var arr = new Array(1, 2, 3);
JS中变量的声明和Java有显著的不同
·JS中使用var关键字来声明变量, 不能使用具体的变量类型
o因为变量没有数据类型, 在运行时可以随时改变变量的数据类型
·JS中也有数据类型的概念, `='后面的是什么类型的数据一般就是什么类型
o数值型, 这一点和Java不同, Java中有int和float之分, 但是JS中没有
o字符串型, js中没有字符型这个数据类型, 同时js声明字符串的时候可以使用双引号也可以使用单引号
o布尔型
o数组, 数组有两种声明方式, 它们是完全等价的
·不同于Java, JS中只有两种作用域, 一种是全局作用域, 一种是函数作用域, 在JS中并不是每个花括号之间都是一个作用域, 这一点需要注意
函数
1.function funName(arg1, arg2) {
2.    // function body
3.    return value;
4.}
5.
6.funName(10, 20);
很显然JS中定义函数的方式和java不同
·JS中没有private 和 private 等限定符, 无论是变量还是函数都没有
·JS的函数参数不声明, 将变量名表示出来即可, 因为JS中并没有变量类型的概念, 变量可以是任何类型
·JS中调用函数的方式和Java一模一样, 函数名(参数1, 参数2), 先牢记这一点, 很重要
·这种函数的定义方式在JS中叫做函数字面量, 简而言之就是字面上表示一个函数的方式
JS中的函数也是一种数据类型, 这一点和Java有巨大的不同, 在JS中函数是一等公民, 可以传递可以赋值, 同时函数还是一个类型, 如下
1.var funName = function(arg1, arg2) {
2.    // function body
3.    return value;
4.}
5.
6.funName(10, 20);
如上定义了一个匿名函数, 语法和定义一个普通函数有略微的区别
·匿名函数就是声明了一个函数变量, 而变量的值就是一个函数声明, 但是这个声明不加函数名
·匿名函数的声明方式和字面量声明函数基本上是等价的, 只有一个细微的差别, 就是这种方式声明的函数, 在声明后面的代码才可以使用此函数, 而字面量没有这个限制
·这种函数的声明很显著的说明了一个问题, JS中的函数是一种数据类型, 但是Java中的函数不是, Java中的函数只有字面量的定义方式, 并不是一个值
·其实字面量的方式创建函数, 最终JS引擎处理的过程也是通过将其转为这种方式进行存储
下面对函数做一个扩展
1.function funName(arg1, arg2) {
2.    // function body
3.    return value;
4.}
5.
6.var fun = funName;
7.
8.fun(10, 20);
·JS中无论何种方式声明函数, 其都是一个值, 而值是可以赋值给其它变量的
·函数调用和函数赋值是不同的
o函数的调用是通过函数名()的方式, 记得后面有括号
o而函数当做变量使用的时候, 对其进行赋值是直接使用函数名
o这一点要牢记
对象
众所周知的, JS中没有类型的概念(不准确), 但是这不妨碍JS是一种面向对象的语言, JS中依然有继承和聚合, JS实现面向对象的方式和Java不同, JS是一个面向原型的语言, 这一点属于高级JS技巧的部分, 不需要特别的关注, 但是要知道, JS中无法声明一个类型, JS中的对象更类似于Java中的Map的概念
上面我们提过JS中数组的定义方式, 下面来看看如何定义一个JS中的对象
1.var obj = {
2.    property1: "nihao",
3.    property2: 10,
4.    property3: true
5.}
6.
7.var obj = new Object();
8.obj.property1 = "nihao";
9.obj.property2 = 10;
10.obj.property3 = true;
通过这种方式, 你会发现, 这和JSON很像, 同时又像Java中的Map集合
·对象中是一些键值对, 每一个键值对又是一个变量的声明, 是JS中对象的属性
·对象有两种声明方式, 第一种叫做对象字面量, 第二种方式是正常的声明
·无论何种声明方式, 在使用阶段, 如果赋值的目标属性存在, 则修改其值, 如果不存在, 则创建并赋值
但是, 同学们可能不理解JS中的函数这么简单, 如何实现那么复杂的功能, 那我们接下来看一下如何给一个对象添加一个函数
1.var obj = {
2.    property1: "nihao",
3.    property2: 10,
4.    property3: true,
5.    sayName  : function(arg1, arg2) {
6.        return value;
7.    }
8.}
9.
10.var obj = new Object();
11.obj.property1 = "nihao";
12.obj.property2 = 10;
13.obj.property3 = true;
14.obj.sayName = function(arg1, arg2) {
15.    return value;
16.}
17.
18.obj.sayName();
这就是给一个对象添加方法的方式, 签名已经介绍过, 在JS中函数是一种数据类型, 可以复制给变量, 同时我们也介绍过, 对象中的属性其实就是变量, 那很好理解, 给对象添加一个方法, 就是给对象中一个变量赋值上一个函数类型的数据而已
总结
以上就是JS简单的语法基础, 这个部分着重关注的是一些和Java的不同, 更具体的语法请参照手册, 非常简单, 对大家来说, 简单看几眼, 也掌握的八九不离十了
微信小程序
接下来就要进入微信小程序的学习阶段了, 微信小程序并不难, 但是由于我们并没有接触过前端的开发, 所以可能不太好理解, 练习一个小案例, 会有更深的印象
在开始之前, 有一点需要强调, 虽然微信小程序使用了大量的前端开发的技术, 但是微信小程序是原生的, 并且这些代码无法在浏览器中执行
环境
1.获取微信小程序的AppID
由于现在微信小程序还是内侧阶段, 所以大家应该都没有内侧资格, 包括我也没有, 所以这一步可以省略
2.安装IDE
2.一路下一步即可
3.新建项目
1.打开已经安装的程序
2.在手机上使用微信扫描二维码登录

3.点击加号创建一个新的项目
3.填写信息, 第一个输入框点无AppId
4.点击添加项目, 到此为止已经成功创建了一个微信小程序的工程
编辑器的选择
在JS的领域, 一般情况下不会使用集成开发环境, 也就是我们常说的IDE, 类似Eclipse, AndroidStudio, IntelliJ IDEA等
前端开发者更多的会去选择Atom, Sublime, EditPlus等附带一些快捷功能的编辑器, 这是因为JS是一个动态语言, 并且本身无需编译执行
我们在做微信小程序的开发过程中, 可以使用微信提供的工具中的编辑器进行开发, 也可以选择任何一个你想用的编辑器, 直接编辑文本即可
微信提供的工具中所附带的编辑器是VS Code的核心编辑器
核心概念
一个微信小程序其实类似于一个Android应用, 开发模式也很类似, 所使用到的组件也很类似, 接下来简单的阐述一下开发一个微信小程序的过程
1.创建工程
2.编写app.js文件, 类似于Android中的Application类
3.编写app.json配置文件, 类似于我们Android中的Manifest清单文件, 用于配置工程, 注册页面
4.编写具体的页面
公共文件
小程序中的公共文件主要指的是三个 app.js, app.json, app.wxss, 分别来看一下这三个文件分别的作用
app.js
类似于Android中的Manifest清单文件, 用于获取程序的声明周期事件, 声明全局共享的方法和数据
app.json
我们使用app.json文件来对微信小程序进行全局配置,决定页面文件的路径、窗口表现、设置网络超时时间、设置多 tab 等
app.wxss
小程序公共样式表, 类似于我们Android中的Manifest里的application节点配置的theme
分层
微信小程序开发的核心概念中, 分层是一个很重要的部分, 现在先来回顾一下Android中的分层
·逻辑层, 也就是平常我们所写的Activity
·视图层, 也就是我们平常所写的layout文件
在进行下面的列举之前, 先简单解释一下小程序开发中的模块, 或者在我们Android中称之为组件
之所以小程序中叫做模块, 是因为小程序并不像Android那样复杂, 并没有Service, Provider, BroadcastRevicer等组件, 模块只是一个页面, 类似于Android中的Activity
上面也就是我们Android中常说的系统提供的MVC分层, 在微信小程序提供的开发框架(Framework)中, 也借鉴了很多现有的JS框架(React, Vue), 由于JS本身的一些特性, 以及微信小程序的量级也比较轻, 所以在工程化上, 微信小程序做的更彻底一些, 分层也更明确
微信团队对现有的大部分程序做了一些分析, 发现常见的逻辑层次有: 数据逻辑, 页面(数据呈现)以及(页面间的)导航
比如我们拿新浪微博 APP 举例:
数据逻辑:我关注的人,我的粉丝,微博用户所发的微博,以及这些微博数据的组织,比如按关注人分组等等这类跟数据相关的部分。
页面:对数据的呈现,比如我关注的人的微博列表,某个用户的微博主页,长微博文章页等等。
导航:页面间的跳转。比如从微博列表页面可以进入到微博详情页,点击微博发帖人头像可以进入个人主页等等。
由于这些思考, 微信给出了一个开发框架, 这个框架名字叫做MINA, 这个框架在页面部分有如下的部分:
  • 逻辑层
  • js文件
  • 视图层
wxml文件存放HTML代码, 但是这个部分的HTML并不是原生的HTML代码, 而是微信提供了自己的一套标签体系
wxss文件存放CSS代码, 此处的CSS代码基本上就是原生的CSS, 可以支持CSS3
简单介绍了一下核心的一些概念, 下面通过一个小例子, 来示例如何开发微信小程序
豆瓣电影界面
流程
1.建立工程文件和配置文件
o创建app.js全局对象, 在全局对象中提供获取豆瓣服务器数据的方法
o配置清单
o在全局提供访问豆瓣服务器的方法
2.新建电影列表页面
1.创建wxml文件来编写页面结构
2.创建wxss文件来描述页面中元素的样式
3.创建js文件从豆瓣的服务器中获取数据, 并显示在界面上
豆瓣开放API
豆瓣网是一个著名的网站, 其中有电影相关的信息, 我们这个例子所完成的功能就是拉取豆瓣服务器中的热映电影信息, 然后通过列表的方式呈现出来
获取豆瓣服务器数据的方法
豆瓣电影提供了开放API, 调用一个接口便可以获取
参数
参数封装在一个json字符串中, 包含在请求体中发送
支持的参数有:
·start 从哪一条开始
·count 数据的总长度
工程结构
·根目录, 根目录中存放一些工程文件, 和全局文件, 一般情况下有如下三个
oapp.js 中有App函数, 用于获取整个小程序的实例, 生命周期等, 类似于Android中的Application类
oapp.json 是整个小程序的注册文件, 类似于Anroid中的Manifest
oapp.wxss 是整个正序的公共CSS, 类似于Android中Application的Theme
·pages目录, pages目录用于存放所有的页面
omovies 文件夹, 热映电影列表
§movies.js 电影数据获取逻辑写在这个文件中, 类似于Android中的Activity
§movies.wxml 电影页面的空间结构文件, 类似于Android中的Layout
§movies.wxss 存放电影页面的CSS, 也就是Layout的装饰
小程序开发中, 每一个页面都对应三个文件, js, wxml, wxss, 这是一开始就要创建好的
创建工程
在这个步骤中, 主要是为了创建工程文件, 以及一些配置文件, 类似于我们Android中的Application, manifest等
app.js
先来看一下app.js, 这个文件主要用途就是获取小程序的实例, 获取小程序的声明周期
1.App({
2.    onLaunch: function() {
3.
4.    }
5.})
app.json
这个文件主要用于配置小程序, 有如下一些配置, 每个配置对应超链接是详细的介绍
[td]
属性
类型
必填
描述
Array
设置页面路径, 配置方式类似于manifest中配置Activity
Object
设置默认的窗口表现, 类似于Application的theme
Object
设置底部 tab 的表现
Object
设置网络超时时间
Boolean
设置否是开启调试模式
接下来来看一下这个示例的配置文件代码
1.{
2.    "pages" : [
3.        "pages/movies/movies"
4.    ],
5.
6.    "window" : {
7.        "backgroundTextStyle":"light",
8.        "navigationBarBackgroundColor": "#000000",
9.        "navigationBarTitleText": "热映电影",
10.        "navigationBarTextStyle":"white"
11.    },
12.
13.    "networkTimeout": {
14.      "request": 10000,
15.      "connectSocket": 10000,
16.      "uploadFile": 10000,
17.      "downloadFile": 10000
18.    },
19.
20.    "debug": true
21.}
可以是用生成工具来生成配置文件
由以上得知, 这个程序只有一个页面, 就是pages中配置的movies页面, "pages/movies/movies" 这个配置的含义是, pages目录下, 有一个movies目录, movies中是具体的页面代码, 一共有三个文件, 分别是movies.wxml, movies.wxss, movies.js
app.wxss
app.wxss 是全局的样式表文件, 全局所有页面都会应用到这个样式表中所描述的样式
1.page {
2.  font-family: -apple-system-font, 'Helvetica Neue', Helvetica, 'Microsoft YaHei', sans-serif;
3.  height: 100%;
4.  width: 100%;
5.  background-color: #fff;
6.  display: flex;
7.  flex-direction: column;
8.}
这个文件主要描述了全局所有的页面的基本主题, 包括字体, 宽高, 背景颜色等, 具体的CSS语法请参照手册, 这个文件中的语法就是标准的CSS3语法
movies页面
每一个页面对应的都有三个文件
·js文件, 其中存放js代码, 用于获取页面的生命周期, 请求网络等
·wxml文件, 其中是html的语法, 但是不是标准的html, 是微信自己的一套标签体系, 用来描述页面的结构, 控件之间的关系等
·wxss文件, 其中是标准的css语法, 用来描述页面上的控件的长相, 类似于字体, 颜色等
js文件
下面来看一下这个电影列表的js文件
1.// 调用Page方法, 传入一个匿名对象, 这个对象中可以包含页面的生命周期回调函数, 可以包含默认的用于显示的数据
2.Page({
3.    // 用于显示的数据
4.    data: {
5.        items: []
6.    },
7.
8.    // 当页面加载完成时被调用
9.    onLoad: function() {
10.        // 页面加载完成的时候, 请求网络数据, 并设置给页面
11.
12.        var page = this;
13.
14.        getDoubanMovies(function(res) {
15.            // 通过这个方法, 可以将数据设置给页面
16.            page.setData({items: res.data.subjects});
17.        }, function() {
18.
19.        });
20.    }
21.})
22.
23.// 获取网络数据, 传入两个函数, 分别是成功和失败的回调
24.function getDoubanMovies(onSuccess, onFailed) {
25.        var API_URL = "https://api.douban.com/v2/movie/";
26.        var params = {
27.            count : 20
28.        };
29.
30.        // wx.request是微信提供的网络请求框架, 小程序开发的时候只能使用wx提供的api, 而不能使用ajax调用
31.        wx.request({
32.          url: API_URL + `in_theaters`,
33.          data: params,
34.          header: {'Content-Type': 'application/json'},
35.          success: onSuccess,
36.          fail: onFailed
37.        })
38.    }
和Android开发时最大的不同是, 小程序中可以将数据提供给layout(wxml, html), 在layout中写简单的js代码来获取数据并显示
接下来, 页面已经获取到数据了, 一起来看一下如何将这些数据显示在页面上
wxml文件
在看代码之前, 大家一定要知道一件事, 通过在js中调用Page.setData()方法, 可以将一个对象传给wxml文件, 在wxml文件中可以获取这个传入的数据, 并且可以通过{{ html中的代码 }}这种方式来在wxml文件中包含简单的js代码, 接下来简单的看一下如下代码
1.<scroll-view class="container_scroll" scroll-y="true">
2.    <block wx:for="{{items}}">
3.        <view class="item">
4.            <image class="poster" src="{{item.images.small}}"></image>
5.            <view class="meta">
6.                <text class="title">{{item.title}}</text>
7.                <text class="sub-title">{{item.original_title}}({{item.year}})</text>
8.                <view class="artists"><text>导演:</text><text wx:for="{{item.directors}}"> {{item.name}} </text></view>
9.            </view>
10.            <view class="rating">
11.                <text>{{item.rating.average}}</text>
12.            </view>
13.        </view>
14.    </block>
15.</scroll-view>
以上就是整个布局文件, 这里面使用了很多组件, 类似于Android中的控件, 微信小程序提供了很多组件, 便于我们进行开发, 基本能够满足日常的开发需求, 组件列表请查看官方组件文档
·scroll-view, 类似Android中的ScrollView
·block, 是语句控制标签
·view, 是类似于Android中的四大布局, 但是这个地方只有一个布局
这个地方不是特别容易理解, 请参照微信官方说明来仔细练习一下, 并且通过这个代码的运行, 思考一下这个地方
wxss文件
这个文件不是很重要, 这个文件主要用于描述布局中的元素的长相, 这个也是前端开发中的惯用技巧, 和我们在Android开发的时候直接在layout描述页面长相不同, 前端开发中布局和样式是分离的, 便于修改和控制
这个部分内容比较多, CSS本身也比较复杂, 酌情了解就可以
1..container_scroll {
2.  display: flex;
3.  flex: 1;
4.  flex-direction: column;
5.}
6.
7..item {
8.  display: flex;
9.  padding: 20rpx 40rpx;
10.  border-bottom: 1rpx solid #eee;
11.  cursor: pointer;
12.}
13.
14..item .poster {
15.  width: 128rpx;
16.  height: 128rpx;
17.  margin-right: 20rpx;
18.}
19.
20..item .meta {
21.  flex: 1;
22.}
23.
24..item .meta .title,
25..item .meta .sub-title {
26.  display: block;
27.  margin-bottom: 15rpx;
28.}
29.
30..item .meta .title {
31.  font-size: 32rpx;
32.}
33.
34..item .meta .sub-title {
35.  font-size: 22rpx;
36.  color: #c0c0c0;
37.}
38.
39..item .meta .artists {
40.  font-size: 26rpx;
41.  color: #999;
42.}
43.
44..item .rating {
45.  font-size: 28rpx;
46.  font-weight: bold;
47.  color: #f74c31;
48.}
以上就是这个小例子的代码, 到此为止已经全部实现
项目完成
和Android开发中不同的是, 在一个项目完结的时候, 并不需要编译, 因为前端动态语言本就是交给程序直接执行的, 也无需混淆啊之类的, 那我们就继续看一下如何提交
由于我也没有开发者账号, 大家也不会有人有, 微信小程序这个时候还没有公测, 所以大致知道如何提交即可, 在公测以后可以再行联系
最后的话
微信小程序使用了一整套前端开发的技术, 所以理解起来可能比较麻烦, 但是大家不需要担心, JavaScript 之类的前端语言和Android不同, JavaScript 和 HMTL, CSS更加简单, 大家简单了解一下, 很快即可上手。
同时, 任何一个新的技术, 最佳的方式就是通过官方文档学习, 但是由于大家可能并不是很清楚前端技术, 所以希望能通过一些不完整的, 简单的描述, 一个小例子, 带领大家进入这扇门, 但是希望大家一定要多看官方文件。
更多学习资料可关注楠楠QQ1692250804

作者: fjh6668    时间: 2017-7-7 09:50
学习了,很详细的微信小程序讲解




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2