1.HelloWorld
方法1,直接运行
安装好node js后,在cmd命令窗口输入node.
然后你可以直接输入:console.log('Hello World');
方法2,执行js
或者把他写在一个helloworld.js里,cmd模式输入(注意看到$,不是nodejs命令,仅仅普通cmd命令):
$ node helloworld.js
你都能看到输出结果
支持变量写法
console.log('%s: %d', 'Hello', 25);
另外直接作为字符串执行:$ node -e "console.log('Hello World');"
2.建立Http服务器
//app.js
接下来运行node app.js命令,打开浏览器访问
http://127.0.0.1:3000
Node.js 只有在第一次引用到某部份时才会去解析脚本文件,以后都会直接访问内存,避免重复载入Node.js的这种设计虽然有利于提高性能,却不利于开发调试,因为我们在开发过程中总是希望修改后立即看到效果,而不是每次都要终止进程并重启。
supervisor 可以帮助你实现这个功能,它会监视你对代码的改动,并自动重启Node.js。
使用方法很简单,首先使用npm 安装supervisor:
$ npm install -g supervisor
接下来,使用supervisor 命令启动app.js:
$ supervisor app.js
1.
var
http = require(
'http'
);
2.
http.createServer(
function
(req, res)
3.
{
4.
res.writeHead(200, {
'Content-Type'
:
'text/html'
});
5.
res.write(
'<h1>Node.js</h1>'
);
6.
res.end(
'<p>Hello World</p>'
);
7.
}).listen(3000);
8.
console.log(
"HTTP server is listening at port 3000."
);
Node.js 只有在第一次引用到某部份时才会去解析脚本文件,以后都会直接访问内存,避免重复载入Node.js的这种设计虽然有利于提高性能,却不利于开发调试,因为我们在开发过程中总是希望修改后立即看到效果,而不是每次都要终止进程并重启。
supervisor 可以帮助你实现这个功能,它会监视你对代码的改动,并自动重启Node.js。
使用方法很简单,首先使用npm 安装supervisor:
$ npm install -g supervisor
接下来,使用supervisor 命令启动app.js:
$ supervisor app.js
3.非阻塞单线程异步编程
让我们看看在Node.js 中如何用异步的方式读取一个文件,下面是一个例子:
//readfile.js
输出:
end.
Contents of the file.
其中的function就是回调函数,不会阻塞等待的
输出:
Contents of the file.
end.
//readfile.js
01.
var
fs = require(
'fs'
);
02.
fs.readFile(
'file.txt'
,
'utf-8'
,
function
(err, data)
03.
{
04.
if
(err)
05.
{
06.
console.error(err);
07.
}
else
08.
{
09.
console.log(data);
10.
}
11.
});
12.
console.log(
'end.'
);
end.
Contents of the file.
其中的function就是回调函数,不会阻塞等待的
1.
var
fs = require(
'fs'
); 异步写法。当然这个读取文件也有同步写法,如下:
2.
vardata = fs.readFileSync(
'file.txt'
,
'utf-8'
);
3.
console.log(data);
4.
console.log(
'end.'
);
Contents of the file.
end.
6.调试
Node.js 支持命令行下的单步调试。在命令行下执行node debug xxx.js,将会启动调试工具.
Node.js 调试命令
run 执行脚本,在第一行暂停
restart 重新执行脚本
cont, c 继续执行,直到遇到下一个断点
next, n 单步执行
step, s 单步执行并进入函数
out, o 从函数中步出
setBreakpoint(), sb() 在当前行设置断点
setBreakpoint(‘f()’), sb(...) 在函数f的第一行设置断点
setBreakpoint(‘script.js’, 20), sb(...) 在script.js 的第20行设置断点
clearBreakpoint, cb(...) 清除所有断点
backtrace, bt 显示当前的调用栈
list(5) 显示当前执行到的前后5行代码
watch(expr) 把表达式 expr 加入监视列表
unwatch(expr) 把表达式 expr 从监视列表移除
watchers 显示监视列表中所有的表达式和值
repl 在当前上下文打开即时求值环境
kill 终止当前执行的脚本
scripts 显示当前已加载的所有脚本
version 显示V8 的版本
远程调试:
node --debug[=port] xxx.js
开发工具调试:
如果开发工具支持,可以在开发工具调试,比如eclipse(我会尝试idea是否可行)
使用node-inspector 调试Node.js:
使用 npm install -g node-inspector 命令安装node-inspector,然后在终端中通过node --debug-brk=5858 xxx.js 命令连接你要除错的脚本的调试服务器
启动node-inspector:$ node-inspector
在浏览器中打开 http://127.0.0.1:8080/debug?port=5858,即可显示出优雅的Web 调试工具
Node.js 调试命令
run 执行脚本,在第一行暂停
restart 重新执行脚本
cont, c 继续执行,直到遇到下一个断点
next, n 单步执行
step, s 单步执行并进入函数
out, o 从函数中步出
setBreakpoint(), sb() 在当前行设置断点
setBreakpoint(‘f()’), sb(...) 在函数f的第一行设置断点
setBreakpoint(‘script.js’, 20), sb(...) 在script.js 的第20行设置断点
clearBreakpoint, cb(...) 清除所有断点
backtrace, bt 显示当前的调用栈
list(5) 显示当前执行到的前后5行代码
watch(expr) 把表达式 expr 加入监视列表
unwatch(expr) 把表达式 expr 从监视列表移除
watchers 显示监视列表中所有的表达式和值
repl 在当前上下文打开即时求值环境
kill 终止当前执行的脚本
scripts 显示当前已加载的所有脚本
version 显示V8 的版本
远程调试:
node --debug[=port] xxx.js
开发工具调试:
如果开发工具支持,可以在开发工具调试,比如eclipse(我会尝试idea是否可行)
使用node-inspector 调试Node.js:
使用 npm install -g node-inspector 命令安装node-inspector,然后在终端中通过node --debug-brk=5858 xxx.js 命令连接你要除错的脚本的调试服务器
启动node-inspector:$ node-inspector
在浏览器中打开 http://127.0.0.1:8080/debug?port=5858,即可显示出优雅的Web 调试工具