小程序 三月 05, 2020

微信开发者工具的代码编译

Words count 2.7k Reading time 2 mins. Read count 1000000

微信开发者工具的代码编译注意事项

ES6转ES5

当勾选上这个选项的时候,会使用babel将代码转换为ES5代码,而且默认启用JavaScript的严格模式。

增强编译

启用增强编译后,会解决一下问题,首先让我们看一下,开启增强编译前后的编译能力对比:

特性 原有逻辑 增强编译
Babel版本 babel6 babel7
Presets es2015、stage0 env{chrome:53,ios:8}
Helpers 单文件内联 跨文件共享
Async/Await 不支持 支持
严格开关模式 不支持 支持
忽略文件目录 不支持 支持
代码压缩 uglify-js terser
Babel插件 - 一系列 proposal *
polyfill 大部分 es6 新增三个 polyfill *
  • 使用preset-env,支持最新的ECMAScript语法
  • 共享Babel辅助函数,默认放在项目@babel/runtime目录,可通过项目配置文件配置
  • 支持 async/await 语法,按需注入 regeneratorRuntime,目录位置与辅助函数一致
  • 文件首行是//use strict disable;时,即可禁用当前文件严格模式
  • 可通过项目配置文件指定任意文件、目录不经过编译。
  • 原有逻辑支持stage0语法,为了向前兼容,易容一系列proposal插件
  • 关于 polyfill,基础库中已经引入大量的es6相关的polyfill可参考文档,增强编译下,新增:Array.prototype.includes(es7)、Object.entries(es8)、Object.values(es8)

样式补全

开启此选项,开发工具会自动检测并补全缺失样式,保证在低版本系统上的正常显示。尽管可以规避大部分的问题 ,还是建议开发者需要在 iOS 和 Android 上分别检查小程序的真实表现。

压缩代码

开启此选项,开发者工具在上传代码时候将会帮助开发者压缩和混淆 javascript 代码,减小代码包体积。

代码保护

开启此选项,开发者工具会尝试对项目代码进行保护,主要是对文件进行扁平化处理并替换 require 引用的文件名,以下情况不适合使用此功能

  1. 对于小程序只有简单页面的情况下,开启此功能效果不佳
  2. 有文件超过 500kb,且其中有使用 require 引用项目中的文件的情况,在运行时可能会报文件没有找到
  3. 动态引用的情况,如 var a = 'somefile.js'; require(a);
  4. require 函数赋值给其他变量的情况,如 var a = require; a('somefile.js');
  5. require 作为二元运算符的参数的情况,如 require + 1;
  6. 使用 ... 运算符且未开启 ES6 转 ES5 的情况

启用多核心编译

在四核及以上的电脑上此选项可见。启用此选项,会充分利用 CPU 资源来编译项目的 JS 代码,提高编译的效率。可以选择关闭此选项。

0%