# 小程序 VS HTML5

小程序不是 HTML5 应用,而是更偏向传统 CS 架构,它是基于数据驱动模式,一切皆组件(视图组件)。

  • 普通 HTML5 都是执行在浏览器的宿主环境,浏览器提供 window等 BOM 对象,但小程序没有 window、document,它更类似 Node.js 的宿主环境;因此在小程序内不能使用 document.querySelector 这类 DOM 选择器,也不支持 location、localStorage 等这些浏览器提供的 API(cookie、Ajax 请求(XMLHttpRequest)、DOM 选择器、DOM 事件、路由 history、缓存、设备信息、位置等都不存在)
  • 小程序并非是直接通过 URL 访问的,而是通过信道服务进行通信和会话管理,所以它不支持 Cookie 存储,同时访问资源使用 wx.request 则不存在跨域的问题
  • 小程序在 JavaScript 的模块化上支持 CommonJS,通过 require 加载
  • 小程序的页面样式完全继承了 CSS 的语法,但是在选择器上面会少一些,布局支持 flex 布局
  • 小程序的整体框架采用面向状态编程方式,状态管理从 API 来看采用类似 Redux 的设计方式;单向数据绑定方式,当 View 在 Action 操作后,只能通过 Action 的业务处理来更新 View

页面组件模块上,WXML 提供了一整套的「自定义 UI 组件标签」,有些组件实际是 HTML5 实现的,有些组件为了解决权限、性能和适配等问题是 Native 实现的(如 map、input、canvas、video)。

  onLoad: function (options) {
    
    wx.request({
      url: 'http://127.0.0.1:4001/t2',
      success(res){
        console.log(res)  
      },
      fail(err){
        console.log(err)
      }
    })
  }
  

无跨域问题,但是需要开启"工具不校验合法域名、web-view(业务域名)、TLS 版本以及 HTTPS 证书。"

微信内的 JavaScript 相对于浏览器中的有限制也有增强,增强的部分是基于小程序 Native 端能力做的增强,比如增强的文件操作类(相册、录音等);除了增强,跟 HTML5 浏览器环境最大的不同是限制部分(很多api无法使用)

参考地址 (opens new window)

最后更新: 5/29/2024, 8:12:51 AM