0x00.前言 书接上文.项目第一个组件已经封装好,说明文档也已编写好.下面需要将说明文档发布到外网上,以此来展示和推广项目,使用 Github Pages功能实现.同时将组件发布之 npm 上,方便直接在项目中安装使用. 0x01.Github Pages发布 进入项目的 Github repo,点击右上角的 Settings 选项. 点击左侧菜单的 Pages 选项,右侧显示项目 Github Pages 初始配置.source 配置项值为 None 说明此功能尚未开启. 点击 source…
Asp.NetCore源码学习[2-1]:配置[Configuration] 在Asp. NetCore中,配置系统支持不同的配置源(文件.环境变量等),虽然有多种的配置源,但是最终提供给系统使用的只有一个对象,那就是ConfigurationRoot.其内部维护了一个集合,用于保存各种配置源的IConfigurationProvider.IConfigurationProvider提供了对配置源的实际访问.当通过key去ConfigurationRoot查找对应的Value时,实际上会通过遍历…
Asp.NetCore源码学习[1-2]:配置[Option] 在上一篇文章中,我们知道了可以通过IConfiguration访问到注入的ConfigurationRoot,但是这样只能通过索引器IConfiguration["配置名"]访问配置.这篇文章将一下如何将IConfiguration映射到强类型. 本系列源码地址 一.使用强类型访问Configuration的用法 指定需要配置的强类型MyOptions和对应的IConfiguration public void Confi…
合并配置 通过之前的源码学习,我们已经了解到了new Vue主要有两种场景,第一种就是在外部主动调用new Vue创建一个实例,第二个就是代码内部创建子组件的时候自行创建一个new Vue实例.但是无论那种new Vue方式,我们都需要进入了Vue._init,执行mergeOptions函数合并配置.为了更直观,我们整个demo调试耍耍. // src\main.js let childComp = { template:"<div>{{msg}}</div>"…
书接上文,接下来项目将引入babel支持ES6+语法兼容. Babel 是一个工具链,主要用于将 ECMAScript 2015+ 版本的代码转换为向后兼容的 JavaScript 语法,以便能够运行在当前和旧版本的浏览器或其他环境中.中文官网 0x00.babel概念 Babel 是一个编译器(输入源码 => 输出编译后的代码).编译过程分为三个阶段:解析.转换和打印输出. Babel 本身不具有任何转化功能,它把转化的功能都分解到一个个plugin 里面.因此当我们不配置任何插件时,经过 b…
0x00.前言 书接上文.项目经过一系列的配置,开发脚手架已经搭建完毕.接下来开始封装自定义组件.并基于 markdown 文件生成文档和演示案例. 后续文章代码会根据篇幅,不影响理解的情况下进行部分删减,详细代码可在 Github Repo 查看. 0x01.封装第一个组件 封装组件 接下来封装一个loading组件. 创建 packages/loading/src/main.vue 文件(篇幅问题,样式代码详见Github). 创建 packages/loading/index.js 文件.…
前面讲过Dubbo SPI拓展机制,通过ExtensionLoader实现可插拔加载拓展,本节将接着分析Dubbo的服务发布过程. 以源码中dubbo-demo模块作为切入口一步步走进Dubbo源码.在 dubbo-demo-provider模块下配置文件 dubbo-demo-provider.xml中定义了服务提供方.注册中心.协议及端口.服务接口等信息,如下: <?xml version="1.0" encoding="UTF-8"?> <b…
上文分析了Dubbo服务发布的整体流程,但服务代理生成的具体细节介绍得还不是很详细.下面将会接着上文继续分析.上文介绍了服务代理生成的切入点,如下: Invoker<?> invoker = proxyFactory.getInvoker(ref, (Class) interfaceClass, url); 这里的proxyFactory是在ServiceConfig中定义的,是final类型静态变量,赋值后无法进行修改.如下: private static final ProxyFactor…
在Dubbo服务发布的整体流程一文中,只是分析了服务发布的整体流程,具体的细节还没有进一步分析.本节将继续分析服务暴露的过程.在ServiceConfig中通过一句话即可暴露服务,如下: Exporter<?> exporter = protocol.export(invoker); 此时Invoker对象携带的URL信息中定义的是"registry",则此处"protocol"加载的是RegistryProtocol对象.也即调用RegistryPro…
书接上文.在团队协作中,为避免低级Bug.以及团队协作时不同代码风格对彼此造成的困扰与影响,会预先制定编码规范.使用 Lint工具和代码风格检测工具,则可以辅助编码规范执行,格式化代码,使样式与规则保持一致,有效控制代码质量,实现项目代码风格统一. 在代码格式化方面, Prettier 和 ESLint 有重叠,但两者侧重点不同:ESLint 所能提供的格式化功能很有限:而 Prettier 在格式化代码方面具有更大优势.而 Prettier 被设计为易于与 ESLint 集成,所以在项目中使用…