微信小程序开发与运营
2024-05-15 19:52:19 3 举报
AI智能生成
小程序
作者其他创作
大纲/内容
微信小程序概述
认识微信小程序
小程序简介
简介:小程序嵌入微信中,不需要下载安装外部应用,用户通过扫描二维码和搜索相关功能的关键词即可 使用,具备无须安装,触手可及,用完即走,无需卸载的特性。
小程序的特征
1.无须安装
小程序内嵌于微信程序之中,用户在使用过程中无须在应用商店下载安装外部应用。
2.触手可及
用户通过扫描二维码等形式直接进人小程序,实现线下场景与线上应用的即时联通
3.用完即走
用户在线下场景中,当有相关需求时,可以直接接入小程序,使用服务功能后便可以对其不理会,实现用完即走。
4.无须卸载
用户在访问小程序后可以直接关闭小程序,无须卸载。
小程序内嵌于微信程序之中,用户在使用过程中无须在应用商店下载安装外部应用。
2.触手可及
用户通过扫描二维码等形式直接进人小程序,实现线下场景与线上应用的即时联通
3.用完即走
用户在线下场景中,当有相关需求时,可以直接接入小程序,使用服务功能后便可以对其不理会,实现用完即走。
4.无须卸载
用户在访问小程序后可以直接关闭小程序,无须卸载。
小程序应用场景的特点
简单的业务逻辑:简单是指应用本身的业务逻辑并不复杂。
低频度的使用场景:低频度是小程序使用场景的另一个特点。
低频度的使用场景:低频度是小程序使用场景的另一个特点。
微信小程序开发流程
注册小程序账号
开发环境准备
微信开发工具的下载及安装
创建第一个小程序项目
运行及发布小程序
微信小程序开发者工具界面功能介绍
工具栏
在工具栏中可以实现多种功能,例如账号的切换,模拟区、编辑区、调试区的显示/隐藏。小程序的编译、预览,切换后台,清理缓存等。
模拟区
在模拟区中选择模拟手机的类型、显示比例、网络类型后,模拟器中会显示小程序的运行效果
编辑区
编辑区用来实现对代码的编辑操作,编辑区中支持对wxml、.wxss、.s 及ison 文件的操作,使用组合键能提高代码的编辑效率。
目录文件区
目录文件区用来显示当前项目的目录结构,单击左上角的“+”按钮可以进行目录和文件的创建,右键单击目录文件区中的文件或目录可以进行“硬盘打开”“重命名”“删除”等相关操作。
调试区
调试区的功能是帮助开发者进行代码调试及排查有问题的区域。小程序系统为开发者提供了9 个调试功能模块,分别是 Console、Sources、Network、Security、Storage、AppData.Wxml、Sensor 和Trace。
微信小程序开发基础
小程序的基本目录结构
app.js
小程序逻辑文件,主要用来注册小程序全局实例。在编译时,app.js 文件会和其他页面的逻辑文件打包成一个 JavaSeript 文件。该文件在项目中不可缺少
app.json
小程序公共设置文件配置小程序全局设置。该文件在项目中不可缺少
app.wxss
小程序主样式表文件,类似HTML的Scss文件。在主样式表文件中设置的样式在其他页面文件中同样有效。该文件在项目中不是必需的。
project.config.json
小程序的开发框架
视图层
WXML
wxml 文件用于描述页面的结构
WXSS
wxss 文件用于描述页面的样式
逻辑层
app.js
.js
数据层
页面临时数据或缓存
在Page()中,使用 setData 函数将数据从逻辑层发送到视图层,同时改变对应的this.data 的值。
setData() 函数的参数接收一个对象,以 (key,value) 的形式表示将 key 在 this.data 中对应的值改变成 value。
setData() 函数的参数接收一个对象,以 (key,value) 的形式表示将 key 在 this.data 中对应的值改变成 value。
文件存储
使用数据API接口,如下:
wxgetStorage 获取本地数据缓存。
wxsetStorage设置本地数据缓存。
wxclearStorage清理本地数据缓存。
wxgetStorage 获取本地数据缓存。
wxsetStorage设置本地数据缓存。
wxclearStorage清理本地数据缓存。
网络存储与调试
上传于下载文件API接口,如下:
wxrequest发起网络请求。
wxuploadFile 上传文件。
wxdownloadFile 下载文件。
调用URL的API接口,如下:
wxnavigateTo 新窗口打开页面。
wx.redirectTo 原窗口打开页面。
wxrequest发起网络请求。
wxuploadFile 上传文件。
wxdownloadFile 下载文件。
调用URL的API接口,如下:
wxnavigateTo 新窗口打开页面。
wx.redirectTo 原窗口打开页面。
配置文件
全局配置文件
pages
pages 配置项是必填项设置pages 配置项时,应注意以下3点:
(1)数组的第一项用于设定小程序的初始页面
(2)在小程序中新增或减少页面时,都需要对数组进行修改
(3)文件名不需要写文件扩展名。小程序框架会自动寻找路径及对·js、json、wxml和wxss 文件进行整合数据绑定。
(1)数组的第一项用于设定小程序的初始页面
(2)在小程序中新增或减少页面时,都需要对数组进行修改
(3)文件名不需要写文件扩展名。小程序框架会自动寻找路径及对·js、json、wxml和wxss 文件进行整合数据绑定。
window
window 配置项负责设置小程序状态栏、导航条、标题、窗口背景色等系统样式。window配置项可以配置的对象参考表。
tabBar
当需要在程序顶部或底部设置菜单栏时,可以通过配置 tabBar 配置项来实现。tabBar 配置项可以配置的属性如表所示
networkTimeout
小程序中各种网络请求API的超时时间值只能通过 networkTimeout 配置项进行统一设置不能在API中单独设置。networkTimeout 可以配置的属性如表所示。
debug
debug 配置项用于开启开发者工具的调试模式,默认为 false。开启后,页面的注册、路由、数据更新、事件触发等调试信息将以 info 的形式输出到 Console (控制台) 面板上。
页面配置文件
页面配置文件(*.json)只能设置本页面的窗口表现,而且只能设置 window配置项的内容。在配置页面配置文件后,页面中的window 配置值将覆盖全局配置文件(app.json)中的配置值。
逻辑层文件
项目逻辑文件
项目逻辑文件 app.js中可以通过App()函数注册小程序生命周期函数、全局属性和全局方法,已注册的小程序实例可以在其他页面逻辑文件中通过getApp()获取。
页面逻辑文件
页面逻辑文件的主要功能有:设置初始数据;定义当前页面的生命周期函数;定义事件处理函数等。每个页面文件都有一个相应的逻辑文件,逻辑文件是运行在纯JavaScript 引擎中。因此,在逻辑文件中不能使用浏览器提供的特有对象(document、window)及通过操作DOM 改变页面,只能采用数据绑定和事件响应来实现。
页面结构文件
数据绑定
小程序在进行页面数据绑定时、框架会将WXML文件与逻辑文件中的 data 进行动态绑定,在页面中显示data中的数据。小程序的数据绑定使用Mustache语法({{}})将变量或 运算规则包起来。
简单绑定
简单绑定是指使用双大括号((111)将变量包起来,在页面中直接作为字符串输出使用。
简单绑定可以作用于内容、组件属性、控制属性等的输出。
【注意】:简单绑定作用于组件属性、控制属性时,双大括号外应添加双引号。
简单绑定可以作用于内容、组件属性、控制属性等的输出。
【注意】:简单绑定作用于组件属性、控制属性时,双大括号外应添加双引号。
运算
在{{}}内可以做一些简单的运算(主要有算术运算、逻辑运算、三元运算、字符串运算等),这些运算均应符合JavaScript 运算规则。
条件数据绑定
条件数据绑定就是根据绑定表达式的逻辑值来判断是否数据绑定当前组件。
wx:if条件数据绑定
wx:if条件数据绑定是指使用wx:if这个属性来判断是否数据绑定当前组件。
block wx:if条件数据绑定
当需要通过一个表达式去控制多个组件时,可以通过<block>将多个组件包起来,然后在<block>中添加 wx:if属性即可。
wx:if条件数据绑定
wx:if条件数据绑定是指使用wx:if这个属性来判断是否数据绑定当前组件。
block wx:if条件数据绑定
当需要通过一个表达式去控制多个组件时,可以通过<block>将多个组件包起来,然后在<block>中添加 wx:if属性即可。
列表数据绑定
列表数据绑定用于将列表中的各项数据进行重复数据绑定。
1.wx.for
在组件上,可以使用 wx:for 控制属性绑定一个数组,将数据中的各项数据循环进行数裤绑定到该组件,格式如上:
1.wx.for
在组件上,可以使用 wx:for 控制属性绑定一个数组,将数据中的各项数据循环进行数裤绑定到该组件,格式如上:
2.block wx:for
与 block wx:if类似,在wxml中也可以使用<block>包装多个组件进行列表数据绑定.
与 block wx:if类似,在wxml中也可以使用<block>包装多个组件进行列表数据绑定.
模板
定义模板
模板代码由wxml组成,因此其定义也是在wxml文件中,定义模板的格式为:
模板代码由wxml组成,因此其定义也是在wxml文件中,定义模板的格式为:
调用模板
将模板定义后,就可以对其进行调用了。调用模板的格式为:
< template is= "模板名称" data == "{{传入的数据}}" />
其中,<template>为模板标签;is属性用于指定要调用的模板名称;data属性定义要传人的数据,如果模板中不需要传人数据,data属性可以省略。
将模板定义后,就可以对其进行调用了。调用模板的格式为:
< template is= "模板名称" data == "{{传入的数据}}" />
其中,<template>为模板标签;is属性用于指定要调用的模板名称;data属性定义要传人的数据,如果模板中不需要传人数据,data属性可以省略。
引用页面文件
import方式
include方式
include方式
页面事件
定义事件函数在.js文件中定义事件函数来实现相关功能,当事件响应后就会执行事件处理代码。
调用事件 调用事件也称为注册事件。调用事件就是告诉小程序要监听哪个组件的什么事件,通常在页面文件中的组件上注册事件。事件的注册(同组件属性),以“key=value形式出现,key(属性名)以bind或 catch 开头,再加上事件类型,如 bindtap、catchlongtap。其中,bind开头的事件绑定不会阻止冒泡事件向上冒泡,catch开头的事件绑定可以阻止冒泡事件向上冒泡。value(属性值)是在js中定义的处理该事件的函数名称,如click。
冒泡事件 冒泡事件是指某个组件上的事件被触发后,事件会向父级元素传递,级元素再向其父级元素传递,一直到页面的顶级元素。
非冒泡事件 非冒泡事件是指某个组件上的事件被触发后,该事件不会向父节点传递在WXML中,冒泡事件有6个,如表所示。
调用事件 调用事件也称为注册事件。调用事件就是告诉小程序要监听哪个组件的什么事件,通常在页面文件中的组件上注册事件。事件的注册(同组件属性),以“key=value形式出现,key(属性名)以bind或 catch 开头,再加上事件类型,如 bindtap、catchlongtap。其中,bind开头的事件绑定不会阻止冒泡事件向上冒泡,catch开头的事件绑定可以阻止冒泡事件向上冒泡。value(属性值)是在js中定义的处理该事件的函数名称,如click。
冒泡事件 冒泡事件是指某个组件上的事件被触发后,事件会向父级元素传递,级元素再向其父级元素传递,一直到页面的顶级元素。
非冒泡事件 非冒泡事件是指某个组件上的事件被触发后,该事件不会向父节点传递在WXML中,冒泡事件有6个,如表所示。
页面样式文件
尺寸单位
样式导入
选择器
常用属性
页面布局
盒子模型
margin,padding
border
width,height
内容的宽度和高度。
块级元素与行内元素
块级元素
块级元素的特点如下:(1)一个块级元素占一行。
(2)块级元素的默认高度由内容决定,除非自定义高度。
(3)块级元素的默认宽度是父级元素的内容区宽度,除非自定义宽度(4)块级元素的宽度、高度、外边距及内边距都可以自定义设置:
(5)块级元素可以容纳块级元素和行内元素。
<view/>组件默认为块级元素,使用<view/>组件演示盒子模型及块级元素的示例代码如下:
(2)块级元素的默认高度由内容决定,除非自定义高度。
(3)块级元素的默认宽度是父级元素的内容区宽度,除非自定义宽度(4)块级元素的宽度、高度、外边距及内边距都可以自定义设置:
(5)块级元素可以容纳块级元素和行内元素。
<view/>组件默认为块级元素,使用<view/>组件演示盒子模型及块级元素的示例代码如下:
行内元素
行内元素的特点如下:
(1)行内元素不能被设置高度和宽度,其高度和宽度由内容决定。
(2)行内元素内不能放置块级元素,只级容纳文本或其他行内元素
(3)同一块内,行内元素和其他行内元素显示在同一行。
<text/>组件默认为行内元素,使用<view/>及<text>组件演示盒子模型及行内元素的示例代码如下:
(1)行内元素不能被设置高度和宽度,其高度和宽度由内容决定。
(2)行内元素内不能放置块级元素,只级容纳文本或其他行内元素
(3)同一块内,行内元素和其他行内元素显示在同一行。
<text/>组件默认为行内元素,使用<view/>及<text>组件演示盒子模型及行内元素的示例代码如下:
行内块元素
行内块元素
可以被设置高度、宽度、内边距和外边距。示例代码如下:
可以被设置高度、宽度、内边距和外边距。示例代码如下:
浮动与定位
元素浮动与清除
float:none|left|right
其中,none--默认值,表示元素不浮动:
lef--元素向左浮动;
night--元素向右浮动。
在下面的示例代码中,分别对box1、box2、box3元素左浮动:
lef--元素向左浮动;
night--元素向右浮动。
在下面的示例代码中,分别对box1、box2、box3元素左浮动:
clear:left|right|both|none
lef--清除左边浮动的影响,也就是不允许左侧有浮动元素;
nght--清除右边浮动的影响,也就是不允许右侧有浮动元素;
both--同时清除左右两侧浮动的影响;
none--不清除浮动。
nght--清除右边浮动的影响,也就是不允许右侧有浮动元素;
both--同时清除左右两侧浮动的影响;
none--不清除浮动。
元素定位
static
默认值,该元素按照标准流进行布局;
relative
相对定位,相对于它在原文档流的位置进行定位,它后面的盒子仍以标准流方式对待它;
absolute
绝对定位,相对于其上一个已经定位的父元素进行定位,绝对定位的盒子从标准流中脱离,它对其后的兄弟盒子的定位没有影响;
fixed
固定定位,相对于浏览器窗口进行定位。
flex布局
容器
display
display用来指定元素是否为flex 布局, 语法格式为:
flex———块级flex布局, 该元素变为弹性盒子;
inline-flex———行内flex 布局, 行内容器符合行内元素的特征, 同时在容器内又符合flex 布局规范。
设置了flex布局之后, 子元素的float、clear 和vertical-align属性将失效。
inline-flex———行内flex 布局, 行内容器符合行内元素的特征, 同时在容器内又符合flex 布局规范。
设置了flex布局之后, 子元素的float、clear 和vertical-align属性将失效。
flex-direction
用于设置主轴的方向, 即项目排列的方向, 语法格式为:
row———主轴为水平方向, 起点在左端, 当元素设置为 flex布局时, 主轴默认为row;
row-reverse———主轴为水平方向, 起点在右端;
column———主轴为垂直方向, 起点在顶端;
column-reverse———主轴为垂直方向, 起点在底端
row-reverse———主轴为水平方向, 起点在右端;
column———主轴为垂直方向, 起点在顶端;
column-reverse———主轴为垂直方向, 起点在底端
flex-wrap
用来指定项目在一根轴线的排列位置不够时,项目是否换行,其语法格式为:
flex-flow
flex-flow是flex-direction 和flex-wrap 的简写形式, 默认值为rownowrap。 语法格式如下:
justify-content
justify-content 用于定义项目在主轴上的对齐方式。 语法格式如下:
justify-content———与主轴方向有关, 默认主轴水平对齐, 方向从左到右;
flex-start———左对齐, 默认值;
flex-end———右对齐;
center———居中;
space-between———两端对齐, 项目之间的间隔都相等;
space-around———每个项目两侧的间隔相等。
flex-start———左对齐, 默认值;
flex-end———右对齐;
center———居中;
space-between———两端对齐, 项目之间的间隔都相等;
space-around———每个项目两侧的间隔相等。
align-items
align-items用于指定项目在交叉轴上的对齐方式, 语法格式如下:
align-items———与交叉轴方向有关, 默认交叉由上到下;
flex-start———交叉轴起点对齐;
flex-end———交叉轴终点对齐;
center———交叉轴中线对齐;
baseline———项目根据它们第一行文字的基线对齐;
stretch———如果项目未设置高度或设置为auto, 项目将在交叉轴方向拉伸填充容器, 此为默认值。
flex-start———交叉轴起点对齐;
flex-end———交叉轴终点对齐;
center———交叉轴中线对齐;
baseline———项目根据它们第一行文字的基线对齐;
stretch———如果项目未设置高度或设置为auto, 项目将在交叉轴方向拉伸填充容器, 此为默认值。
align-content
align-content 用来定义项目有多根轴线(出现换行后) 在交叉轴上的对齐方式, 如果只有一根轴线, 该属性不起作用。 语法格式如下:
apace-between——与交叉轴两端对齐, 轴线之间的间隔平均分布;
space-around——每根轴线两侧的间隔都相等, 轴线之间的间隔比轴线与边框间隔大一倍。 其余各属性值的含义与align-items属性的含义相同。
space-around——每根轴线两侧的间隔都相等, 轴线之间的间隔比轴线与边框间隔大一倍。 其余各属性值的含义与align-items属性的含义相同。
项目
order
order属性定义项目的排列顺序, 数值越小, 排列越靠前, 默认值为0。 语法格式如下:
flex-grow
定义项目的放大比例, 默认值为0, 即不放大。 语法格式如下:
flex-shrink
用来定义项目的缩小比例, 默认值为1, 如果空间不足, 该项目将被缩小。语法格式如下:
flex-basis
属性用来定义伸缩项目的基准值, 剩余的空间将按比例进行缩放, 它的默认值为auto (即项目的本来大小)。 语法格式如下:
flex
属性是flex-grow、flex-shrink 和flex-basis 的简写, 其默认值分别为0、1、auto。语法格式如下:
align-self
属性用来指定单独的伸缩项目在交叉轴上的对齐方式。 该属性会重写默认的对齐方式。 语法格式如下:
页面组件
容器视图组件
view
view组件是块级组件,没有特殊功能, 主要用于布局展示,相当于HTML中的div,是布局中最基本的用户界面(UserInterface,I JI)组件,通过设置view 的CSS属性可以实现各种复杂的布局。
在index.wxml中写入代码:
运行结果
scroll-view
通过设置scroll-view组件的相关属性可以实现滚动视图的功能,
在index.wxml中写入代码:
在index.wxss中写入代码:
在index.js中写入代码:
swiper
概念:swiper组件可以实现轮播图、图片预览、滑动页面等效果。一个完整的swiper组件由<swiper/ >和<swiper-item/ >两个标签组成,它们不能单独使用。<swiper/ >中只能放置一个或多个<swiper-item/ >,若放置其他组件则会被删除;<swiper-item/ >内部可以放置任何组件,默认宽高自动设置为100%。
基础内容组件
icon
icon组件即图标组件,通常用于表示一种状态,如success、info、warn、waiting、cancel等。
text
概念:text组件用于展示内容,类似HTML中的<span >, text组件中的内容支持长按选中,支持转义字符“\”,属于行内元素。
progress
progress组件用于显示进度状态,如资源加载、用户资料完成度、媒体资源播放进度等。progress组件属于块级元素
表单组件
button
button 组件用来实现用户和应用之间的交互,同时按钮的颜色起引导作用。一般来说在一个程序中一个按钮至少有3种状态:默认点击(default)、建议点击(primary)、谨慎点击(wam)。在构建项目时,应在合适的场景使用合适的按钮,当<buton>被<form/>包裹时,可以通过设置form-type属性来触发表单对应的事件
radio
概念:单选框用来从一组选项中选取一个选项。在小程序中,单选框由<radio-group/ >(单项选择器)和<radio/ >(单选项目)两个组件组合而成,一个包含多个 <radio/ >的<radio-group/ >表示一组单选项,在同一组单选项中<radio/ >是互斥的,当一个按钮被选中后,之前选中的按钮就变为非选。
checkbox
概念:复选框用于从一组选项中选取多个选项,小程序中复选框由 <checkbox -group/ >(多项选择器)和<checkbox/ >(多选项目)两个组件组合而成。一个<checkbox-group/ >表示一组选项,可以在一组选项中选中多个选项
switch
switch组件的作用类似开关选择器
slider
概念:slider组件为滑动选择器,可以通过滑动来设置相应的值
picker
概念:picker组件为滚动选择器,当用户点击picker组件时,系统从底部弹出选择器供用户选择。picker组件目前支持5种选择器,分别是:selector(普通选择器)、multiSelector(多列选择器)、time(时间选择器)、date(日期选择器)、region(省市选择器)。
picker-view
概念:picker-view组件为嵌入页面的滚动选择器。相对于picker组件,picker-view组件的列的个数和列的内容由用户通过<picker-view-column/ >自定义设置。
input
input组件为输入框,用户可以输入相应的信息
textarea
textarea组件为多行输入框组件,可以实现多行内容的输入。
label
概念:label组件为标签组件,用于提升表单组件的可用性。label组件支持使用for属性找到对应的id,或者将控件放在该标签下,当点击label组件时,就会触发对应的控件。for属性的优先级高于内部控件,内部有多个控件的时候默认触发第一个控件。
目前,label组件可以绑定的控件有<button/ >、<checkbox/ >、<radio/>、<switch/ >。
目前,label组件可以绑定的控件有<button/ >、<checkbox/ >、<radio/>、<switch/ >。
form
概念:form组件为表单组件,用来实现将组件内的用户输入信息进行提交。当<form/ >表单中formType为submit的<button/ >组件时,会将表单组件中的value值进行提交。
多媒体组件
image
image组件为图像组件,与HTML中的 <img/ >类似,系统默认image组件的宽度为300 px、高度为2250 px, image组件的属性如表4-21所示。
audio
audio组件用来实现音乐播放.暂停等,其属性如表4-22所示。
video
video组件用来实现视频的播放、暂停等。视频的默认宽度为300 px,高度为225 px, video组件的属性如表4-23所示。
camera
camera组件为系统相机组件,可以实现拍照或录像功能。在一个页面中,只能有一个camera组件。在开发工具中运行时,使用电脑摄像头实现拍照或录像;在手机中运行时,使用手机前后摄像头实现拍照或录像。
其他组件
map
概念:map组件用于在页面中显示地图或路径,常用于LBS(基于位置服务)或路径指引,功能相对百度地图、高德地图较简单,目前具备绘制图标、路线、半径等能力,不能在croll-view、swiper、picker-view、movable-view组件中使用。
canvas
canvas组件用来绘制图形,相当于一块无色透明的普通图布。canvas组件本身并没有绘图能力,仅仅是图形容器,通过绘图API实现绘图功能。在默认情况下,canvas组件的默认宽度为300 px,高度为225 px,同一页面中的canvas-id不能重复,否则会出错。canvas组件的属性如表4-28所示。
即速应用
优势
无须编程
行业模板多样
功能丰富,管理方便
应用组件
布局组件 双栏,面板,自由面板,顶部导航,底部导航,分割线,动态分类
基本组件 文本,图片,按钮,标题,轮播,分类,图片列表,图文集,视频
高级组件
动态列表,个人中心,动态表单,评论,计数
城市定位,悬浮窗
其他组件 音频,动态容器
后台管理
数据总览
分享设置
用户管理
应用数据
轮播管理
分类管理
商品管理
经营管理
营销工具
多商家管理
API应用
网络API
wx.request(Object)
wx.uploadFile(Object)
wx.downloadFile(Object)
多媒体API
图片API
录音API
音频播放控制API
音乐播放控制API
文件API
本地数据及缓存API
保存数据
获取数据
删除数据
清空数据
位置信息API
获取位置信息
选择位置信息
显示位置信息
设备相关API
获取系统信息
网络状态
拨打电话
扫描二维码
案例分析——秦岭山水
准备工作
创建数据文件
创建项目目录结构
首页
index.js
index.wxml
index.wxss
index.json
内容页
detail.js
detail.wxml
detail.wxss
detail.json
详情页
detail-all.js
detail-all.wxml
detail-all.wxss
detail-all.json
预约页
booking.js
booking.wxml
booking.wxss
booking.json
小程序后端开发
比目后端云简介
注册Bmob账号
创建应用
配置小程序密钥
获取服务器域名及在小程序中配置
数据的增,删,改,查
创建表及字段
添加一条记录
获取一条记录
修改一条记录
删除一条记录
查询所有数据
条件查询
分页查询
上传图片
上传一张图片并显示
上传多张图片并显示
简单留言板
需求分析
视图层设计
数据库设计
代码实现
小程序运营
线上运营推广方式
附近的小程序入口
通过关键词推广
通过公众号关联方式推广
通过好友分享,社群和朋友圈推广
线下运营推广方式
通过特定场景做线下推广
通过已有的门店做线下推广
通过地面推广的方式做线下推广
第三方推广
小程序商店,公众号
新媒体软文
运营公司推广
小程序营销优势
转化率高
数据准确
门槛更低
合理裂变
小程序运营案例
收藏
0 条评论
下一页