之所以要造这个轮子,原因有三:
-
php没有js的语法灵活
-
nodejs不能像php一样写嵌入html模版的语法
-
没找到合适的现成的轮子
使用方法
- 全局安装
cwg-pretreat-js
模块,运行npm install -g cwg-pretreat-js
用法简单示例
-
新建一个文件夹,aaa
-
在aaa里新建一个txt文件,名字改为
readdir.cjs
-
打开
readdir.cjs
,编写内容<?js echo('xxx')
,然后保存 -
在aaa目录下运行命令:
cjs --server
,此时浏览器会自动打开一个页面,点 readdir.cjs,就可以看到页面展示的是xxx
-
修改
readdir.cjs
的内容来实现一个基础的文件夹遍历工具,如下
<meta charset=utf8 />
<?js
const path=require('path')
const __DIR__=decodeURIComponent(path.resolve(query.dir||'.'))
?>
<a href='?dir=<?js echo(encodeURIComponent(__DIR__+'/..')) ?>'>回到上一层</a>
<h5>遍历目录: <?js echo(__DIR__) ?></h5>
<?js
const fs=require('fs')
const nc2pf=(f, ...a)=>new Promise((resolve, reject)=>{
f(...a, (e, res)=>{
if(e) reject(e)
resolve(res)
})
})
try{
const ls=await nc2pf(fs.readdir, __DIR__)
for(let i=0; i<ls.length; i++) {
const fn=ls[i]
const linkfn=encodeURIComponent(__DIR__+'/'+fn)
const isdir=await nc2pf(fs.stat, __DIR__+'/'+fn).then(a=>a.isDirectory()).catch(e=>0)
?>
<?js if(isdir) { ?>
<a href="?dir=<?js echo(linkfn) ?>"><?js echo(fn) ?></a><br />
<?js }else{ ?>
<span><?js echo(fn) ?></span><br />
<?js } ?>
<?js
}
}catch(e) {
echo('no access')
}
- 刷新页面,就可以看到效果了
使用场景
-
本地工具类,例如上述的文件夹遍历器
-
动态说明文档,例如需要根据代码的规则自动分离注释和实际内容,生成文档页面。一个现成的例子 www.npmjs.com/package/rea… ,其中说明手册就是这样写的
-
其他更多场景,自由发挥,如果需要自然会用得上