elementUI文档的实现方案( 二 )


vue demo component是如何生成的
我看md-loader的入口文件index.js传送门里有这么一段代码, let demoComponentContent = genInlineComponentText(html, script);, 这段代码的功能就是生成demo component字符串 ,我们可以跳转到util.js看到如下内容:
functiongenInlineComponentText(template,script){ //... constcompiled=compileTemplate(finalOptions); //... letdemoComponentContent=` ${compiled.code} `;//模板代码转成vue使用$createElement生成html的render函数 //... demoComponentContent=`(function(){ ${demoComponentContent} ${script} return{ render, staticRenderFns, ...democomponentExport } })()`; returndemoComponentContent;//返回字符串 }上面的代码主要使用了@vue/component-compiler-utils vue-template-compiler来编译template模板 , 把template模板转成render函数创建dom语法 ,然后拼接demo component字符串 。
总结
【elementUI文档的实现方案】结合markdown文件如何解析与vue demo代码标记和vue demo component是如何生成的这两段的内容再重新看一遍md-loader的入口文件index.js传送门可以发现程序的流程为:markdown => html => 提取( )中的vue代码 => 编译里面的vue代码 , 返回demoComponentContent字符串 => 把html代码与demoComponentContent拼接起来组成新的vue代码 。
//第一步 constcontent=md.render(source);//经过md编译好的代码,对应markdown文件如何解析与vuedemo代码标记 //第二步 while(...){//对应vuedemocomponent是如何生成的 //... letdemoComponentContent=genInlineComponentText(html,script);//把html,和js组成组件代码. //... } //第三步 //.... return`${output.join('')}//这是md转的html${pageScript} `;


推荐阅读