全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

利用node.js实现自动生成前端项目组件的方法详解

本文主要给大家介绍了关于利用node.js实现自动生成前端项目组件的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍:

脚本编写背景


写这个小脚本的初衷是,项目本身添加一个组件太繁琐了,比如我想要去建立一个login的组件,那么我需要手动去IDE中,创建index.js(组件出口文件),login.js(业务文件),login.html,login.less这四个文件。因为每个组件都有一些输出的代码,还要把之前组件的那几行拷贝过来,这种作业真的烦,于是乎写了一个小脚本去自动完成这些功能。

PS:本脚本运行环境是nodeV7以上,当前时间2017/07,stable版本还是V6,最新的node版本为V8.1.3(LTS版本),如要运行,请升级node版本为LTS版本。

预期效果

在命令行输入:node set login

在conponents文件夹下面自动生成4个文件,并填写index.js , login.js的文件公共内容。

如果输入多层文件如: node set login/foo

则会先检测conponents文件夹下是否存在login,如不存在,先创建login文件夹,然后创建foo的组件。本脚本主要使用nodejs的fs模块来完成需求。

fs模块
fs模块用于对系统文件及目录进行读写操作,本次主要用到的fs模块的功能有:

  • fs.existsSync(path) 检测文件夹是否存在,一个同步的API,只接受一个路径参数,当前版本异步的废弃了。
  • fs.mkdir(path,callback) 创建文件夹,异步,两个必填参数,路径和回掉。
  • fs.readFileSync(path) 读取文件,接受一个参数,文件路径。
  • fs.writeFile(path,data,callback) 写文件,接受三个参数,文件路径,向文件中写的数据,回掉。

代码实施

流程图


async function creatCpt() {
 try {
  await exists(); // 检测文件夹
  await readFile(); // 读取模板内容
  await writeFile(await readFile()); //写入组件
 }
 catch (err) {
  console.error(err);
 }
}

获取命令行参数

node set login为例,想要创建一个login文件夹,首先先要获取命令行当中的login。在nodejs当中,获取命令行参数使用process.argv这条命令返回一个数组,第一个参数为nodejs.exe的应用所在绝对路径,第二个参数为当前脚本所在的绝对路径,之后所输入的参数以空格分隔,如输入node set aaa,得到:


检测文件夹是否存在

let exists = function () {
 return new Promise((res) => {
  (async function () {
   for (let a of path) {
    fs.existsSync(basepath + a) ? basepath = `${basepath}${a}/` : await mkdir(a);
   }
   res(basepath);
  })()
 })
}

判断是否存在文件夹,如果存在,重新拼接路径继续检查,如不存在则生成文件夹。

创建文件夹

node set foo/bar


let mkdir = function (a) {
 return new Promise((res, rej) => {
  fs.mkdir(basepath + a, (err) => {
   if (err) rej(err);
   basepath = `${basepath}${a}/`
   res(basepath);
  });
 })
}

创建文件夹成功后,重新拼接路径,以便于继续查找。

读取模板内容

let reads = [`${basepath}cptTemp/index.js`, `${basepath}cptTemp/cptTemp.js`];//要读取的文件

let readFile = function () {
 return new Promise((res) => {
  for (let a of reads) {
   let text = fs.readFileSync(a).toString();
   text = text.replace(/time/g, moment().format('YYYY/MM/DD'))
    .replace(/temp/g, name);
   file.push(text)
  }
  res(file);
 })
}


每个生成好的文件都需要一个创建的时间,及作者,包括文件的输出,以及class等结构,这些都是比较公用的,把他们写在模板当中,然后读取出来,替换其中的关键词,如时间,组件名等。

生成文件并写入内容

提前建立好要生成的文件和要读取的文件。如:

let writes = [`${name}.js`, `${name}.html`, `${name}.less`, `index.js`];

let writeFile = function (file) {
 return new Promise((res, rej) => {
  (async function () {
   for (let a of writes) {
    await fs.writeFile(`${basepath}${a}`,
     a == writes[3] ? file[0] : a == writes[0] ? file[1] : '', (err) => {
      if (err) rej(err)
     })
   }
   res('succ');
  })()
 })
}

目前只写了2个要读取的模板,在生成文件之后,会将模板中的内容填充进去。

总结

以上就完成了一个自动生成前端项目组件的小脚本了,当然,还可以继续扩充,比如这些组件其实还需要再到,组件管理的那个js中去注入,这些都可以用脚本完成,本文就到这里为止了。

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。

项目地址:https://github.com/jiwenjiang...

本地下载地址:http://xiazai./201707/yuanma/angularSeed().rar


# nodejs  # 自动生成代码  # nodejs组件  # 前端项目结构  # node.js express中app.param的用法详解  # Node.js中流(stream)的使用方法示例  # mac上node.js环境的安装测试  # Express + Node.js实现登录拦截器的实例代码  # 基于node.js制作简单爬虫教程  # node.js中grunt和gulp的区别详解  # 关键词  # 命令行  # 自动生成  # 是否存在  # 写了  # 如不  # 我想  # 都有  # 运行环境  # 好了  # 相关内容  # 本地下载  # 还可以  # 第一个  # 说了  # 可以用  # 不多  # 要去  # 要把  # 这条 


相关文章: 网站制作报价单模板图片,小松挖机官方网站报价?  C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)  网站制作多少钱一个,建一个论坛网站大约需要多少钱?  招贴海报怎么做,什么是海报招贴?  C++如何编写函数模板?(泛型编程入门)  php条件判断怎么写_ifelse和switchcase的使用区别【对比】  微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?  独立制作一个网站多少钱,建立网站需要花多少钱?  专业商城网站制作公司有哪些,pi商城官网是哪个?  电商网站制作公司有哪些,1688网是什么意思?  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  MySQL查询结果复制到新表的方法(更新、插入)  c# await 一个已经完成的Task会发生什么  如何在建站之星网店版论坛获取技术支持?  交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?  nginx修改上传文件大小限制的方法  ui设计制作网站有哪些,手机UI设计网址吗?  如何高效搭建专业期货交易平台网站?  小程序网站制作需要准备什么资料,如何制作小程序?  如何零成本快速生成个人自助网站?  香港服务器租用费用高吗?如何避免常见误区?  音响网站制作视频教程,隆霸音响官方网站?  建站主机系统SEO优化与智能配置核心关键词操作指南  如何用5美元大硬盘VPS安全高效搭建个人网站?  实例解析Array和String方法  html制作网站的步骤有哪些,iapp如何添加网页?  linux top下的 minerd 木马清除方法  如何在景安云服务器上绑定域名并配置虚拟主机?  如何在阿里云香港服务器快速搭建网站?  建站主机无法访问?如何排查域名与服务器问题  如何选择香港主机高效搭建外贸独立站?  建站主机服务器选型指南与性能优化方案解析  建站之星免费版是否永久可用?  娃派WAP自助建站:免费模板+移动优化,快速打造专业网站  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  如何基于云服务器快速搭建个人网站?  淘宝制作网站有哪些,淘宝网官网主页?  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?  哈尔滨网站建设策划,哈尔滨电工证查询网站?  如何在阿里云部署织梦网站?  如何选择高效便捷的WAP商城建站系统?  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  公司网站的制作公司,企业网站制作基本流程有哪些?  如何通过老薛主机一键快速建站?  如何选择高效响应式自助建站源码系统?  网站企业制作流程,用什么语言做企业网站比较好?  如何在Golang中引入测试模块_Golang测试包导入与使用实践  如何选择靠谱的建站公司加盟品牌? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。