最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 微信小程序入门看这篇就够了

    正文概述 掘金(大雄pande)   2021-01-05   636

    小程序于普通网页开发的区别

    • 网页的渲染线程和脚本线程是互斥的,分别运行在不同的线程;
    • 小程序缺少DOM API和BOMAPI;
    • js 逻辑层运行在JSCore中,与Node环境也不相同;
    • 微信客户端给小程序提供宿主环境;

    小程序的渲染层逻辑层如下图:

    微信小程序入门看这篇就够了

    开发语言和工具

    WXML 展示层

    小程序的展示层;类似于HTML,但却有很大的不同;

    1、名字不一样,WXML 有自己的一套标签:view, button, text 等;还包装了地图,音频等组件功能,更多的产看微信小程序组件

    2、多了一些 wx:if 这样的属性以及 {{ }} 这样的表达式;类似于MVVM的开发模式(例如 React、Vue);例如数据绑定,列表渲染等;

    <!--wxml-->
    <view> {{message}} </view>
    
    // page.js
    Page({
      data: {
        message: 'Hello MINA!'
      }
    })
    
    WXSS 样式

    WXSS 具有 CSS 大部分的特性,小程序在 WXSS 也做了一些扩充和修改

    1、新增了尺寸单位 rpx,进行各种不同的屏幕的适配;

    2、提供了全局的样式和局部样式;app.wxss 全局样式文件;

    3、WXSS 仅支持部分 CSS 选择器;

    JS逻辑交互

    响应用户的点击、获取用户的位置等等,但要注意,此环境非Webview 也非Nodejs环境;

    例如:

    <view>{{ msg }}</view>
    <button bindtap="clickMe">点击我</button>
    
    Page({
      clickMe: function() {
        this.setData({ msg: "Hello World" })
      }
    })
    
    开发工具

    采用官方提供的微信小程序开发者工具,可以完成小程序的开发、调试、代码查看、预览、发布等功能。

    项目开发

    入口文件

    小程序主要包含以下三个入口文件:

    1、app.js 整个小程序的入口文件;主要做一些网络检测,用户信息获取等;其他页面中调用app.js 中的方法时,不需要require,活着import;

    2、app.json 可以对小程序进行全局配置,决定页面文件的路径,网络超时等;

    3、app.wxss 小程序的公共样式表;

    生命周期

    微信小程序和其他前端框架类似也是有生命周期;

    Page({
    /**
    * 页面的初始数据
    */
    data: {},
    /**
    * 生命周期函数--监听页面加载(像首页数据请求可以放在这里)
    */
    onLoad: function (options) {},
    /**
    * 生命周期函数--监听页面初次渲染完成
    */
    onReady: function () {},
    /**
    * 生命周期函数--监听页面显示
    */
    onShow: function () {},
    /**
    * 生命周期函数--监听页面隐藏
    */
    onHide: function () {},
    /**
    * 生命周期函数--监听页面卸载
    */
    onUnload: function () {},
    /**
    * 页面相关事件处理函数--监听用户下拉动作(这里添加了下拉刷新的功能)
    */
    onPullDownRefresh: function () {},
    /**
    * 页面上拉触底事件的处理函数
    */
    onReachBottom: function () {},
    /**
    * 用户点击右上角分享
    */
    onShareAppMessage: function () {}
    })
    
    网络请求

    小程序只可以跟指定的域名进行网络通信。所以域名需要在开发设置中进行配置。需要注意:

    • 域名只支持 https 协议;
    • 域名不能使用IP地址或者localhost(小程序局域网IP除外);
    • 域名必须经过ICP备案;

    当我们在开发环境中,调试时,可能本地没有https 域名,我们可以小程序开发环境中把,域名校验关掉

    接下来我们看一下如何发送一个网络请求:

    wx.request({
      url: 'test.php', //示例
      data: {
        x: '',
        y: ''
      },
      header: {
        'content-type': 'application/json' // 默认值
      },
      success (res) {
        console.log(res.data)
      }
    })
    
    页面间传值

    1、通过导航组件 navigator 跳转通过url 传参;

    <view class="btn-area">
      <navigator url="/page/navigate/navigate?title=navigate" hover-class="navigator-hover">跳转到新页面</navigator>
    </view>
    

    在新页面通过options 获取:

    Page({
      onLoad: function(options) {
        console.log(options.title);
      }
    })
    

    2、通过路由跳转:wx.navigateTo({});

    wx.navigateTo({
      url: 'test?id=1',
      events: {
        // 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据
        acceptDataFromOpenedPage: function(data) {
          console.log(data)
        },
        someEvent: function(data) {
          console.log(data)
        }
        ...
      },
      success: function(res) {
        // 通过eventChannel向被打开页面传送数据
        res.eventChannel.emit('acceptDataFromOpenerPage', { data: 'test' })
      }
    })
    
    // test.js
    Page({
      onLoad: function(option){
        console.log(option.query)
        const eventChannel = this.getOpenerEventChannel()
        eventChannel.emit('acceptDataFromOpenedPage', {data: 'test'});
        eventChannel.emit('someEvent', {data: 'test'});
        // 监听acceptDataFromOpenerPage事件,获取上一页面通过eventChannel传送到当前页面的数据
        eventChannel.on('acceptDataFromOpenerPage', function(data) {
          console.log(data);
        })
      }
    })
    

    所以通过,自定义事件,可以实现页面的双向传递数据。

    自定义组件

    组件模版的写法与页面模版相同,包含 json,wxml,wxss,js 四个文件,首先需要在json 文件中申明:

    {
      "component":true
    }
    

    模版写法也没有什么区别,例如:

    <view class="inner">
      {{innerText}}
    </view>
    <slot></slot>
    

    自定义组件的使用

    首先在页面的json 文件中进行引用声明。

    {
      "usingComponents": {
        "component-tag-name": "path/to/the/custom/component"
      }
    }
    

    接着就可以在页面的wxml 中使用了:

    <view>
      <!-- 以下是对一个自定义组件的引用 -->
      <component-tag-name inner-text="Some text"></component-tag-name>
    </view>
    

    组件的生命周期:

    Component({
      lifetimes: {
        attached: function() {
          // 在组件实例进入页面节点树时执行
        },
        detached: function() {
          // 在组件实例被从页面节点树移除时执行
        },
      },
      // 以下是旧式的定义方式,可以保持对 <2.2.3 版本基础库的兼容
      attached: function() {
        // 在组件实例进入页面节点树时执行
      },
      detached: function() {
        // 在组件实例被从页面节点树移除时执行
      },
      // ...
    })
    

    小程序,更多的功能时提供了微信相关的功能,比如说,调用相机,调取二维码,地图等功能,此篇文章只是简单的入门,更多的API 还需要查看官网文档,有详细的介绍。

    小程序的云开发 功能也是一个特别牛的功能,前端人员可以完成整个项目的部署,不需要买域名,不需要,运维部署。功能非常强大,后期我们详细介绍。

    欢迎大家,点赞关注。


    起源地下载网 » 微信小程序入门看这篇就够了

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元