提问

将想法与焦点和您一起共享
当前位置:首页  >  问答

微信小程序如何开发?

匿名 |浏览9489次
2018/09/04 09:14

如何开发微信上面的小程序功能 ?

全部回答(3)
  • 张树明

    微信小程序相比于微信公众号的开发,区别在于微信小程序只请求第三方的数据,整个界面的交互(view)还是在微信小程序上实现,而微信公众号的开发,是直接请求第三方的web界面。所以说微信小程序更轻量级,用来做一些餐饮店在线点单,小小的网上商城什么的,还是很方便的,不过有一个比较坑的地方是 微信小程序要求必须通过 HTTPS 完成与服务端通信,对于我这种只是来学习的人来说,还要购买SSL证书,然后搭建一个站点,也太麻烦了一点,那怎么办呢?其实,只要新建小程序的时候,不使用AppID来登录,就不会对https做校验了,当然,如果你要最终发布,还是需要搭建https的站点的,腾讯云or阿里云都可以申请免费的SSL证书。

     

    微信小程序官方文档:https://developers.weixin.qq.com/miniprogram/dev/

     

    我看了一下文档之后,按照文档申请了小程序的开发者账号,并下载了开发工具,批注:没有账号是登录不了工具的。

     

    看了一下官方文档,以及其他的一些资料之后,对微信小程序的开发有了一点肤浅的见解,那么:

     

    首先,你需要熟悉html,css,js等一些web前端的开发语言,如果你还熟悉angularjs,那就更好了。

     

    其次,你需要搭建一个http站点,用来作为服务端给微信小程序提供数据,我这里搭建的是一个web api的站点。

     

    另外补充说明一下,个人觉得与WPF很像,数据驱动UI,WPF中的xaml与微信小程序中的wxml,数据绑定,WPF中的DataTemplate与微信小程序中的自定义组件等。


    回答于 2018/09/05 10:10
  • 蔡振誉

    微信小程序如何开发呢?下面简单说一下基本的制作流程:

    1、当你准备开发一个微信小程序的时候,你首先需要一个小程序的 APPId ,在微信公众号官网可以获得。

    你还需要准备微信开发者工具,官网同样有下载,下载安装即可,支持windows,linux,和MAC平台。


    2、小程序使用的微信自己开发 MINA 框架,提供了视图层描述语言,WXML 和 WXSS 以及基于JavaScript的逻辑层框架,并在视图层与逻辑层间提供了数据传输和事件系统,可以让开发者可以方便的聚焦于数据与逻辑上。


    3、其中app.js、app.json、app.wxss 是必不可少的,是小程序生成的依赖文件。


    app.js 监听并控制这整个程序的生命周期,也是全局变量声明的地方。如下是 app.js 中的一段代码:



    4、上述代码中的一些 API 介绍:


    App : 注册一个小程序


    onLunch :程序加载时执行的方法


    getStorageSync:以同步的方式获取本地缓存


    setStorageSync:设置缓存


    wx.getUserInfo: 获取用户信息


    5、app.json 是对整个小程序的全局配置。不可注释。


    pages为注册页面的列表,均为相对路径,省去了后缀名,程序默认显示列表第一个。


    6、app.wxss 是整个小程序的公共样式表。


    其中:


     apx 是尺寸单位,可根据屏幕宽度自适应大小。与之对应的有rem:规定屏幕宽度为20rem;1rem = (750/20)rpx 。


    7、全局文件就这些,然后我们看 index  文件中的内容


    有三部分内容,index.js ,index.wxml ,index.wxss,下面介绍它们的作用。


    8、index.wxml 文件


    这是一个展示页面,作用于html相同。可以看出,内容分块均采用 view 标签,这也很容易让人想到Android 中的布局,但其实只是更多的是 div 标签的另一个版本,在这里面有很多 MINA 自定义的属性,而且在我们在其中也看到了{{ }}样式的值操作,这也很容易让人联想到 angularJS 中的数据双向绑定,在 MINA 中也是支持的。


    同时,页面的展示,均需要在小程序全局的json配置文件中配置,前面已有说明。



    9、index.js 文件

    其中:


    getApp() 获取应用实例


    Page : 声明页面。


    data: 定义数据


    bindViewTap :为在view中绑定的是tap事件定义操作方法。


    wx.navigateTo :导航到响应页面。


    onLoad : 定义页面加载时的事件。在这里使用了在全局 app.js 中定义的回调函数,将data中的数据更新,由于双向的绑定,页面中的 userInfo 实例也会更新,显示出您的头像和昵称。


    10、index.wxss 中同样定义了一些样式,写法思路与css文件基本一致,只是不需要再去关心屏幕适配问题。


    随后就是效果展示了,在开发者工具中扫码即可查看效果。


    回答于 2018/09/05 10:05
  • 阳美华

    微信小程序已经火了一段时间了,之前一直也在关注,就这半年的发展来看,相对原生APP大部分公司还是不愿意将主营业务放到微信平台上,以免受制于腾讯,不过就小程序的应用场景(用完即走和二维码分发等)还是很值得我们学习的,技术上面如果了解React的话,会发现他们在组件化上面有很多雷同之处。说白了,小程序就是基于微信平台的H5轻应用,微信将系统底层功能(设备、位置、媒体、文件等)和微信自身功能(登录、支付、分享等)封装成相应API供小程序调用。


    微信小程序如何开发呢?下面说一下基本流程:


    一、小程序基本概念


    1、开发工具:为了配合小程序开发,微信专门配备了自己的开发工具,自行选择对应版本安装。


    2、创建项目应用:安装完成后,打开并扫码登录。小程序发布需要企业级的认证公众号,所以个人订阅号是不能发布的。所以我这里选择无AppID,创建项目选择一个本地空文件夹,勾选创建quick start 项目生成一个demo。


    3、编写小程序:demo初始化并包含了一些简单的代码文件,其中app.js、app.json、app.wxss 这三个是必不可少的,小程序会读取这些文件初始化实例。


      app.js是小程序的初始化脚本,可以在这个文件中监听小程序的生命周期,申请全局变量和调用API等


      app.json是对小程序的全局配置,pages设置页面路径组成(默认第一条为首页),window设置默认页面的窗口表现等


      app.wxss 是整个小程序的公共样式表。类似网站开发中的common.css


    4、创建页面:在pages目录下,由一个文件夹中的四个同名不同类型文件组成。.js是脚本文件,.json是配置文件,.wxss是样式表文件,.wxml是页面结构文件,其中json和wxss文件为非必须(默认会继承app的json和wxss默认设置)。


    二、小程序的框架


    1、小程序的配置


      app.json主要分为五个部分:pages:页面组,window:框架样式(状态栏、导航条、标题、窗口背景色),tabBar:底部菜单,networkTimeout:网络超时设置,debug:开启debug模式


      page.json针对页面单独设置,层叠掉app.json的全局设置


    复制代码

    //app.json

    {

      "pages":[

        "pages/index/index",

        "pages/logs/logs"

      ],

      "window":{

        "backgroundTextStyle":"light",

        "navigationBarBackgroundColor": "#000",

        "navigationBarTitleText": "WeChat",

        "navigationBarTextStyle":"white"

      }

    }

    复制代码

     


    2、小程序的逻辑


      使用App()来注册一个小程序,必须在app.js中注册,且不能注册多个


    复制代码

    App({//如下为小程序的生命周期

      onLaunch: function() { },//监听初始化

      onShow: function() {  },//监听显示(进入前台)

      onHide: function() {  },//监听隐藏(进入后台:按home离开微信)

      onError: function(msg) {  },//监听错误

      //如下为自定义的全局方法和全局变量  

      globalFun:function(){},

      globalData: 'I am global data'

    })

    复制代码

      使用Page()注册一个页面,在每个页面的js文件中注册


    复制代码

    Page({

      data: {text: "This is page data."},//页面数据,用来维护视图,json格式

      onLoad: function(options) {  },//监听加载

      onReady: function() {  },//监听初次渲染完成

      onShow: function() {  },//监听显示

      onHide: function() {  },//监听隐藏

      onUnload: function() {  },//监听卸载

      onPullDownRefresh: function() {  },//监听下拉

      onReachBottom: function() {  },//监听上拉触底

      onShareAppMessage: function () {  },//监听右上角分享

      //如下为自定义的事件处理函数(视图中绑定的)

      viewTap: function() {//setData设置data值,同时将更新视图

        this.setData({text: 'Set some data for updating view.'})

      }

    })

    复制代码

      


    3、小程序的视图与事件绑定


      在每个页面中的wxml文件中,对页面js中data进行数据绑定,以及自定义事件绑定


    复制代码

    <!--{{}}绑定data中的指定数据并渲染到视图-->

    <view class="title">{{text}}</view>


    <!--wx:for获取数组数据进行循环渲染,item为数组的每项-->

    <view wx:for="{{array}}"> {{item}} </view>


    <!--wx:if条件渲染-->

    <view wx:if="{{view == 'WEBVIEW'}}"> WEBVIEW </view>

    <view wx:elif="{{view == 'APP'}}"> APP </view>

    <view wx:else="{{view == 'MINA'}}"> MINA </view>


    <!--模板-->

    <template name="staffName">

      <view>FirstName: {{firstName}}, LastName: {{lastName}}</view>

    </template>

    <template is="staffName" data="{{...template.staffA}}"></template>

    <template is="staffName" data="{{...template.staffB}}"></template>


    <!--bindtap指定tap事件处理函数为ViewTap-->

    <view bindtap="ViewTap"> 点我点我 </view>

    复制代码

     


    复制代码

    Page({

      data: {//data数据主要用于视图绑定

        text:"我是一条测试",

        array:[0,1,2,3,4],

        view:"APP",

        template:{

            staffA: {firstName: 'Hulk', lastName: 'Hu'},

            staffB: {firstName: 'Shang', lastName: 'You'}

        }

      },

      ViewTap:function(){console.log('额,点到我了了~')}//自定义事件,主要用于事件绑定

    })

    复制代码


    4、小程序的样式


      在每个页面中的wxss文件中,对wxml中的结构进行样式设置,等同于css,扩展了rpx单位。其中app.wxss默认为全局样式,作用所有页面。


    回答于 2018/09/05 09:36
网站留言背景

准备好开始了吗,
那就与我们取得联系吧


您希望我们为您提供什么服务呢

· · · · ·

您的预算