最近公司做个简单的小工具,是一个简单的在线编译系统。现在做几点简单的总结记录。
1、路径的问题。
node程序执行的路径,可能会影响程序中的相对路径使用。(这点有待进一步研究,分析理论)因此就用到了path模块。之前也没觉得这个模块有多重要,这次才发现它的方便。下面几个是我用到的。
以下只是自己的简单理解,可能并不表达的那么准确,具体请参考nodejs的官网api。(建议看英文版的,中文版还是稍微有些不全的)
path.resolve(from, to) : from是一个绝对路径,to是一个相对路径,最终to的绝对路径。注意,to若是一个目录,则这个路径得到的是一个目录的路径,但这个路径最后没有“/”。若是文件,则是文件的绝对路径。
path.relative(from,to): from和to都是绝对路径,得到from相对于to的相对路径。
path.basename(p,[ext]): 得到路径最后的文件名,包括后缀名。如果加了ext参数项,则只返回文件的名字,不包括后缀名。
path.extname(p):得到文件的后缀名,包括“.”。
path.dirname(p):得到路径的目录名.不包括最后的“/”。
path.join(args1, arg2....): 将各个参数合并为一个路径,并且规范化。
2、nodejs执行shell
在这个编译系统中,很多东西都是用shell完成的。shell确实很重要,也需要花点时间去补充理论知识。
在nodejs中执行shell,使用child_process.有三种方法,spawn,exec