自定义element组件,elementui动态添加组件

  自定义element组件,elementui动态添加组件

  本文主要介绍element-ui用脚本自动构建新组件的实现实例。通过示例代码非常详细,有一定的参考价值。感兴趣的朋友可以参考一下。

  

目录

  背景element-ui的自动构造是怎么做的?makefilenew.jsfile-save是指对资源文件的修改。fs.createWriteStream摘要

  

背景

  在公司的项目中,每次遇到新的需求,你还用新页面=给页面添加内容,比如vue模板=添加路由吗?你不觉得很麻烦吗?如果有,可以尝试自动构造。好香啊~

  

element-ui的自动化构建是怎么做的

  在开源项目中,尤其是UI库的开发,需要太多人一起合作,每个人的代码习惯都不一样。而且UI库中的每个组件还会涉及到组件的多语言、单元测试、路由、readme.md文档等文件。所以每次慢慢创建这些文件太麻烦了,而且很多人修改路由文件等公共文件的时候会有很多冲突。所以开源项目中有很多脚本可以自动生成某些文件。

  

makefile

  element-ui项目的根目录下有一个makefile,每个命令的作用都在注释里。Windows用户希望使用make命令下载脚本。Mac用户不需要。

  @ #默认的#注释将被输出到日志中,但是@ #不会。

  @#的功能。PHONY:忽略检查是否与下面脚本命令中的dist和test目录冲突,也就是说命令无论如何都会执行。假的:dist测试

  @ #执行make命令时,默认情况下会执行帮助脚本。

  默认:帮助

  @ #执行make build-theme意味着执行npm run build:theme脚本,

  @ #:冒号前面是执行的命令,冒号后面第二行第一个应该是制表符,后面是脚本命令。

  @ #也就是说,下面是‘tab NPM NPM build:theme’

  #构建所有主题

  @ #以上关于build theme的评论可以在下面的截图中查看,会在日志中输出。

  构建主题:

  npm运行构建:主题

  安装:

  npm安装

  开发人员:

  npm运行开发

  @ # $()是一个使用函数。

  @ # $ @是当前命令本身,如“新建”,而$ @是新的。

  @ # MakeMDGoals特殊变量,记录命令行参数指定的目标列表。也就是说,使用这个变量,我们可以得到命令行参数。

  @ #例如,当我们创建一个新组件时,使用脚本make new wailen` MAKECMDGOALS等于wailen。

  @# filter-out反过滤功能,过滤掉$(MAKECMDGOALS)中所有包含$ @的内容

  @ #结合new.js的内容,下面的脚本意思是新建一个编队,传入组件名,一定不能是新的。如果组件名称是新的,可以查看下面的截图。

  新:

  节点build/bin/new.js $(filter-out $@,$(MAKECMDGOALS))

  @ #省略了部分脚本,有兴趣的可以自行查看源代码。

  帮助:

  @ echo \ 033[35mm ake \ 033[0m \ 033][1m命令指令\ 033 [0m]

  @ echo \ 033[35mm ake install \ 033[0m \ t \ 033[0m \ t \ 033[0m \ t \ 033[0m \ t-安装依赖]

  @ echo \ 033[35mm make new component-name[中文名]\ 033[0m \ t-新建组件包。例如,“制作新按钮”

  @ echo \ 033[35mm ake dev \ 033[0m \ t \ 033[0m \ t \ 033[0m \ t \ 033[0m \ t-开发模式]

  @ echo \ 033[35mm ake dist \ 033[0m \ t \ 033[0m \ t \ 033[0m \ t-编译项目并生成目标文件]

  @ echo \ 033[35mm ake deploy \ 033[0m \ t \ 033[0m \ t \ 033[0m \ t \ 033[0m \ t-部署演示

  @ echo \ 033[35mm ake pub \ 033[0m \ t \ 033[0m \ t \ 033[0m \ t \ 033[0m \ t-发布在npm上]

  @ echo \ 033[35mm ake new-lang lang \ 033[0m \ t \ 033[0m \ t \ 033[0m \ t-给网站添加新语言。例如,“创建新语言”

  #注释输出

  过滤新关键字。当传入的参数是新的时,将其过滤掉。

  当然,如果你不想用make直接执行节点脚本,比如make new的组件名就相当于nodebuild/bin/new.js的组件名。

  

new.js

  New.js是自动化的核心文件。我们先考虑一下。创建一个组件文件无非是两个步骤。

  创建文件

  添加内容

  

file-save

  主要是通过file-save包来创建文件和添加内容。我们先来看看api。

  const file save=require( file-save );

  const content= const fs=require( fs );

  Const callback=()={console.log(脚本执行)}

  保存(“文件路径”)。write(文件内容如上述内容, utf8 ,回调)//成功的内容写入将触发回调。写(继续添加内容, utf8 )。end(\n) //文件操作以空行结束。

  这将生成以下文件

  更多文档请参见文件-保存。

  在element-ui中,要创建的文件名和代码内容由Files数组对象管理。

  这样就可以通过直接循环文件来创建相应的文件。

  //创建包

  //组件生成的目录

  const package path=path . resolve(_ _ dirname,././packages ,component name);

  Files.forEach(file={

  文件保存(path.join(PackagePath,file.filename))。写入(file.content, utf8 )。end( \ n );

  });

  

引用资源文件的修改

  另外,一般在创建一个组件时,需要修改组件需要引用的地方,比如路由配置文件。我们也可以通过文件-保存来添加相应的路线。文件保存本身将覆盖前一个文件的内容,也就是说,它将被删除并重新生成。所以,如果在原有基础上增加操作,就需要获取原文件的内容,然后在此基础上拼接新的内容。我们可以这样做:

  const file save=require( file-save );

  const fs=require( fs );

  const content=` const file save=require( file-save );`

  const oldCode=fs.readFileSync(。/demo.js )

  文件保存( demo.js )。写入(旧代码内容,“utf8”)。结束( \n )

  即通过fs模块读取文件的旧内容,然后进行拼接。element-ui的作用是:

  

fs.createWriteStream

  文件保存的原理是通过api fs.createWriteStream做一层封装。

  简单来说就是用。

  const fs=require(fs )

  //创建一个可以写fs的对象。WriteStream类,从Stream继承。可写的

  const writer=fs . create writestream( create stream . js ),{//查找文件,如果文件不存在,则创建它。

  //默认值为w .调用writer.write方法写数据时,会直接覆盖文件的所有内容,

  //文件之前的所有内容都将被删除,并写入新的数据。

  标志:“w”

  })

  //将数据写入流

  Writer.write(此文件的新内容)

  文件保存的源代码内容可以在下面的伪代码中查看。

  const savefs={}

  savefs。_create_dir=function (fp,opts) {

  mkdirp.sync(fp,opts);

  }

  savefs.wstream=函数(文件){

  var ws=fs . createwritestream(file);

  this.writer=ws

  还这个;

  }

  savefs.write=function(chunk,encoding,cb) {

  .

  }

  savefs.end=function(chunk,encoding,cb) {

  .

  }

  savefs.finish=function(cb) {

  .

  }

  savefs.error=function(cb) {

  .

  }

  导出{ savefs }

  当然,其实我们可以直接使用node的fs.writeFile API来创建文件,

  Fs.writeFile(文件路径,写什么,[编码],回调函数);

  您可以找到与文件保存相同的参数。

  

总结

  说到底,自动创建组件无非是增加了两个核心创建文件。文件保存包可以实现这两个操作,然后我们可以根据自己的业务配置生成文件的路径和内容,修改一些公共文件对新文件资源的引用。是不是觉得按节点写脚本比写后端有趣多了~

  这就是本文关于构建新组件的元素脚本自动化的实现示例。有关元素脚本自动化构建新组件的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望大家以后能多多支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: