-
相似之处(如下表所示),我们可以从 Android 的实现入手,完成对鸿蒙的移植。 Flutter 在鸿蒙上的适配 如前文所述,要完成 Flutter 在新系统上的移植,我们需要完整实现 Flutter 嵌入层 要求的所有子模块,而从能力支持角度,渲染、交互以及其他必要的原生平台能力 是保证 Flutter 应用能够运行起来的最基本的要素,需要优先支持。接下来会依次进 行介绍。 1. 渲染流程打通 我们再来回顾一下 何丝滑无感地扩展 MTFlutter 基础依赖在 Web 端的实现。 4.1.1 Flutter Package 分平台编程 在 Flutter 中通过使用 Package 可以创建易于共享的模块化代码。官方强烈推荐使 用 Package 形式管理各种工具方法。在官方定义中 Package 包含以下两种类别: ● Dart Package:用 Dart 编写的常规 Package,其中一些可能包含依赖于 js(1.1M),各页面的业务代码 xxx.part.js(使用 FutureBuilder 后)、图片文 件。直接应用这些资源到项目中,会遇到以下问题: ● 功能无法及时更新:浏览器对同名文件的缓存,可能导致程序代码不被及时更 新或者出现执行错乱。 26 > 2021年美团技术年货 ● 首屏渲染性能差:main.dart.js 文件过大,单一文件加载、解析时间过长,势 必会影响首屏的渲染时间。
0 码力 |
738 页 |
50.29 MB
| 1 年前 3
-
将⾏为改为允许、废弃或禁⽤。 webpack 5 webpack 4 之前的版本是:如果某个模块依赖 Node.js 里面的核心模块,那么这个模块被引入的时候会把 Node.js 整个 polyfill 顺带引入。 功能清除:不再为 Node.js 模块引⼊ polyfill 功能清除:不再为 Node.js 模块引⼊ polyfill node-libs-browser:https://github readme ⻓期缓存:确定的模块 Id、chunk 和导出名称 在生产模式下,默认的 chunkIds: “deterministic”, moduleIds: “deterministic”。设置成 deterministic 时默认最小 3 位数字会被 使用 chunkIds moduleIds webpack 5 webpack 4 ⻓期缓存:确定的模块 Id、chunk 和导出名称 和导出名称 持久化缓存 在 webpack 4 ⾥⾯,可以使⽤ cache-loader 将编译结果写⼊硬盘缓存,还可以使⽤ babel-loader,设置 option.cacheDirectory 将 babel-loader 编译的结果写进磁盘。 webpack 5 缓存策略 • 默认开启缓存,缓存默认是在内存⾥。可以对 cache 进⾏设置 。 • 缓存淘汰策略:⽂件缓存存储在 node_modules/
0 码力 |
40 页 |
12.03 MB
| 1 年前 3
-
目 录 致谢 向导 支持平台 分发应用 提交应用到 Mac App Store 打包应用 使用 Node 原生模块 主进程调试 使用 Selenium 和 WebDriver 使用开发人员工具扩展 使用 Pepper Flash 插件 使用 Widevine CDM 插件 教程 快速入门 桌面环境集成 在线/离线事件探测 API文档 简介 进程对象 支持的 支持的 Chrome 命令行开关 环境变量 自定义的 DOM 元素 File 对象 标签 window.open 函数 在主进程内可用的模块 app autoUpdater BrowserWindow contentTracing dialog globalShortcut ipcMain Menu MenuItem powerMonitor - 2 - 本文档使用 powerSaveBlocker protocol session webContents Tray 在渲染进程(网页)内可用的模块 desktopCapturer ipcRenderer remote webFrame 在两种进程中都可用的模块 clipboard crashReporter nativeImage screen shell 开发 代码规范 源码目录结构
0 码力 |
203 页 |
2.72 MB
| 1 年前 3
-
分析整个打包总耗时 每个插件和loader的耗时情况 webpack-bundle-analyzer 分析体积 代码示例 构建完成后会在 8888 端口展示大小 可以分析哪些问题? 依赖的第三方模块文件大小 业务里面的组件代码大小 使用高版本的 webpack 和 Node.js 构建时间降低了 60%-98%! 使用 webpack4:优化原因 V8 带来的优化(for of 替代 多进程/多实例:使用 HappyPack 解析资源 HappyPack工作流程 原理:每次 webapck 解析一个模块,HappyPack 会将它及它的依赖分配给 worker 线程中 代码示例 多进程/多实例:使用 thread-loader 解析资源 原理:每次 webpack 解析一个模块,thread- loader 会将它及它的依赖分配给 worker 线程中 多进程/多实例:并行压缩 思路:将 react、react-dom 基础包通过 cdn 引入,不打入 bundle 中 方法:使用 html-webpack-externals- plugin 进一步分包:预编译资源模块 思路:将 react、react-dom、redux、react-redux 基础包和业务基础包打包成一个文件 方法:使用 DLLPlugin 进行分包,DllReferencePlugin
0 码力 |
36 页 |
8.13 MB
| 1 年前 3
-
"latest", "react", "stage-2" ], "plugins": [] } 注意,以下所有 Babel工具和模块的使用,都必须先写好 .babelrc 。 命令行转码 babel-cli Babel提供 babel-cli 工具,用于命令行转码。 它的安装命令如下。 $ npm install } } 上面代码中,使用 babel-node 替代 node ,这样 script.js 本身就不用做任 何转码处理。 babel-register babel-register 模块改写 require 命令,为它加上一个钩子。此后,每当使 用 require 加载 .js 、 .jsx 、 .es 和 .es6 后缀名的文件,就会先用Babel 进行转码。 $ 命令加载的文件转码,而不会 对当前文件转码。另外,由于它是实时转码,所以只适合在开发环境使用。 babel-core 如果某些代码需要调用 Babel 的 API 进行转码,就要使用 babel-core 模块。 安装命令如下。 $ npm install babel-core --save ECMAScript 6简介 15 然后,在项目中就可以调用 babel-core 。 var babel
0 码力 |
679 页 |
2.66 MB
| 1 年前 3
-
Vue 构建大型应用时推荐使用 npm 安装[1] 。NPM 能很好地和诸如 Webpack (opens new window) 或 Browserify (opens new window) 模块打包器配合使用。同时 Vue 也提 供配套工具来开发单文件组件。 1. # 最新稳定版 2. $ npm install vue@next Vue 提供了一个官方的 CLI (opens new @vue/cli@next 然后在 Vue 项目运行: 1. vue upgrade --next Vite (opens new window) 是一个 web 开发构建工具,由于其原生 ES 模块导入方法,它允 许快速提供代码。 npm 命令行工具 (CLI) Vite 安装 - 8 - 本文档使用 书栈网 · BookStack.CN 构建 通过在终端中运行以下命令,可以使用 prod).js : vue(.runtime).esm-browser(.prod).js : 安装 - 9 - 本文档使用 书栈网 · BookStack.CN 构建 用于通过原生 ES 模块导入使用 (在浏览器中通过