当前位置: 首页 > news >正文

微企帮做网站52种新颖的促销方式

微企帮做网站,52种新颖的促销方式,深圳做网站 肖先生,企业网盘公司推荐文章目录 一、前言二、Metro生命周期2.1 解析(Resolution)2.2 转换(Transformation)2.3 序列化(Serialization) 三、拓展阅读 一、前言 众所周知,Metro 是 React Native 默认的 JavaScript 打包模块。对于前端项目,打包工具已有webpack(大而全&#xff…

文章目录

    • 一、前言
    • 二、Metro生命周期
      • 2.1 解析(Resolution)
      • 2.2 转换(Transformation)
      • 2.3 序列化(Serialization)
    • 三、拓展阅读

一、前言

众所周知,MetroReact Native 默认的 JavaScript 打包模块。对于前端项目,打包工具已有webpack(大而全,图片代码打包),rollup(专攻代码打包,框架场景常见)等,既然有这些打包工具为什么还要在移动端搞一个metro,其中一个原因为ram bundle,iOS采用indexed ram bundle读取一个文件效率更高,Android采用file ram bundle

二、Metro生命周期

metrobundling有三个阶段:

  • 解析(Resolution): 解析所有模块并且构建成图,有点类似于Gradle在配置阶段会将所有相互依赖的任务构建成图。
  • 转换(Transformation):转换阶段会将模块转换成目标平台能识别的格式,这一阶段执行了js编译,主流常用的js编译器为babel
  • 序列化(Serialization):最后一个阶段序列化,会将所有转换之后的模块打包成一个或者多个bundle

2.1 解析(Resolution)

在Gradle 配置阶段我们常看到assetsaidlresjava的配置。

android{...sourceSets {main {java.excludes = ['**/build/**',]srcDirs.forEach {assets.srcDirs += "$projectDir/$it/main/assets"aidl.srcDirs += "$projectDir/$it/main/aidl"res.srcDirs += "$projectDir/$it/main/res-frame-animation"res.srcDirs += "$projectDir/$it/main/res"java.srcDirs += "$projectDir/$it/main/java"}}}...
}

metro与之对应项为assetExtssourceExts

2.2 转换(Transformation)

ram bundle的启动优化中,通过getTransformOptions可以实现模块预加载,而其他的模块按需加载从而提高启动速度。

function getTransformOptions(entryPoints: $ReadOnlyArray<string>,options: {dev: boolean,hot: boolean,platform: ?string,},getDependenciesOf: (path: string) => Promise<Array<string>>,
): Promise<ExtraTransformOptions> {// ...
}type ExtraTransformOptions = {preloadedModules?: {[path: string]: true} | false,ramGroups?: Array<string>,transform?: {inlineRequires?: {blockList: {[string]: true}} | boolean,nonInlinedRequires?: $ReadOnlyArray<string>,},
};

preloadedModules中配置的模块为预加载模块,而其他的模块在ram bundle按需加载,这一块有点类似于Android multidexAndroid5.0之前可以将部分类指明到主dex,其他被分配到辅dex。在Android App的构建流程中,编译完之后还会对字节码进行混淆,这块metro也有minifierPath(默认使用metro-minify-terser)、minifierConfig。在混淆这块除了terser,metro还提供了metro-minify-uglify

2.3 序列化(Serialization)

在序列化的阶段模块需要有id以便于require导入,创建模块id的函数为createModuleIdFactory,而processModuleFilter决定了过滤掉哪些模块不进入bundle,所以通过createModuleIdFactoryprocessModuleFilter两个函数可以实现分包。

随着react-refreshreact-reconciler相继出现,react hot loader逐渐被替代,react refresh的实现与平台无关,ReactReact Native等实现react-reconciler的自定义渲染器都能使用,而且react refresh能hot的颗粒度更小。在Web平台使用react refresh 。移动平台则是React Native团队自己实现且内置到了metro打包器取名fast-refresh

三、拓展阅读

  • Recat Native Metro 官网
http://www.hrbkazy.com/news/52428.html

相关文章:

  • 怎么查看网站访问速度十大管理培训课程
  • 一品威客网兼职平台关键词排名优化公司
  • wordpress创建用户seo技术建站
  • 杭州建设委员会网站成都网站建设seo
  • 建设公司自己的网站seo点击排名
  • 怎样低成本做网站推广点击宝seo
  • 昌平做网站公司百度店铺注册
  • 网站建设与运营的课程总结百度一下网页入口
  • 做mad的素材网站今日中国新闻
  • 独立站有哪些常见平台外国黄冈网站推广平台
  • 微信网站开发价格外贸企业网站设计公司
  • 做仿站如何获取网站源码产品软文撰写
  • 池州有哪些做网站的免费的网站推广软件下载
  • 杭州网站建设朗诵面朝百度搜索智能精选入口
  • 哪些客户需要做网站招聘网络营销推广人员
  • 洛阳新光建站系统软文营销是什么
  • 黑龙江省网站建设电商运营主要工作内容
  • 青岛专业制作网站的公司吗汨罗网站seo
  • 提供温州手机网站制作哪家便宜网盘手机app官网下载
  • 个人软件外包接单平台使用最佳搜索引擎优化工具
  • 天津学网站建设江门网站开发多少钱
  • 没有网站可以备案吗郑州百度推广公司地址
  • 2018年企业网站优化应该怎么做关键词歌词简谱
  • 网站建设 java网络营销是什么专业
  • 管理网站模板下载免费windows优化软件哪个好
  • 怎么免费做一个网站上海seo服务外包公司
  • 佛山网站建设外包百度广告位
  • 有没有女的做任务的网站dw网页设计模板网站
  • 南京高端网站建设公司莆田seo推广公司
  • 买域名做网站表白图片优化