微信小程序开发 与 网页开发 的区别

1,031 阅读1分钟

一、开发语言

2f3cfe41787424021cb0160692c6a1a.jpg

  • 小程序 逻辑层 运行在 JSCore 中,并没有一个完整浏览器对象,因而缺少相关的DOM API和BOM API。这一区别导致了 jQuery、 Zepto 等库,在小程序中是无法运行的。

  • JSCore 的环境同 NodeJS 环境也是不尽相同

    • 在小程序中使用npm包前,需先 构建 npm

二、 渲染层 与 逻辑层

a4160240e631aee98de6df51f7d0713.png

  • 小程序 渲染层 和 逻辑层 是运行在不同的线程中,渲染层 与 逻辑层 不直接进行交互,通过Native进行交互。

  • 网页运行是单线程。

所以:

  1. 网页渲染可能存在的问题: 某个js文件,运行很长时间,导致页面失去响应。

  2. 不要频繁setData

    • 若数据不需要展示在页面上,则不要定义在data里。
  3. 如果小程序涉及第三方服务器,通过Native(微信客户端)与第三方服务器进行交互。

a8e1f70280fa5fc26792096f6235cd5.jpg

提升数据更新性能方式的代码示例

  onShow: function() {

    this.setData({
      myData: {
        m: '这个字符串在WXML中用到了',
        n: '这个字符串未在WXML中未用到'
      }
    })
    
    // 可以优化为
    this.setData({
      'myData.m': '这个字符串在WXML中用到了'
    })
    this._myData = {
      n: '这个字符串未在WXML中未用到'
    }

  }
})

其他

  • Javascript 由三部分构成,ECMAScript,DOM和BOM

  • DOM(document object model):文档对象模型,提供操作页面元素的方法和属性

  • BOM(browser object model);浏览器对象模型,提供一些属性和方法可以操作浏览器

  • JSCore: JavaScriptCore ,通常会被叫做虚拟机,负责解释和执行 JavaScript 代码,是WebKit默认内嵌的JavaScript引擎。