Nodejs是一个让JavaScript运行在服务器端的开发平台。 一、Windows系统下nodejs安装及环境配置 第一步:下载安装文件
下载nodejs,官网:http://nodejs.org/download/ 第二步:安装nodejs
双击“node-v0.12.2-x86.msi”,开始安装nodejs,安装路径为D:\\ProgramFiles\\nodejs 第三步:验证nodejs安装
第四步:验证npm安装
以上步骤已经配置好nodejs的环境了
安装相关环境:
出现上面问题的原因是版本问题,当前版本是4.12.3改成3.5.0
最新
express4.0
版本中奖命令工具分家出来了
(https://github.com/expressjs/generator),所以要使用新版本还需要安装一个命令工具,命令如下:npm install -g express-generator
注意:在这之前先删除express3.5.0 第五步:创建一个工程
默认情况下会自动创建如下文件:
第六步:编写一个demo测试
在test目录下新建HelloWorld.js 代码如下: var http=require(\"http\"); http.createServer(function(request,response){ response.writeHead(200,{\"Content-Type\":\"text/plain\ response.write(\"Hello World!\"); response.end(); }).listen(8888); console.log(\"nodejs start listen 8888 port!\");
在
浏
览
器
中
输
入
如
测试结果:
下
地
址
:
上面的代码搭建了一个简单的http服务器,在本地监听8888端口,对于任意的http请求,服务器都返回一个状态码为200、
Content-Type值为text/plain的“HelloWorld!”文字响应。 从这个小例子中,我们可以看出几点:
1、Nodejs的网络编程比较便利,短短几行代码就可以构建服务器。 2、体现了时间驱动,在createServer函数的参数中指定了一个回调函数,当有http请求发送过来时,Nodejs就会调用该回调函数来处理请求并响应。
二、Nodejs命令行工具: Node --help
显示了node的用法,运行Node.js程序的基本方法及时执行node [脚本文件名]
另一种输出方式:把执行的语句作为node –e 的参数直接执行。
三、使用node的REPL模式
Ctrl+c退出
Node.js的这种设计虽然有利于提高性能,却不利于开发调试 Supervisor可以实现这个功能,它会坚实你对代码的改动,并自动重启Node.js
四、Nodejs的调试命令 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的版本 五、事件驱动 1、事件发射器
events 模块只提供了一个对象: events.EventEmitter。EventEmitter 的核心就是事件发射与事件功能的封装。EventEmitter 的每个事件由一个事件名和若干个参数组成,事件名是一个字符串,通常表达一定的语义。对于每个事件,EventEmitter 支持若干个事件。当事件发射时,注册到这个事件的事件被依次调用,事件参数作为回调函数参数传递。 var events = require('events'); var emitter = new events.EventEmitter(); emitter.on('someEvent', function(arg1, arg2) { console.log('listener1', arg1, arg2); }); emitter.on('someEvent', function(arg1, arg2) { console.log('listener2', arg1, arg2); }); emitter.emit('someEvent', 'DHcc', 2001); emitter 为事件 someEvent 注册了两个事件,然后发射了 someEvent 事件。 六、HTTP服务器与客户端 HTTP服务端
http.server是http模块中的服务器对象。 1、 2、
http.Server的事件
http.ServerRequest:提供了3个事件用于控制请求体传输
data、end、close 3、
获取GET请求内容
http://127.0.0.1:3000/user?name=anna&password=123456
4、
获取POST请求内容
5、 http.ServerResponse
HTTP客户端
http模块提供了两个函数http.request和http.get,功能是作为客户端向HTTP服务器发起请求。
http.request(options,callback)发起请求。接受两个参数,option常用参数如下:
host:请求网站的域名或IP地址 port:请求网站的端口,默认80 method:请求方法,默认是GET
path:请求的相对于根的路径,默认是“/” headers:一个关联数组对象,为请求头的内容 七、使用Node.js进行Web开发 1、建立工程
使用如上命令安装的模板引擎是jade,而不是ejs,将命令改为: express -e microblog
然后继续运行cd microblog && npm install命令,ejs模板引擎就安装好了
但是express3以上的版本把layout默认给取消了,安装ejs后,如何使用ejs的layout模板
首先安装express-partials,运行命令npm install express-partials 然后在app.js里引用express-partials
(1)、添加引用var partials=require('express-partials'); (2)、添加app.use(partials()); 2、启动服务器
3、模板引擎
在app.js中通过用一下两个语句设置了模板引擎和页面模板的位置 app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'ejs'); 表明要使用的模板引擎是ejs,页面 模板在view子目录下。在routes/index.js中调用引擎
exports.index = function(req, res){ res.render('index', { title: 'Express' }); }; res.render 的功能是调用模板引擎,并将其产生的页面直接返回给客户端。它接收两个参数,第一个是模板的名称,即 views 目录下的模板文件名,不包含文件的扩展名;第二个参数是传递给模板的数据,用于模板翻译。index.ejs内容如下:
<%=title %>
Welcome to <%=title %>
上面代码其中有两处 <%= title %>,用于模板变量显示,它们在模
板翻译时会被替换成 Express,因为 res.render 传递了 { title: 'Express' }。 ejs有以下3中标签: <% code %>:JavaScript代码
<%= code %>:显示替换过的HTML特殊字符的内容 <%- code %>:显示原始HTML内容