这篇文章主要介绍“Vue编译器分析compile源码”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Vue编译器分析compile源码”文章能帮助大家解决问题。在 compileToFunctions 方法中:而真正的编译工作是依托于 compile 函数,接下来我们详细解析 compile 。上述代码在调用 compile ,其中模板字符串 template ,选项参数 options 第二个参数传递给 compile 函数,在章节三种我们知道,这里传递过去的options
如下:接下来我们看下 compile 的源码。首先可以看到:finalOptions 所有的配置选项最终都会挂载在这个对象上,baseOptions包含编译器在运作的时候所需的配置选项。第一个属性: expectHTML 被设置为 true 。第二个属性:modules我们用到了在细讲。第三个属性:directives 值是三个属性 (model、text、html) 的对象,且属性的值都是函数。第四个属性:isPreTag 它是一个函数,其作用是通过给定的标签名字检查标签是否是 ‘pre’ 标签。第五个属性:isUnaryTag 是一个通过makeMap
生成的函数,该函数的作用是检测给定的标签是否是一元标签。第六个属性:mustUseProp 它是一个函数,其作用是用来检测一个属性在标签中是否要使用props
进行绑定。第七个属性:canBeLeftOpenTag 一个使用makeMap生成的函数,它的作用是检测非一元标签,但却可以自己补全并闭合的标签。比如 div 标签是一个双标签,你需要这样使用第八个属性:isR免费云主机域名eservedTag 它是一个函数,其作用是检查给定的标签是否是保留的标签。第九个属性:getTagNamespace 它也是一个函数,其作用是获取元素(标签)的命名空间。第十个属性:staticKeys 它的值是通过以 modules 为参数调用 genStaticKeys 函数的返回值得到的。 其作用是根据编译器选项的 modules 选项生成一个静态键字符串。现在我们粗略的介绍了下baseOptions 中各个属性的作用,当我们用到时候再来详细讲解他们的源码。继续往下看:很简单在 finalOptions上添加了 warn 方法,该方法接收两个参数:msg 错误或提示的信息tip 用来标示 msg 是错误还是提示。warn选项主要用在编译过程中的错误和提示收集,如果收集的信息是错误信息就将错误信息添加到前面定义的errors数组里,如果是提示信息就将其添加到 tips 数组里。继续:这段代码检查 options 是否存在,这里的 options 就是使用编译器编译模板时传递的选项参数,或者可以简单理解为调用 compileToFunctions 函数时传递的选项参数。而baseOptions理解为编译器的默认选项或者基本选项,options 是用来提供定制能力的扩展选项。而上面这段代码的作用,就是将 options 对象混合到 finalOptions 中。modules: 如果 options.modules 存在,就在 finalOptions 对象上添加 modules 属性,其值为 baseOptions.modules 和 options.modules 这两个数组合并后的新数组。directives: 对于directives 采用原型链的原理实现扩展属性对基本属性的覆盖。继续:上面的代码调用了 baseCompile 函数,并分别将字符串模板(template),以及最终的编译器选项(finalOptions)传递了过去。compiled 是 baseCompile 对模板的编译结果所以上面这段代码的作用是用来通过抽象语法树来检查模板中是否存在错误表达式的,通过 detectErrors 函数实现,将compiled.ast 作为参数传递给 detectErrors 函数,该函数最终返回一个数组,该数组中包含了所有错误的收集,最终通过这句代码将错误添加到errors。将收集到的错误(errors)和提示(tips)添加到compiled
上并返回。baseCompile 函数是在 createCompilerCreator 函数调用时传递的实参。关于“Vue编译器分析compile源码”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注百云主机行业资讯频道,小编每天都会为大家更新不同的知识点。免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@byun.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
相关推荐: Linux apache怎么实现https的配置
这篇文章主要介绍了Linuxapache怎么实现https的配置的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Linuxapache怎么实现https的配置文章都会有所收获,下面我们一起来看看吧。 应用层协议,传输层使用TCP协…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。