精华内容
下载资源
问答
  • 微信小程序开发教程2.zip
  • 微信小程序开发教程

    2017-10-16 19:02:38
    腾讯微信架构师撰写,小程序巧应用,实现创业大梦想。内容系统全面,包括流程、技巧、案例,可帮助你简单高效地搭建具有原生App体验的小程序
  • 微信小程序开发教程-随着智能手机的极大普及,微信程序为开发人员提供了更广阔的开发平台。
  • 微信小程序开发教程.zip 1.获取AppID 2.绑定开发者 3.开发者工具(IDE) 4.创建项目 5.IDE 6.编程
  •  勾选“在当前目录中创建quick start项目”后,点击“添加项目”按钮,即已成功创建了我们第一个微信小程序项目——Hello WXapplet。   开发者工具操作与使用  (此图片来源于网络,如有侵权,请联系删除! )  ...
  • 微信小程序开发视频教程全套

    千次下载 热门讨论 2017-12-14 12:57:52
    微信小程序(wei xin xiao cheng xu),简称小程序,缩写XCX,英文名Mini Program,是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下即可打开应用。 全面开放申请后,主体...
  • 微信小程序开发教程cms 仅用于学习交流,不能用于商业用途
  • 微信小程序全栈开发,从开发新闻小程序...本教程将和大家从零开始一步一步搭建微信小程序新闻系统,每个章节都会涉及到不同的知识点,等教程学习完你不但掌握了小程序开发全部知识,同时还拥有一个完整作品的开发经验!
  • 微信小程序开发教程手册文档

    万次阅读 多人点赞 2018-06-28 14:25:48
    微信小程序开发教程文档微信小程序是什么?微信小程序如何开发?微信小程序开发教程有哪些?本教程将从微信小程序本身,结合微信官方-微信小程序开发工具,带你一步步创建一个微信小程序,并在手机操作预览该小程序...

    微信小程序开发教程文档

    微信小程序是什么微信小程序如何开发微信小程序开发教程有哪些本教程将从微信小程序本身,结合微信官方-微信小程序开发工具,带你一步步创建一个微信小程序,并在手机操作预览该小程序实际效果。这个小程序的首页将会显示欢迎语以及当前用户的微信头像,点击头像,可以在新开的页面中查看当前小程序的启动日志下载源码

    步骤1. 获取微信小程序的 AppID

    登录 https://mp.weixin.qq.com ,就可以在网站的“设置”-“开发者设置”中,查看到微信小程序的 AppID 了,注意不可直接使用服务号或订阅号的 AppID 。

    微信小程序设置

    注意:如果我们不是用注册时绑定的管理员微信号,在手机上体验该小程序,那么我们还需要操作“绑定开发者”。即在“用户身份”-“开发者”模块,绑定上需要体验该小程序的微信号。本教程默认注册帐号、体验都是使用管理员微信号。


    步骤2. 创建项目

    我们需要通过开发者工具,来完成小程序创建和代码编辑。

    开发者工具安装完成后,打开并使用微信扫码登录。选择创建“项目”,填入上文获取到的 AppID ,设置一个本地项目的名称(非小程序名称),比如“我的第一个项目”,并选择一个本地的文件夹作为代码存储的目录,点击“新建项目”就可以了。

    为方便初学者了解微信小程序的基本代码结构,在创建过程中,如果选择的本地文件夹是个空文件夹,开发者工具会提示,是否需要创建一个 quick start 项目。选择“是”,开发者工具会帮助我们在开发目录里生成一个简单的 demo。

    小程序组件

    项目创建成功后,我们就可以点击该项目,进入并看到完整的开发者工具界面,点击左侧导航,在“编辑”里可以查看和编辑我们的代码,在“调试”里可以测试代码并模拟小程序在微信客户端效果,在“项目”里可以发送到手机里预览实际效果。


    步骤3. 编写代码

    创建小程序实例

    点击微信小程序开发者工具左侧导航的“编辑”,我们可以看到这个项目,已经初始化并包含了一些简单的代码文件。在微信小程序的代码文件中,app.js、app.json、app.wxss 这三个文件是必不可少的,一般默认生成。其中,.js后缀的是脚本文件,.json后缀的文件是配置文件,.wxss后缀的是样式表文件。微信小程序会读取这些文件,并生成小程序实例

    下面我们简单了解这三个文件的功能,方便修改以及从头开发自己的微信小程序。

    app.js是小程序的脚本代码。我们可以在这个文件中监听并处理小程序的生命周期函数、声明全局变量。调用框架提供的丰富的 API,如本例的同步存储及同步读取本地数据。想了解更多可用 API,可参考 API 文档

    //app.js
    App({
      onLaunch: function () {
        //调用API从本地缓存中获取数据
        var logs = wx.getStorageSync('logs') || []
        logs.unshift(Date.now())
        wx.setStorageSync('logs', logs)
      },
      getUserInfo:function(cb){
        var that = this;
        if(this.globalData.userInfo){
          typeof cb == "function" && cb(this.globalData.userInfo)
        }else{
          //调用登录接口
          wx.login({
            success: function () {
              wx.getUserInfo({
                success: function (res) {
                  that.globalData.userInfo = res.userInfo;
                  typeof cb == "function" && cb(that.globalData.userInfo)
                }
              })
            }
          });
        }
      },
      globalData:{
        userInfo:null
      }
    })

    app.json 是对整个微信小程序的全局配置。我们可以在这个文件中配置小程序是由哪些页面组成,配置小程序的窗口背景色,配置导航条样式,配置默认标题。注意该文件不可添加任何注释。更多可配置项可参考配置详解

    {
      "pages":[
        "pages/index/index",
        "pages/logs/logs"
      ],
      "window":{
        "backgroundTextStyle":"light",
        "navigationBarBackgroundColor": "#fff",
        "navigationBarTitleText": "WeChat",
        "navigationBarTextStyle":"black"
      }
    }

    app.wxss 是整个微信小程序的公共样式表。我们可以在页面组件的 class 属性上直接使用 app.wxss 中声明的样式规则。

    /**app.wxss**/
    .container {
      height: 100%;
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: space-between;
      padding: 200rpx 0;
      box-sizing: border-box;
    }

    创建页面

    在这个教程里,我们的微信小程序有两个页面,index 页面和 logs 页面,即欢迎页和微信小程序启动日志的展示页,他们都在 pages 目录下。微信小程序中的每一个页面的【路径+页面名】都需要写在 app.json 的 pages 中,且 pages 中的第一个页面是小程序的首页。

    每一个小程序页面是由同路径下同名的四个不同后缀文件的组成,如:index.js、index.wxml、index.wxss、index.json。.js后缀的文件是脚本文件,.json后缀的文件是配置文件,.wxss后缀的是样式表文件,.wxml后缀的文件是页面结构文件。

    index.wxml 是页面的结构文件:

    <!--index.wxml-->
    <view class="container">
      <view bindtap="bindViewTap" class="userinfo">
        <image class="userinfo-avatar" src="{{userInfo.avatarUrl}}" background-size="cover"></image>
        <text class="userinfo-nickname">{{userInfo.nickName}}</text>
      </view>
      <view class="usermotto">
        <text class="user-motto">{{motto}}</text>
      </view>
    </view>

    本例中使用了<view/><image/><text/>来搭建页面结构,绑定数据和交互处理函数。

    index.js 是页面的脚本文件,在这个文件中我们可以监听并处理页面的生命周期函数、获取小程序实例,声明并处理数据,响应页面交互事件等。

    //index.js
    //获取应用实例
    var app = getApp()
    Page({
      data: {
        motto: 'Hello World',
        userInfo: {}
      },
      //事件处理函数
      bindViewTap: function() {
        wx.navigateTo({
          url: '../logs/logs'
        })
      },
      onLoad: function () {
        console.log('onLoad')
        var that = this
        //调用应用实例的方法获取全局数据
        app.getUserInfo(function(userInfo){
          //更新数据
          that.setData({
            userInfo:userInfo
          })
        })
      }
    })

    index.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;
    }

    微信小程序页面的样式表是非必要的。当有页面样式表时,页面的样式表中的样式规则会层叠覆盖 app.wxss 中的样式规则。如果不指定页面的样式表,也可以在页面的结构文件中直接使用 app.wxss 中指定的样式规则。

    index.json 是页面的配置文件:

    微信小程序页面的配置文件是非必要的。当有页面的配置文件时,配置项在该页面会覆盖 app.json 的 window 中相同的配置项。如果没有指定的页面配置文件,则在该页面直接使用 app.json 中的默认配置。

    logs 的页面结构

    <!--logs.wxml-->
    <view class="container log-list">
      <block wx:for="{{logs}}" wx:for-item="log">
        <text class="log-item">{{index + 1}}. {{log}}</text>
      </block>
    </view>

    logs 页面使用 <block/> 控制标签来组织代码,在 <block/> 上使用 wx:for 绑定 logs 数据,并将 logs 数据循环展开节点。

    //logs.js
    var util = require('../../utils/util.js')
    Page({
      data: {
        logs: []
      },
      onLoad: function () {
        this.setData({
          logs: (wx.getStorageSync('logs') || []).map(function (log) {
            return util.formatTime(new Date(log))
          })
        })
      }
    })

    该微信小程序测试的运行结果如下:

    小程序 运行结果


    步骤4. 手机预览

    微信小程序开发者工具左侧菜单栏选择"项目",点击"预览",扫码后即可在微信客户端中体验。

    微信小程序预览

    展开全文
  • 本文档将带你一步步创建完成一个微信小程序,并可以在手机上体验该小程序的实际效果。这个小程序的首页将会显示欢迎语以及当前用户的微信头像,点击头像,可以在新开的页面中查看当前小程序的启动日志。     1. ...
  • 最新版微信小程序开发教程视频,内容不错,讲课方式清晰流畅。
  • 微信小程序开发图解案例教程,很不错的微信小程序开发书籍,如果觉得不错,请支持正版
  • 这次带大家一起开发一个功能完整的微信小程序,希望能对大家有一些参考价值。 这次咱们一起开发一个天气预报小程序,之所以选这个类型,有两个原因。 一是天气类的小程序整体复杂度比较低,适合我们说明问题。 另外...
  • 首先找到我们的index.js文件,然后看看微信小程序的网络请求文档很轻松的就可以找到我们的示例代码: wx.request({ url: 'test.php', data: { x: '' , y: '' }, header: { 'Content-Type': 'application/json...
  • 微信小程序开发PDF版

    2020-09-28 21:13:52
    微信小程序开发相关流程PDF版本, 微信小程序开发相关流程PDF版本, 微信小程序开发相关流程PDF版本。
  • 你可以根据自己的开发习惯选择自己喜欢的编辑器。 (此图片来源于网络,如有侵权,请联系删除! )  2. 接下来,你需要根据自己的项目内容调整项目结构。在范例项目中,“card_course”目录下面主要包含了“tabBar”...
  • 微信小程序开发教程】新闻列表之新闻列表绑定,含有源码与教程。 教程地址:http://www.xiaochengxupro.com/news/798.html
  • 前俩章中我们学会了怎么搭建一个微信小程序的框架以及显示一个文章列表,这篇文章我将讲解列表的网络请求以及网络数据的对接。 首先找到我们的index.js文件,然后看看微信小程序的网络请求文档很轻松的就可以找到...
  • 下面展示如何基于微信小程序实现手机解锁。最终实现效果如下图: 整个功能基于canvas实现,首先添加画布组件,并设定样式 <!--index.wxml--> bindtouchmove=onTouchMove bindtouchend=onTouchEnd> </...
  • 此视频为我在我的微信小程序开发社区 WXOPEN Club 出品的免费视频教程,从小程序基本概念、组件到实际项目开发进行了详细地讲解。 此源代码为视频 DevOpenClub 出品的免费视频教程配套源代码。 视频版权为 所有。 :...
  • 全网最详细的微信小程序开发教程

    千次阅读 多人点赞 2019-12-19 17:31:38
    微信小程序是以微信为运行环境的一种应用,其实质是 Hybrid 技术的应用,Hybrid App 即混合模式移动应用,因此与 H5 类似,但又比 H5 拥有很多原生的能力,例如调用位置信息和摄像头等。小程序的开发方式与 H5 十分...

          前几天学习了react这个开发框架,了解了JS语言的基本知识。想到最近3年小程序如火如荼的发展,进而决定入坑学习。

    微信小程序简介

           微信小程序是以微信为运行环境的一种应用,其实质是 Hybrid 技术的应用,Hybrid App 即混合模式移动应用,因此与 H5 类似,但又比 H5 拥有很多原生的能力,例如调用位置信息和摄像头等。小程序的开发方式与 H5 十分相似,用的也是 JavaScriptHTMLCSS 语言。

     

    微信小程序开发入门

    1. 申请小程序账号

           申请小程序账号需要一个未申请过公众号和小程序账号的邮箱,然后在小程序介绍页的底部点击 「前往注册」 按钮,前往注册页根据指引填写信息。

     

    填完信息,点击「注册」会提示去注册的邮箱激活账号,去邮箱激活即可。

    2. 安装开发者工具

    微信开发者工具可以帮助开发者简单和高效地开发和调试微信小程序,集成了公众号网页调试和小程序调试两种开发模式。它可以实时查看页面和功能效果,还能在开发者工具中进行 Debug。它使用 NW.js (previously known as node-webkit) 编写,在调试时和 Chrome 几乎无差别,很容易上手。

    前往开发者工具下载页面 ,根据自己的操作系统下载对应的安装包进行安装。

    打开微信开发者工具,用微信扫码登录开发者工具,确认后会进入选择「小程序项目」或「公众号网友项目」的界面,这里我们选择「小程序项目」,出现如下界面:

    点击新建,出现一个示例项目的预览,点击顶部菜单「编译」就可以在微信开发者工具中预览你的第一个小程序。

    3. 代码构成 

            我们生成的项目的目录如下:

    ├── pages                  页面目录
    |   ├── index              首页
    |   |   ├── index.js       首页js
    |   |   ├── index.wxss     首页样式文件
    |   |   └── index.wxml     首页模板文件
    ├── utils                  工具函数
    |   ├── utils.js
    ├── app.js                 app入口文件
    ├── app.json               app配置文件
    ├── app.wxss               app样式文件
    └── project.config.json    项目配置文件

    如上面的目录,一个小程序必须要有一个 app.js 入口文件,app.json 配置文件。除此之外,还有一个叫 project.config.json 的工具配置文件,是方便你在不同的电脑上开发时,开发者工具能拥有相同的设置。

    每个页面上,同样会有 page.jsonpage.jspage.wxmlpage.wxss 这四种文件。分别是页面配置,页面逻辑,页面模板和页面样式文件。除去页面配置文件 page.json, 后三者和我们 HTML 、 JavaScript 、 CSS 三剑客十分相像,只不过换了个后缀而已。

    WXML 模板文件里面,提供了数据绑定列表渲染条件渲染模板事件引用等功能。

    WXSS 样式文件和 CSS 别无大异,能支持绝大多数的 CSS 、 CSS3 的语法。除此之外,还支持样式引入,单位转换的功能,小程序在 WXSS 上做了一些扩充和修改,新增了 rpx 尺寸单位,不需要再人工地使用类似rem的适配方案来适配移动端的各种机型,给开发者提供了便利。

    4. 代码分析

    1. app.json

    这个文件是当前小程序的全局配置,包括了小程序的所有页面路径、界面表现、网络超时时间、底部 Tab 等。

    {
      "pages": [
        "pages/index/index",
        "pages/userConsole/userConsole",
        "pages/storageConsole/storageConsole",
        "pages/databaseGuide/databaseGuide",
        "pages/addFunction/addFunction",
        "pages/deployFunctions/deployFunctions",
        "pages/chooseLib/chooseLib",
        "pages/openapi/openapi",
        "pages/openapi/serverapi/serverapi",
        "pages/openapi/callback/callback",
        "pages/openapi/cloudid/cloudid",
        "pages/im/im",
        "pages/im/room/room"
      ],
      "window": {
        "backgroundColor": "#F6F6F6",
        "backgroundTextStyle": "light",
        "navigationBarBackgroundColor": "#F6F6F6",
        "navigationBarTitleText": "云开发 QuickStart",
        "navigationBarTextStyle": "black"
      },
      "sitemapLocation": "sitemap.json",
      "style": "v2"
    }

     所有的页面都需要在app.jsonpages里面增加入口,这样才能让页面被加载

     

     2. index.js

    //index.js
    const app = getApp()
    
    Page({
      data: {
        avatarUrl: './user-unlogin.png',
        userInfo: {},
        logged: false,
        takeSession: false,
        requestResult: ''
      },
    
      onLoad: function() {
        if (!wx.cloud) {
          wx.redirectTo({
            url: '../chooseLib/chooseLib',
          })
          return
        }
    
        // 获取用户信息
        wx.getSetting({
          success: res => {
            if (res.authSetting['scope.userInfo']) {
              // 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框
              wx.getUserInfo({
                success: res => {
                  this.setData({
                    avatarUrl: res.userInfo.avatarUrl,
                    userInfo: res.userInfo
                  })
                }
              })
            }
          }
        })
      },
    
      onGetUserInfo: function(e) {
        if (!this.data.logged && e.detail.userInfo) {
          this.setData({
            logged: true,
            avatarUrl: e.detail.userInfo.avatarUrl,
            userInfo: e.detail.userInfo
          })
        }
      },
    
      onGetOpenid: function() {
        // 调用云函数
        wx.cloud.callFunction({
          name: 'login',
          data: {},
          success: res => {
            console.log('[云函数] [login] user openid: ', res.result.openid)
            app.globalData.openid = res.result.openid
            wx.navigateTo({
              url: '../userConsole/userConsole',
            })
          },
          fail: err => {
            console.error('[云函数] [login] 调用失败', err)
            wx.navigateTo({
              url: '../deployFunctions/deployFunctions',
            })
          }
        })
      },
    
      // 上传图片
      doUpload: function () {
        // 选择图片
        wx.chooseImage({
          count: 1,
          sizeType: ['compressed'],
          sourceType: ['album', 'camera'],
          success: function (res) {
    
            wx.showLoading({
              title: '上传中',
            })
    
            const filePath = res.tempFilePaths[0]
            
            // 上传图片
            const cloudPath = 'my-image' + filePath.match(/\.[^.]+?$/)[0]
            wx.cloud.uploadFile({
              cloudPath,
              filePath,
              success: res => {
                console.log('[上传文件] 成功:', res)
    
                app.globalData.fileID = res.fileID
                app.globalData.cloudPath = cloudPath
                app.globalData.imagePath = filePath
                
                wx.navigateTo({
                  url: '../storageConsole/storageConsole'
                })
              },
              fail: e => {
                console.error('[上传文件] 失败:', e)
                wx.showToast({
                  icon: 'none',
                  title: '上传失败',
                })
              },
              complete: () => {
                wx.hideLoading()
              }
            })
    
          },
          fail: e => {
            console.error(e)
          }
        })
      },
    
    })
    

    可以见到,页面中有一个 Page 包裹着一个对象,页面的 data、一些生命周期、一些方法,都挂载在该对象上。而小程序正是通过这样的方式进行初始化的。 也就是说,当我们初始化的时候,要将初始状态写在这个文件中。

     3. index.wxml

    <!--index.wxml-->
    <view class="container">
    
      <!-- 用户 openid -->
      <view class="userinfo">
        <button 
          open-type="getUserInfo" 
          bindgetuserinfo="onGetUserInfo"
          class="userinfo-avatar"
          style="background-image: url({{avatarUrl}})"
          size="default"
        ></button>
        <view class="userinfo-nickname-wrapper">
          <button class="userinfo-nickname" bindtap="onGetOpenid">点击获取 openid</button>
        </view>
      </view>
    
    
      <!-- 上传图片 -->
      <view class="uploader">
        <view class="uploader-text" bindtap="doUpload">
          <text>上传图片</text>
        </view>
        <view class="uploader-container" wx:if="{{imgUrl}}">
          <image class="uploader-image" src="{{imgUrl}}" mode="aspectFit" bindtap="previewImg"></image>
        </view>
      </view>
    
    
      <!-- 操作数据库 -->
      <view class="uploader">
        <navigator url="../databaseGuide/databaseGuide" open-type="navigate" class="uploader-text">
          <text>前端操作数据库</text>
        </navigator>
      </view>
    
      <!-- 即时通信 -->
      <view class="uploader">
        <navigator url="../im/im" open-type="navigate" class="uploader-text">
          <text>即时通信 Demo</text>
        </navigator>
      </view>
    
      <!-- 新建云函数 -->
      <view class="uploader">
        <navigator url="../addFunction/addFunction" open-type="navigate" class="uploader-text">
          <text>快速新建云函数</text>
        </navigator>
      </view>
    
      <!-- 云调用 -->
      <view class="uploader">
        <navigator url="../openapi/openapi" open-type="navigate" class="uploader-text">
          <text>云调用</text>
        </navigator>
      </view>
    
    </view>
    

     作为一名移动端开发出生的工程师,这个就很熟悉了,本质就是页面的布局渲染。WXML 模板中,渲染了一些在 index.js 里定义的页面变量,绑定了多个事件。

    4. index.wxss

           这个是微信独有的一个文件,个人理解为style,规定一些空间的大小,颜色,风格等标准。值得一提的是微信小程序封装了一个新单位rpx!改单位可以适配自动适配多个机型,作为移动端开发出身的我,曾经被适配机型整的无语,给满分!

    /**index.wxss**/
    
    page {
      background: #f6f6f6;
      display: flex;
      flex-direction: column;
      justify-content: flex-start;
    }
    
    .userinfo, .uploader, .tunnel {
      margin-top: 40rpx;
      height: 140rpx;
      width: 100%;
      background: #fff;
      border: 1px solid rgba(0, 0, 0, 0.1);
      border-left: none;
      border-right: none;
      display: flex;
      flex-direction: row;
      align-items: center;
      transition: all 300ms ease;
    }
    
    .userinfo {
      padding-left: 120rpx;
    }
    
    .userinfo-avatar {
      width: 100rpx;
      height: 100rpx;
      margin: 20rpx;
      border-radius: 50%;
      background-size: cover;
      background-color: white;
    }
    
    .userinfo-avatar[size] {
      width: 100rpx;
    }
    
    
    .userinfo-avatar:after {
      border: none;
    }
    
    .userinfo-nickname {
      font-size: 32rpx;
      color: #007aff;
      background-color: white;
      background-size: cover;
      text-align: left;
      padding-left: 0;
      margin-left: 10px;
    }
    
    .userinfo-nickname::after {
      border: none;
    }
    
    .userinfo-nickname-wrapper {
      flex: 1;
    }
    
    .uploader, .tunnel {
      height: auto;
      padding: 0 0 0 40rpx;
      flex-direction: column;
      align-items: flex-start;
      box-sizing: border-box;
    }
    
    .uploader-text, .tunnel-text {
      width: 100%;
      line-height: 52px;
      font-size: 34rpx;
      color: #007aff;
    }
    
    .uploader-container {
      width: 100%;
      height: 400rpx;
      padding: 20rpx 20rpx 20rpx 0;
      display: flex;
      align-content: center;
      justify-content: center;
      box-sizing: border-box;
      border-top: 1px solid rgba(0, 0, 0, 0.1);
    }
    
    .uploader-image {
      width: 100%;
      height: 360rpx;
    }
    
    .tunnel {
      padding: 0 0 0 40rpx;
    }
    
    .tunnel-text {
      position: relative;
      color: #222;
      display: flex;
      flex-direction: row;
      align-content: center;
      justify-content: space-between;
      box-sizing: border-box;
      border-top: 1px solid rgba(0, 0, 0, 0.1);
    }
    
    .tunnel-text:first-child {
      border-top: none;
    }
    
    .tunnel-switch {
      position: absolute;
      right: 20rpx;
      top: -2rpx;
    }
    
    .disable {
      color: #888;
    }
    
    .service {
      position: fixed;
      right: 40rpx;
      bottom: 40rpx;
      width: 140rpx;
      height: 140rpx;
      border-radius: 50%;
      background: linear-gradient(#007aff, #0063ce);
      box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3);
      display: flex;
      align-content: center;
      justify-content: center;
      transition: all 300ms ease;
    }
    
    .service-button {
      position: absolute;
      top: 40rpx;
    }
    
    .service:active {
      box-shadow: none;
    }
    
    .request-text {
      padding: 20rpx 0;
      font-size: 24rpx;
      line-height: 36rpx;
      word-break: break-all;
    }
    

    我的第一个小程序展示

     

     

     

     

     

     

    展开全文
  • 微信小程序 开发教程

    2018-05-08 13:06:12
    微信小程序 开发教程 微信小程序 开发教程 微信小程序 开发教程
  • Java页面静态化视频教程,使用Java进行微信小程序和服务器的交互
  • 《从零开始学微信小程序开发》共分3篇12章,第1篇介绍微信小程序的基础知识,包括微信小程序开发工具、微信小程序架构分析;第2篇介绍微信小程序的常用模块,通过一些小案例详细介绍了微信小程序提供的各种组件的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 33,756
精华内容 13,502
关键字:

微信小程序开发教程

微信小程序 订阅