0
点赞
收藏
分享

微信扫一扫

微信小程序基础

哈哈镜6567 2022-04-18 阅读 56
前端

1.微信小程序的优势和劣势

优势

  • 微信助理,容易推广。在微信中,小程序拥有众多入口,例如附近的小程序、小程序码、分享、发现-小程序等五十多个的入口。这些入口有助于企业更好的获取流量,从而进行转化、变现。

  • 使用便捷。用户在使用小程序时,只需要轻轻点一下就可以使用,更加符合用户对使用方便、快捷的需求,所以小程序的用户数量不断增加。

  • 体验良好,有接近原生app的体验。在微信生态里,小程序在功能和体验上是可以秒杀掉 H5 页面的,H5 页面经常出现卡顿、延时、加载慢、权限不足等原因,而这些问题在小程序里都不会出现。

  • 成本更低,从开发成本到运营推广成本,小程序的花费仅为APP的十分之一,无论是对创业者还是传统商家来说都是一大优势。

不足

Node中的JS:

小程序中的JS:

小程序目前可以运行在三大平台:

8. 小程序中的数据渲染

小程序和浏览器中有什么不同

    浏览器中渲染是单线程的。

    而在小程序中的运行环境分成渲染层和逻辑层,第2章提到过 WXML 模板和 WXSS 样式工作在渲染层,JS 脚本工作在逻辑层。

小程序中js的模块化

    在小程序中实现JS模块化,和node中、ES6中是一致的,大家还可以使用之前的方式进行JS的模块化编程。

小程序中js的加载执行顺序

    小程序的执行的入口文件是 app.js 。并且会根据其中 require 的模块顺序决定文件的运行顺序。

案例:JS文件模块化

小程序中js的执行环境

  • 单个包大小限制为2M,这导致无法开发大型的应用,采用分包最大是20M(这个值一直在变化,以官网为准)。

  • 需要像app一样审核上架,这点相对于H5的发布要麻烦一些。

  • 处处受微信限制。例如不能直接分享到朋友圈,涉及到积分,或者虚拟交易的时候,小程序也是不允许的。

  • 2. 项目的目录结构

  • pages:

    • wxml: 编写小程序界面结构的地方

    • wxss: 编写小程序样式的地方

    • json:编写界面配置的地方

    • js:编写界面逻辑的地方

  • utils: 编写工具类的地方

  • app.js:创建程序实例的位置

  • app.json: 编写全局配置地方

  • app.wxss: 编写全局样式的地方

  • project.config.json: 项目的配置文件

  • sitemap.json:配置哪些网站可以被检索到

  • 逻辑渲染

    WXML 中,使用 wx:if="{{condition}}" 来判断是否需要渲染该代码块:

    <view wx:if="{{condition}}"> True </view>

    使用 wx:elif 和 wx:else 来添加一个 else 块:

    <view wx:if="{{length > 5}}"> 1 </view>

    <view wx:elif="{{length > 2}}"> 2 </view>

    <view wx:else> 3 </view>

    因为 wx:if 是一个控制属性,需要将它添加到一个标签上。如果要一次性判断多个组件标签,可以使用一个 <block/> 标签将多个组件包装起来,并在上边使用 wx:if 控制属性。

    <block wx:if="{{true}}">

      <view> view1 </view>

      <view> view2 </view>

    </block>

        除此之外微信小程序还可以通过hidden属性进行条件渲染。wx:if在不满足条件的时候会删除掉对应的DOM,hidden属性则是通过display属性设置为none来进行条件渲染。

    <view hidden="{{condition}}">

    隐藏</view>

  • 7. 小程序中的JS

    小程序中的js和浏览器中和node中的区别

    浏览器中JS:

  • ES

  • DOM

  • BOM

  • ES

  • NPM

  • Native

  • ES

  • 小程序框架

  • 小程序API

  • iOS平台,包括iOS9、iOS10、iOS11

  • Android平台

  • 小程序IDE

阻止事件冒泡

    在小程序中除了通过bind之外,还可以通过catch进行事件绑定,通过catch绑定的事件不会触发事件冒泡。

事件捕获

    事件的触发分为两个阶段,首先是捕获阶段,其次是冒泡阶段。默认情况下事件都是在冒泡阶段触发。如果希望事件可以在捕获阶段触发,可以通过capture-bind进行事件绑定。

事件传参

    在小程序中进行事件传参不能像传统的Web项目中一样,在括号里写参数。在小程序中需要在标签上通过data-方式定义事件所需的参数。

<!-- data-参数名=’参数值’ -->

<view bindtap="handleTap" data-msg="我是事件的参数">点击事件</view>

    每个事件回调触发时,都会收到一个事件对象,通过这个对象可以获取路由传递的参数。

handleTap(e){

console.log("执行了点击事件");

    // 通过currentTarget中的dataset属性可以获取时间参数

    console.log(e.currentTarget.dataset.msg);

}

关于这个事件对象其他属性

type    事件类型

timeStamp    页面打开到触发事件所经过的毫秒数

这里需要注意的是target和currentTarget的区别,currentTarget为当前事件所绑定的组件,而target则是触发该事件的源头组件。

    • target    触发事件的组件的一些属性值集合

    • currentTarget    当前组件的一些属性值集合

    • detail    额外的信息

    • touches    触摸事件,当前停留在屏幕中的触摸点信息的数组

    • changedTouches    触摸事件,当前变化的触摸点信息的数组

举报

相关推荐

0 条评论