Nodejs-项目结构初始化案例

  • 项目初始化
 初始化包 -- `npm init -y`
  新建入口文件 -- index.js
  新建核心代码模块 -- init.js
  新建配置清单 -- config.json
  新建index.html 与 404.html
  • 核心模块
    引入模块 -- path、fs
    书写核心业务逻辑
  • config.json
{
    "rootName" : "mydemo",
    "data" : [
        {
            "name" : "img",
            "type" : "dir"
        },
        {
            "name" : "js",
            "type" : "dir"
        },
        {
            "name" : "css",
            "type" : "dir"
        },
        {
            "name" : "index.html",
            "type" : "file"
        },
        {
            "name" : "404.html",
            "type" : "file"
        }
    ]
}
  • init.js
// 实现初始化工作
const cfg = require('./config.json');
const path = require('path');
const fs = require('fs')
// 获取根目录
let rootName = cfg.rootName;
// 初始化函数
let init = () => {
    fs.mkdir(path.join('./', rootName), (err) => {
        if (err) {
            console.log("创建根路径失败");
            return;
        }
        cfg.data.forEach(obj => {
            if (obj.type == 'dir') {
                fs.mkdir(path.join('./', rootName, obj.name), (err) => {
                    if (err) {
                        consle.log("创建子目录失败");
                        return;
                    }
                    console.log(`${obj.name}目录创建是成功`)
                })
            }else if (obj.type == 'file') {
                fs.readFile(path.join(__dirname,obj.name),(err, data) => {
                    if (err) {
                        console.log("读取文件失败");
                        return;
                    }
                    fs.writeFile(path.join('./',rootName, obj.name),data, (err) => {
                        if (err) {
                            console.log("创建文件失败");
                            return;
                        }
                        console.log(`${obj.name} 文件创建成功`);
                    })
                })
            }
        })
    })
}
// init();
exports.init = init;
  • index.js
// 入口文件
const obj = require('./init.js');
let param = process.argv[2];
switch(param){
    case '-i':
        obj.init();
        break;
    case '-h':
        console.log('帮助信息');
        break;
    case '-v':
        console.log('1.0.0');
        break;
}
  • 怎么使用
1.在命令行里面输入node .
2.如果不输入node . ,可以吗,是可以的
  先查看使用node版本,比如是6.9.1
  打开目录C:\dev\nvm\v6.9.1\node_modules 
  将写的文件夹放到里面
  在外面随便复制一个cmd格式的修改 ,命名为init.cmd
@IF EXIST "%~dp0\node.exe" (
  "%~dp0\node.exe"  "%~dp0\node_modules\wjj\index.js" %*
) ELSE (
  @SETLOCAL
  @SET PATHEXT=%PATHEXT:;.JS;=;%
  node  "%~dp0\node_modules\wjj\index.js" %*
)
然后在外面命令行输入init就可以了
而且还支持init -v init -h
而且是当前目录创建哦,因为改成了./

你可能感兴趣的:(Nodejs-项目结构初始化案例)