欢迎来到皮皮网网首页

【湛江麻将源码】【不画线指标源码】【gdb汇编源码查看】import this源码

来源:点击播放视频源码 时间:2024-11-25 21:28:29

1.Loader源码分析-Vue Loader v15
2.Python中的哲学:“import this”

import this源码

Loader源码分析-Vue Loader v15

       vue-loader 是源码什么

       简单来说,vue-loader 的源码作用是将 .Vue 文件编译成 .js 文件,这样就可以在浏览器中运行,源码同时也可以在 node 环境中使用 vue-server-render 进行运行。源码

       vue-loader 的源码改动

       相较于之前的版本,vue-loader 进行了许多重要的源码湛江麻将源码改动,具体细节可以参考官方的源码迁移指南。

       vue-loader 的源码编译过程

       vue-loader 的处理流程可以大致分为以下几个部分:

       vue-loader 入口函数

       vue-loader 的入口代码并不多,我将入口函数的源码流程绘制了一个简单的 UML 图,通过这个图可以快速对流程有一个初步的源码了解。

       vue-loader 入口函数主要做了以下几件事:

       通过上面的源码 UML 图可以看出,.vue 文件初次编译时会走生成 code 的源码流程,那么生成的源码 code 究竟是什么呢?

       通过调试 vue-loader,将 code 打印出来,源码仔细观察图中红色框中的源码不画线指标源码部分。

       可以发现在几句 import 中,都是从 source.vue 获取对象,并且路径上携带了参数,这些参数就是 resourceQuery,type 有三种不同类型,分别是 template | script | styles。

       这些 import 会继续触发新一轮的gdb汇编源码查看 vue-loader 执行,于是接下来就到了途中 resourceQuery 有 type 的情况。

       下面是进行了适当删减后的源码,保留了上述涉及到的代码,对代码本身感兴趣的可以浏览。

       parse .vue 组件解析

       parse 方法内部处理了 vue SFC 文件,前面提到过,编译的拼多多空包源码方法默认是通过 vue-template-compiler 处理。

       主要是通过 compiler.parseComponent 函数对 .vue 文件进行编译。

       那么 vue-template-compiler 究竟是什么呢?

       在了解 vue-template-compiler 之前,我对 vue 的编译过程有些了解,既然它们都是处理 vue SFC 文件,那么它们会不会是同一份代码呢?抱着疑问的态度,我们先看看 vue-template-compiler 的 readme.md。

       This 卡片墙翻页源码package is auto-generated. For pull requests please see src/platforms/web/entry-compiler.js.

       在 readme.md 中可以看到官方对它的说明,实际上 vue-template-compiler 是一份自动生成的代码,它本质就是 vue 中的 sfc/parse。

       但今天的主角并不是 vue-template-compiler,也不是 sfc/parse,我会在后面的篇章中对 vue build 的过程做一个详细的解读。

       parse 流程 vue-loader 推导策略

       在 vue-loader 入口函数分析中已经可以了解到,入口函数最终会生成一个 code,这个 code 包含了几个 import 语句,import 语句都含有 vue 标识并且标明了不同的分块类型。

       这些 import 语句会被 VueLoaderPlugin 捕捉并做推导策略处理。

       VueLoaderPlugin

       老规矩,先来看 VueLoaderPlugin 的代码。

       代码删减后及其简单,就一件事:注入 pitcher-loader,用于处理 vue 分块 loader 推导。

       pitcher-loader

       VueLoaderPlugin 的主要作用就是注入 pitcher-loader,由此可知,实际处理推导过程的是 pitcher-loader,VueLoaderPlugin 只不过是一个 loader 的注入器。

       那么 pitcher-loader 是怎么做 loader 推导的呢?

       前面提到入口函数生成的 code,code 中包含 import 语句。

       这些 import 语句会触发 pitcher-loader,pitcher 根据 resourceQuery 来区分不同块,并生成不同的 loader request。

       loader 推导流程总结

       把上述过程汇聚成一张 UML 图,通过这张图可以对整个流程有一个清晰的认识。

       vue-loader 的整体过程可以划分为以下几个部分:

Python中的哲学:“import this”

        在命令行下,或是Pycham中输入 import this,得到了这样一篇短诗:

        * (不知道算不算短诗,姑且就这样称呼吧...)

        英文不好,有道一下,大概翻译为:

        美丽总比丑陋好。

        明了总比晦涩好。

        简单总比复杂好。

        复杂总比难懂好。

        平铺总比嵌套好。

        稀疏总比稠密好。

        可读性很重要。

        特殊情况并不特别到足以违反规则。

        尽管实用性胜过纯洁性。

        错误不应该悄无声息地过去。

        除非显式地沉默。

        面对模棱两可的情况,拒绝猜测的诱惑。

        应该有一种——最好是只有一种——显而易见的方法。

        尽管这种方式一开始可能并不明显,除非你是荷兰人。

        现在总比没有好。

        尽管“从不”常常比“现在”更好。

        如果实现很难解释,那就是个坏主意。

        如果实现很容易解释,这可能是一个好主意。

        命名空间是一个伟大的想法——让我们做更多这样的事情!

        好吧,不是太懂,大佬不愧是大佬,我等只能喊一声......

        不过这个导入的this是个啥东西?在pycham中点入this,可以看到它的源码:

        最后,奉上一段个人比较喜欢的格言(有兴趣的话可以跑一下)(手动滑稽):