[TOC]
每个人都想成为制定规则的那个人,但相较而言,遵守规则更加重要,也更困难。
这个项目是根据方应杭老师在“写代码啦”上发布的免费课程《Node.js 入门》做的练手项目。关于这个课程,可以点击这里了解。
相对比原课程中的案例,我做了如下补充:
todo命令添加undone、moveup、movedown、clearall指令;edit指令支持通过命令行交互的方式编辑任务;- 采用 
Node.js、PHP、Java、Python实现一致的功能,包括todo命令的用法和db保存数据格式的统一; - 解决了 Windows 下无法添加 
todo命令到别名的问题。 
这个项目以及这份文档是面向零编程基础的,同时有接触过命令行的朋友,所以这份文档会尽量写得通俗易懂,这样难免会有些啰嗦,但对新手来说,足够细致的说明。
下面以 Node.js 版本为例。
- 
克隆项目到本地:
$ git clone git@github.com:liuzhilinux/my-todo.git
 - 
切换到项目中对应的
node目录:$ cd my-todo/node - 
现在可以开始通过命令行操作了,以下是所有命令的用例:
克隆项目到本地,并添加 3 个任务(
add):- 接女神
 - 接备胎
 - 和女神结婚
 
现在,戏精附体中...
你看了下列表,其中已完成和待完成的任务映入眼帘(
list),你和女神吃过饭逛过街了,幻想着和女神结婚指日可待,于是你将第 3 项任务标记为已完成(
done),但是天朝的房价把你拉回了现实,想要和女神结婚,你还要再奋斗几年,于是,你默默的将任务标记回待完成(
undone)。你再看一眼任务列表,发现你还要回去加班,但是你还想多陪女神一会,所以,去™的加班吧。
你默默的把第 6 项任务删除了(
delete)。你和女神腻歪了一整天,晚上回到家,瞅了一眼任务列表,发现第 4 项和第 5 项任务的内容有点表述不清,于是,你打算编辑它们(
edit)。 
这里主要讨论在 Windows 下的全局使用 todo 命令的方式,在 GNU/Linux 下全局使用 todo 命令可以自行了解 alias 的使用,这里不再赘述。
在 Windows 下想要添加 todo 命令到别名,从而达到全局使用 todo 命令的目的,主要有两种方法:
- 借助 
cmd下的DOSKEY命令; - 编写批处理脚本,并将脚本所在的路径添加到全局变量中;
 
第一种方法是需要修改注册表,这种方式不太友好,所以我选择了第二种方法,以下是演示步骤,还是以 Node.js 版本为例:
- 
将项目克隆到本地,这里假设你的工作目录为
C:\WorkSpaces\Test\20191011:> C: > cd C:\WorkSpaces\Test\20191011 > git clone git@github.com:liuzhilinux/my-todo.git > cd my-todo\node
 - 
建立文件
todo.bat,当然,如果你新克隆了项目到本地,那么在每个todo版本目录下都应该已经存在了这个文件(Java版本需要编译,将在后面有详细讲解):REM 关闭命令回显,同时不显示本条命令。 @echo off REM %~dp0 表示批处理所在的路径,%1 %2 %3 表示命令后的 3 个参数。 node "%~dp0todo" %1 %2 %3其实到这里,细心的朋友已经注意到了,如果是在命令行环境下跑
Node.js程序,原本的命令应该是:> node todo list或
> node todo.js list但是项目下的
node目录以及存在了todo.bat文件,所以你可以执行:> todo list相当于执行:
> node C:\WorkSpaces\Test\20191011\my-todo\node\todo.js list
其中,参数
list将通过%1传入给到todo.js脚本。 - 
现在,设置环境变量,以 Windows 10 为例,其他系统版本自行查找方法:
开始菜单 -> 设置 -> 系统 -> 关于 -> 系统信息 -> 高级设置
系统变量 ->选中 Path -> 编辑 -> 添加 -> 输入路径 -> 保存
接下来依次点击确定关闭窗口。
 - 
全局
todo命令配置完成,现在可以试试看了,记得重新打开命令行才有效果哦。 
下面是 java/todo.bat 里面的内容:
@echo off
REM 设置当前目录
SET here=%~dp0
REM 删除编译生成的 class 文件
REM 正式使用可以注释这 3 行
del %here%Todo.class
del %here%Todo$1.class
del %here%Todo$Task.class
REM 编译 java 源代码
REM 正式使用可以注释这行
javac "%here%Todo.java" -encoding UTF-8 -d "%here:~0,-1%"
REM 执行 java todo 命令
java --class-path "%here:~0,-1%" Todo %1 %2 %3
学习编程,最重要的是兴趣,然后是实践,最后是思考。只要对编程有兴趣,你才会坚持学习下去,也只有在实践中,你的技术才会进步,而最后思考,是最终使你达到不一样的境界。
JavaScript & Node.js
- Node.js 入门 - 写代码啦!
 - JavaScript | MDN
 - Node.js 官方英文文档
 - Node.js 中文文档
 - JavaScript教程 - 廖雪峰的官方网站
 - FreeCodeCamp 国外版
 - FreeCodeCamp 中文 one
 
Python
Java
PHP











