# 小程序 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无法使用)
微信小程序结构 →