nodejs statSync判断一个目录或文件是否存在

nodejs statSync判断一个目录或文件是否存在,第1张

nodejs statSync判断一个目录文件是否存在

获取目录下某个文件中的信息 [ { name, photoUrl, }, ]

目录: 项目名称/app/public/json_tb/user_1/blog_1/commiter_2json

Nodejs逐渐升温,很多朋友已经开始关注。但是在Windows平台上需要基于Cygwin安装配置环境,让很多人望而却步。

不过有消息称Microsoft已经联系Nodejs官方,相信很快会有改善。

那么在不安装Cygwin的情况下,是否可以在Windows上搭建Nodejs环境进行试验开发哪?我以Nodejs + express做了个简单测试,基本可行。

步骤如下:

1 下载Nodejs官方非稳定版Windows可执行程序:

我在试验中使用了057版本

2 创建c:\nodejs目录,并将nodeexe保存在此目录中

3 下载express。因为依赖关系,还需要下载:connect、qs、mime和jade(express默认模板系统。如果使用其他模板系统,需要下载相应系统)

4 创建c:\nodejs\node_modules目录,并在此目录中分别创建[Module]目录。然后将上一步下载的文件压缩,把相关文件拷贝到[Module]目录中。

node_modules

|- connect <= connect: lib/

|- express <= express: lib/

|- jade <= jade: lib/

|- mime <= mime: mimejs & types/

|- qs <= qs: lib/

5 在c:\nodejs\node_modules目录,分别创建以下文件:

connectjs

内容:moduleexports = require('/connect/connect');

expressjs

内容:moduleexports = require('/express/express');

jadejs

内容:moduleexports = require('/jade/jade');

mimejs

内容:moduleexports = require('/mime/mime');

qsjs

内容:moduleexports = require('/qs/querystring');

6 将下载的express压缩包中的bin/express文件拷贝到c:\nodejs目录,并改名为expressjs

7 修改expressjs文件,以下以243为例:

71 修改mkdir函数体

401: exec('mkdir -p ' + path, function(err){

->exec('md ' + path, function(err){

72 修改mkdir函数调用

263: mkdir(path + '/public/javascripts');

->mkdir(path + '\\public\\javascripts');

264: mkdir(path + '/public/images');

->mkdir(path + '\\public\\images');

265: mkdir(path + '/public/stylesheets', function(){

->mkdir(path + '\\public\\stylesheets', function(){

280: mkdir(path + '/views', function(){

->mkdir(path + '\\views', function(){

8 创建一个express项目:

c:\nodejs\nodeexe expressjs -s hello

9 c:\nodejs\node_modules\ => c:\nodejs\hello\node_modules\

10 运行并测试:

c:\nodejs\nodeexe hello\appjs

前端日常开发中,会遇见各种各样的cli,比如一行命令帮你打包的webpack,一行命令帮你生成vue项目模板的vue-cli,还有创建react项目的create-react-app等等等等。这些工具极大地方便了我们的日常工作,让计算机自己去干繁琐的工作,而我们,就可以节省出大量的时间用于学习、交流、开发、 逛steam 。

但是有时候一些十分特别的需求,我们是找不到适合的cli工具去做的。比如说,你的项目十分庞大,你给项目添加一个新的路由,要经过 创建目录 -> 创建vue文件 -> 更新vue-router的路由列表 这一趟流程,就算快捷键创建目录文件用得再熟悉,也比不过你一行命令来得快,特别是路由目录嵌套深,vue文件初始化模板复杂的时候。

所以呢,何不为自己项目写一个cli?就专门做这些繁琐的活?

nodejs的cli,本质就是跑node脚本嘛,基本上每位前端er都会:

然后命令行调用

可以做得更逼真一点,我们在packagejson里面的scripts字段上添加一下脚本名:

然后命令行调用:

但是,看到这里你肯定会说,人家webpack还有vue-cli都是“有名字”的!什么 vue-cli init app 、 webpack -p 的,多漂亮,看看这个命令行, node indexjs ,还 npm run hello ,谁不会啊,丑不拉几的,怕又不是来水文章的哦?差评!!

别急啊各位大人,接下来就说说,如何给这个node脚本起个名字。

姑且,先把这个cli的名字命名为 hello-cli ,就是我们能够在命令行里面,输入 hello-cli ,然后它就打印一句 hello world ,没有 node 也没有 npm ,就是:

这样,你的第一个cli脚本就成功安装了,可以在命令行里面,直接敲你的cli名字,看看结果输出吧。

另外,如果你仅希望你的cli脚本仅在项目里执行,则需要在你项目里面新建一个目录,重复上述的 *** 作,只是在第三步的时候,不要llink到全局里面去,而是使用 npm i -D file:<你的脚本cli目录路径> ,把它当成项目的依赖安装到node_modules里面去,如果安装成功,那么在项目的packagejson你会看到多了一条依赖,这条依赖的值不是版本号,而是你脚本的路径。然后在node_modules里面会有一个bin目录,里面就存放着你的可执行文件。

当然,这样安装的cli脚本,必须在项目的packagejson的scripts字段上声明脚本命令,然后通过 npm run 的方式执行。

哦?这样子使用的话不就回到最最最开始的时候那种原始的 npm run hello 一样么。

是的,但是有质的区别。使用 node indexjs 这种方式调用的话固然简单灵活,但是严重依赖脚本路径,一旦目录结构发生变动,写在scripts的命令就要更改一次;但是使用npm安装之后,本地的cli脚本就被拉到node_modules里面,目录结构变动对其影响不大。其次是不利于分享与发布,如果你想把你的cli脚本发布出去,那么有一个好听响亮的名字,比起在说明文档里面告诉使用者如何找到你的脚本路径再用node执行它,简直好上那么一万倍不是么?

这里也给我们提供了一个cli开发流程思路:

名字有了,输出也有了,看看我们跟那些大名鼎鼎的cli工具,在形式上还差点啥?对了,人家可以支持不同参数选项的,还可以根据输入的不同,产生不同的结果。

这样吧,我们给这个cli加一个功能,既然叫 hello-cli ,那不能只会 hello world 吧,必须要见谁就说 hello 才行:

虽然这个功能很简单,但是至少也是实现了“根据输入的不同,产生不同结果”的效果。

命令行上的参数,可以通过 process 这个变量获取, process 是一个全局对象而不是一个包,不需要通过 require 引入。通过 process 这个对象我们可以拿到当前脚本执行环境等一系列信息,其中就包括命令行的输入情况,这个信息,保存在 processargv 这个属性里。我们可以打印一下:

打印结果:

可以看出,argv是个数组,前两位是固定的,分别是node程序的路径和脚本存放的位置,从第三位开始才是额外输入的内容。那么实现上面的功能就很简单了,只要读取argv数组的第三位,然后输出出来就可以了。

npm社区中也有一些优秀的命令行参数解析包,比如 yargs ,tj的 commanderjs 等等

如果你想使用比较复杂的参数或者命令,建议还是用第三方包比较好,手写解析太耗精力了。

现在,你可以自由自在的写你自己的cli脚本了。

如果你希望写一个项目打完包自动推上git的cli,或者自动从git仓库里面拉取项目启动模板,那么,你需要通过node的 child_process 模块开启子进程,在子进程内调用git命令:

不仅是git命令,包括系统命令、其他cli命令都可以在这里执行。特别是系统命令,使用系统命令对文件目录进行 *** 作,效率比fs高到不知道哪里去了。

社区上也有一些不错的包,比如阮一峰老师推荐的 shelljs

如果你不那么希望你的cli用起来那么“硬核”,希望更人性化一点,比如提供一些友好的输入、提示啊,给你的输出加点颜色区分重点啊,写个简单的进度条啊等等,那么你就需要美化一下你的输出了。

除了颜色这部分,不使用第三方包实现起来非常繁琐复杂,其他的功能,都可以试试自己写。

颜色部分使用了第三方包 colors ,这里就不演示了。

其他都是由nodejs自带的 readline 模块实现的。

绘制的思路跟canvas绘制动画一样,只不过canvas是清除画布,而命令行这里是通过 readlineclearScreenDown 清除输出。

这样,一个简易的,人性化的,带点点进度条动画的命令行cli工具就写好了,你也可以发挥你的想象力,去写一些更有趣的效果出来。

毕竟我们前端,有浏览器我们可以写动画,没了浏览器我们一样可以写动画。

Nodejs是一个轻松构建快速,可扩展的网络应用平台建立在Chrome的JavaScript运行。Nodejs使用事件驱动,非阻塞I/O模型,使得它重量轻,高效,完美的数据密集型实时应用程序运行在分布式设备。

在Windows上安装 Nodejs很方便,只需要访问nodejs官网 >

最近在用nodejs将公司商城的底层重写。基于nodejs的强大,我从原本的只写前端变成了写全栈。

框架采用express,模板用ejs,前端用amazeui 做完三个页面后,设计突然说要改UI设计,我勒个去,郁闷地一个个页面重新调整。下班之后反思一下,觉得花了太多时间在重复劳动上,是时候涉猎一下前端工程化的知识了。

用百度在互联网畅游了一番,总结了一下前端工程化的几个关键要素:编码规范化,结构模块化,流程自动化。本文所述的方法属于模块化,但只是简单地把dom,css,js拆分,以便更好地管理,而并非像vue框架那样的组件化,但这种方式可能更易于理解,可以作为过渡。

这是原来的目录结构

其中public目录里存放的是静态资源,按照传统的做法,css文件夹种存放less文件和css文件,img文件夹中存放资源,js中存放各页面(views目录中对应的页面)的js文件。

当页面越来越多,会遇到一些重复的部分。像图中的侧边菜单,顶部搜索框,底部菜单,在几个页面都有。如果每个页面拷贝一份样式,js,dom,当需求方要更改样式或者增加功能的时候,徒增工作量。

在一篇文章的启发下( 前端开发工程化探讨 ),我将目录结构改成如下:

为了标准化,每个组件里的文件命名都相同。以侧边工具栏为例,domejs是一个模板文件:

如果不熟悉ejs模板的语法,可以百度一下。另外,此模板还支持嵌套,并传入参数。

例如,下面是一个列表容器的dom结构,配合js可以实现上拉加载功能,但列表项的样式可能不一样,你可以在使用时再根据传入的templateName参数决定用哪个模板,非常灵活。

在使用模板时,这样嵌入页面。

注意,应使用<%-include()%>,而非<%=include()%>。<%-%>表示内容原样输出,不进行运算。而<%=%>会生成运算后的内容。

然后,再来考虑js和css文件应当怎么处理。如果在页面中逐个引入组件的js和css文件,维护起来会非常不方便。所以我考虑将某个页面涉及到的组件,还有页面本身的js和css打包成一个。这样做有个缺点,每个页面的js和css文件会有重复的内容。如果用seajs或requirejs等模块加载,可以解决重复的问题,但也可能增加项目的复杂度。考虑到打包后的文件只有10K大小,还是暂时使用打包的方法。有兴趣的朋友也可以将js模块化并测试一下性能。

打包涉及到gulp的应用,有许多文章谈论到,而我是通过开源项目学习的。

首先我需要写一个page-configjson文件,告诉gulp我要打包哪些资源:

将文件放在模板目录的根目录下面,与src,dist同级。src存放原文件,dist存放生成后的文件。

再写一个gulpfilejs,用于自动构建。

下面是gulp文件的写法:

在使用时,要在命令行安装gulp,切换到gulpfilejs所在的目录,运行gulp watch,这样,每次在css和js更改时,会自动重新打包。当然,为了不重复 *** 作,你可以写一个脚本文件。

目前似乎最常见的线上部署nodejs项目的有forever,pm2这两种,本文恩主要给大家介绍了关于利用pm2部署多个nodejs项目的配置教程,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。

前言

相信大家应该都知道,一般在实际项目部署中,我们服务器在启动的时候需要自动启动node服务。以前是通过liunx自带的命令启动。但是随着后台微服务越来越多。每次发布新程序。修改脚本太麻烦了。于是换成PM2来做。下面话不多说了,来一起看看详细的实现过程吧。

配置方法如下:

1首先安装pm2npm install -g pm2

2生成配置文件pm2 ecosystem

生成完成会有一个ecosystemconfigjs的文件,

3修改配置文件

编辑ecosystemconfigjs

1、首先来看一下目录结构,目录下面一个models文件夹,一个JS脚本文件。

2、其次在models文件夹下面我们创建一个JS脚本文件,让外面的脚本文件进行调用。

3、最后打开models中的JS文件,输入如下的脚本内容,注意moduleexports一定要加上。

以上就是关于nodejs statSync判断一个目录或文件是否存在全部的内容,包括:nodejs statSync判断一个目录或文件是否存在、如何查看nodejs安装了哪些模块、手把手教你使用nodejs编写cli(命令行)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9293541.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-26
下一篇2023-04-26

发表评论

登录后才能评论

评论列表(0条)

    保存