天天看点

Node 研究体会

1、node安装,去官网下载安装包即可。

2、简单测试。在磁盘某个目录下(例如:D:\nodejs)新建一个JavaScript文件,即后缀为.js的文件,复制下来代码,在浏览器中输入http://127.0.0.1:8888/即可看到执行情况。

     注意,同一目录下新建input.txt文件用来读取文件数据。

var fs = require("fs");

var data = fs.readFileSync('input.txt');

console.log(data.toString());

console.log("程序执行结束!");

fs.readFile('input.txt', function (err, data) {

    if (err) return console.error(err);

    console.log(data.toString());

});

console.log("程序执行结束!");

var http = require('http');

http.createServer(function (request, response) {

    // 发送 HTTP 头部 

    // HTTP 状态值: 200 : OK

    // 内容类型: text/plain

    response.writeHead(200, {'Content-Type': 'text/plain'});

    // 发送响应数据 "Hello World"

    response.end('Hello World\n');

}).listen(8888);

// 终端打印如下信息

console.log('Server running at http://127.0.0.1:8888/');

3、在项目目录下使用npm  init命令初始化package.json.

4、在该项目中安装node的模块,“npm install xxx”会将xxx模块安装到当前路径下,“npm install -g xxx”则将xxx模块安装到当前用户的全局位置。使用“npm helo install”可以查看install子命令的细节。要卸载一个模块,使用“npm uninstall xxx”,假如你是全局安装,则使用“npm uninstall -g xxx”。

在使用npm安装某个模块时,它会自动解决依赖。

  注意:安装全局的模块需要配置环境变量才能使用。即-g命令全局安装Node.js模块后,需要设置环境变量NODE_PATH,否则在我们使用node命令启动某个应用时可能会报找不到指定的模块这种错误。要在NODE_PATH中添加多个模块路径,只需用“;”分隔开即可。

5、安装mime模块,加载html页面的不同类型文件(css,js)相应。npm install mime

6、安装ejs模块,使用模版,进行页面动态响应。npm install ejs

7、实例,读取本地html文件响应,代码如下,读取图片不需要转字符串。

var http = require('http');

var fs = require('fs');

var url = require('url');

var path = require('path');

var mime=require('mime');

var ejs = require('ejs');

http.createServer(function (request, response) {

   // 解析请求,包括文件名

   var pathname = url.parse(request.url).pathname; 

   //输出请求的文件名 

   //从文件系统中读取请求的文件内容

    fs.readFile(pathname.substr(1), function (err, data) {

if (err) { 

// HTTP 状态码: 404 : NOT FOUND Content Type: text/plain 

response.writeHead(404, {'Content-Type': 'text/html'});

//  发送响应数据

response.end("NOT FOUND Content"); 

}else{

var fileTmpMime=path.basename(pathname);   

var resMime=mime.getType(fileTmpMime);  

response.writeHead(200,{"Content-Type":resMime}); 

//发送响应数据 

if(resMime.indexOf("image") >= 0){

response.end(data);

}else if(resMime.indexOf("/html") >= 0){ 

   var context = {name:'李建成'};  

    //替换模版中的内容,返回替换后的html字符串

   var tmpHtml=ejs.render(data.toString(), context); 

                            //使用替换后的html内容响应请求。

   response.end(tmpHtml); 

}else{

   response.end(data.toString()); 

   });

}).listen(8888);

8、安装express 模块,npm install express

9、测试实例代码

// 引入 express 模块

var express = require('express');

// 创建 express 实例

var app = express();

// 响应HTTP的GET方法

app.get('/', function (request, response) {

  response.send('Hello World 李建成!');

});

// 监听到8000端口

app.listen(8888, function () {

  console.log('Hello World is listening at port 8888');

});

继续阅读