首页 > 其他分享 >第二章、框架设计的核心要素

第二章、框架设计的核心要素

时间:2022-08-29 21:17:12浏览次数:39  
标签:__ 要素 Vue 框架 Tree DEV js vue 第二章

  1. 提升用户的开发体验

      开发体验是衡量一个框架的指标之一

      关于快速定位问题和打印警告信息和其他重要信息  Vue.js3   源码中使用  initCustomFormatter 函数
       该函数作用: 在开发环境下自定义formatter的
      Chrome为例, 打开  DevTools 勾选  Console  -->  Enable  custom  formatters  
    

  2. 控制框架代码体积

    框架的大小也是衡量框架的标准之一

    1.  关于警告 
      Vue.js3 中 每一个warn都配合  __DEV__ 常量的检查

      Vue.js采用 rollup.js 对项目进行构建 , __DEV__ 常量实际上就是通过rollup,js的插件配置来预定义的,其功能类似于  webpack中的 DefinePlugin插件

      Vue.js 在输出资源时。会输出两个版本

          vue.global.js    ==>     __DEV__  =  true      开发环境 提示 warn

          vue.gloabl.prod.js  ==>   __DEV__ = false  生成环境 不提示

      

if (__DEV__ && !res) {
     warn(
       ` Failed to mount app: mount target selector "${}container" return false `
    )
}

   3.  Tree-Shaking  

      如何做到不需要的代码不构建?

      Tree-Shaking :消除那些永远不会执行的代码   ( rollup.js    webpack   都支持 )

      实现  Tree-Shaking  必备条件: 
          模块必须是ESM ( ES  MODULE )   因为Tree-Shaking  依赖 ESM 静态结构

      Tree-Shaking  副作用

        如果一个函数调用会产生副作用就无法移除

        副作用:  当调用函数时,会对外部产生影响,比如修改全局变量

        由于静态分析JS代码和困难,所以 rollup.js 提供了一个机制    /* #__PURE__ */  注释

        /* #__PURE__ */  作用: 该注释之后的代码不产生副作用      /* #__PURE__ */  foo()

        /* #__PURE__ */   不仅可以用于函数  也可以用于任何语句

    4. 框架应该输出怎样的构建产物

      除了提到的开发环境和生产环境外,  Vue还会根据场景的不通生成其他形式的产物

      IIFE    自调用函数

        实现在script标签中引入框架并使用    就必须输出IIFE的格式

        实际上 vue.global.js 就是  IIFE 的形式

        在 rollup.js中可配置  format: ‘iife’  输出

      ESM  

        Vue.js 还会输出  vue.esm-browser.js    是给用  < script  type ="module > 使用的

        输出这种资源对应配置项   format: 'esm'

        Vue.js 输出  vue.esm-bundler.js  是为 roolup.js   webpack 打包工具使用的 

           当构建 script标签的时候 __ DEV__  会设置为 true/false

           当构建打包工具(-bundler)  __ DEV__  会设置为   process.env.NODE_ENV !== 'production'

        好处: 用户可以通过webpack配置自行决定构建资源的目标

      CJS   

        在Node环境下使用   服务端渲染

        配置  format:'cjs'

    5.特性开关

      多个特性对应多个特性开关  

      好处: 特性开干一旦关闭  Tree-Shanking  机制让其不包含在最终源码

      实现:   

        vue3.js    __FEATURE_OPTIONS_API__ :  isBundlerESMBuild ?  `__VUE_OPTIONS_API__` :true

      即带  ‘ -bundler ’  的 会使用   __VUE_OPTIONS_API__

      __VUE_OPTIONS_API__  可用来关闭 vue2.x  选项api使用    vue.js 3  推荐使用 组合api

    6. 错误处理

      Vue.js 3 提供统一的错误处理  

        callWithErrorHandling 捕获错误处理程序

        registerErrorHandler  注册错误处理程序
      代码演示

    

    7. 对 TS类型支持非常友好

      TS是微软开发的开源的编程语言,是 JS的超集,能为JS提供类型支持

      Vue.js3对TS的类型支持做的很友好

 

标签:__,要素,Vue,框架,Tree,DEV,js,vue,第二章
From: https://www.cnblogs.com/rlwan/p/16637351.html

相关文章

  • APICloud AVM框架 封装车牌号输入键盘组件
    AVM(Application-View-Model)前端组件化开发模式基于标准WebComponents组件化思想,提供包含虚拟DOM和Runtime的编程框架avm.js以及多端统一编译工具,完全兼容WebComponents标......
  • 如何将本地化添加到 Django REST 框架
    如何将本地化添加到DjangoREST框架Django在本文中,我将为您提供有关如何使用I18N和DjangoRestFramework本地化DjangoRestAPI的指南。在开始本教程之前,我将......
  • 第二章 函数
    函数函数头函数参数Unit函数匿名函数和隐式返回函数类型匿名函数参数和it关键字匿名函数的类型推断定义参数是函数的函数函数内联函数引用函数类型作为返回类......
  • ASP.NET Core 6框架揭秘实例演示[34]:缓存整个响应内容
    我们利用ASP.NET开发的大部分API都是为了对外提供资源,对于不易变化的资源内容,针对某个维度对其实施缓存可以很好地提供应用的性能。《内存缓存与分布式缓存的使用》介绍的......
  • 【博学谷学习记录】超强总结,用心分享。SSM框架的注解开发
    1.MyBatis使用的注解@Select注解:查询操作的,加在声明方法上@Insert注解:插入操作@Update注解:更新操作@Delect注解:删除操作@Param注解:作用是给参数......
  • 【django学习-01】基于wsgi自制一个web框架
    什么是web框架框架,即farmework。特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做......
  • Pytest框架 — 16、Pytest的测试报告(pytest-html插件和Allure框架)
    目录1、前言2、pytest-html生成测试报告(1)pytest-html插件安装(2)pytest-html的使用(3)报告独立显示3、Allure框架生成测试报告(1)说明(2)环境准备步骤1:安装Allure框架步骤2:下载allu......
  • Nginx分布式框架详解46-56nginx静态资源部署02
    error_page指令error_page指令是设置网站的错误页面。语法默认值位置error_page......[=[response]];—http、server、location......code是响应......
  • Java 高级特性——安全,jaas登陆框架(二)
    Java高级特性——安全,jaas登陆框架(二)java提供了jaas框架来对用户进行鉴权,本文主要从实战方面讲述如何使用jaas框架,最终完成登陆模块。阅读本文的前置知识:Java安全......
  • Django框架  快速查询目录
    Django框架 快速查询目录 django中前后端传输数据的编码格式(contentType)django中的中间件django中的cookie和sessiondjango中的csrf跨站请求伪造django中视图函数......