初见 nodejs

来源:互联网 发布:php网站提权 编辑:程序博客网 时间:2024/06/05 10:41

安装

nodejs

node-v5.7.0-x64.msi

nvm

为了方便切换nodejs的多个版本,可以采用多版本管理器。
Node Version Manager(Node版本管理工具)

环境变量的配置

NVM_HOME = 当前 nvm.exe 所在目录NVM_SYMLINK = node 快捷方式所在的目录PATH += %NVM_HOME%;%NVM_SYMLINK%;NVM_HOMEC:\nvm\NVM_SYMLINKC:\Program Files\nodejsPATH%NVM_HOME%;%NVM_SYMLINK%;

python

一些概念

CommonJS

为了统一 JavaScript 在浏览器之外的实现,CommonJS 诞生了。CommonJS 试图定义一套普通应用程序使用的API,从而填补 JavaScript 标准库过于简单的不足。CommonJS 的终极目标是制定一个像 C++ 标准库一样的规范,使得基于 CommonJS API 的应用程序可以在不同的环境下运行,就像用 C++ 编写的应用程序可以使用不同的编译器和运行时函数库一样。

第一个js程序

REPL模式

REPL (Read-eval-print loop),即输入—求值—输出循环。Node.js 也有这样的功能,运行无参数的 node 将会启动一个 JavaScript的交互式 shell

$ node> console.log('Hello World');Hello Worldundefined> consol.log('Hello World');ReferenceError: consol is not definedat repl:1:1at REPLServer.eval (repl.js:80:21)at repl.js:190:20at REPLServer.eval (repl.js:87:5)at Interface.<anonymous> (repl.js:182:12)at Interface.emit (events.js:67:17)at Interface._onLine (readline.js:162:10)at Interface._line (readline.js:426:8)at Interface._ttyWrite (readline.js:603:14)at ReadStream.<anonymous> (readline.js:82:12)

进入 REPL 模式以后,会出现一个“>”提示符提示你输入命令,输入后按回车,Node.js将会解析并执行命令。如果你执行了一个函数,那么 REPL 还会在下面显示这个函数的返回值,上面例子中的 undefined 就是 console.log 的返回值。如果你输入了一个错误的指令,REPL 则会立即显示错误并输出调用栈。在任何时候,连续按两次 Ctrl + C 即退出 Node.js 的 REPL 模式。

简单 HTTP 服务器

// 定义服务器var http = require('http');http.createServer(function(req,res) {    // HTTP 协议响应头    res.writeHead(200, {'Content-Type': 'text/html'});    // 服务器返回的数据    res.write('<h1>nodejs</h1>');    // 数据发送结束    res.end();    // 监听3000接口}).listen(3000);console.log("Http server is listen 3000");

执行如下代码:
node app.js

打开浏览器,访问 http://localhost:3000/,即可看到服务器返回的页面。

文件监听工具

// 安装npm install -g supervisor// 执行文件supervisor app.js

事件与事件式编程

采用事件通知的方式来处理 I/O,服务器 等

模块

模块是 nodejs 中的基本组成成分,一个文件就是一个模块。在node中,模块可能是 JS代码,JSON 或者 编译过的 C/C++ 扩展。

定义模块 module.js

// 模块的成员变量var name = '';// 模块的成员方法exports.setName = function(myName) {    // 可以使用名字    name = myName;}// 模块的成员方法exports.sayHello = function() {    console.log('Hello ' + name);}

使用模块:

var myModule = require("./module.js");myModule.setName("Jack");myModule.sayHello();

【注意】 require 不会重复加载模块。获取的模块都是同一个。

包管理器

npm [install/i] [package_name]例如:npm install express会将包安装到当前目录下的 node_modules 目录下// 全局安装,将模块安装到系统目录下npm install -g express

调试

命令行调试

// 进入调试模式node debug app.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] script.jsnode --debug-brk[=port] script.jsnode app.jsnode --debug-brk app.jsnode --debug 127.0.0.1:5858

资源

http://nodejs.org/api/
标准的nodejs接口文档

https://www.byvoid.com/en/project
《NodeJS开发指南》源代码

http://cnodejs.org/
中国nodejs开发者论坛

0 0
原创粉丝点击