node.js介绍

用node js设计网页

设计路由(根据用户请求,做出响应)

1、请求方法
2、请求路径

node.js是什么?

1、node.js 是一个开发平台,就像JAVA开发平台、.Net开发平台、PHP开发平台、Apple开发平台一样。

  • 何为开发平台?有对应的编程语言、有语言运行时、有能实现特定功能的API(SDK:Software Development Kit)

2、该平台使用的语言是JavaScript语言。

3、node.js平台是基于Chrome V8 JavaScript 引擎构建。

4、基于node.js可以开发控制台程序(命令行程序、CLI程序)、桌面应用程序(GUI)(借助 node-webkit、electron 等框架实现)、Web应用程序(网站)

PHP开发技术栈:LAMP - Linux Apache MySQL PHP)
node.js全栈开发技术栈:MEAN - MongoDB Express Angelar Node.js

node.js有哪些特点?

1、事件驱动(当事件被触发时,执行传递过去的回调函数)
2、非阻塞I/O模型(当执行I/O操作时,不会阻塞线程)
3、单线程
4、拥有世界最大的开源库生态系统——npm

node.js 网站

1、[node.js官方网站](https://nodejs.org/)
2、[node.js中文网](http://nodejs.cn/)
3、[node.js中文社区](https://cnodejs.org/)

为什么要学习node.js?

1、通过学习node.js开发深入理解服务器开发web请求和响应过程了解服务器端如何与客户端配合
2、学习服务器端渲染
3、学习服务器端为客户端编写接口
4、现在前端工程师面试,对node.js开发有要求

在node.js上编写程序

REPL介绍

1、REPL全称:Read-Eval-Print-Loop(交互式解释器)

  • R 读取 - 读取用户输入,解析输入了JavaScript 数据结构并存储在内存中
  • E 执行 - 执行输入的数据结构
  • P 打印 - 输出结果
  • L 循环 - 循环操作以上步骤直到用户两次按下Ctrl-c 按钮退出

2、在REPL中编写程序(类似于浏览器开发人员工具中的控制台功能)+ 直接在控制台输入node命令进入REPL环境

3、按两次Control+C退出REPL界面或者输入.exit退出REPL界面

  • 按住Control键不要放开,然后按两下C键

创建JavaScript文件编写程序

编写注意事项

  • 配置一下Sublime Text 的代码缩进格式为两个空格
  • 方式一
    ![@配置方式一](imgs/sublimeconf1.png)
  • 方式二
    ![@配置方式二 - 第一步](imgs/sublimeconf21.png)
    ![@配置方式二 - 第二步](imgs/sublimeconf22.png)

JavaScript 文件命名规则

  • 不要用中文
  • 不要包含空格
  • 不要出现node关键字
  • 建议以‘-’分割单词

案例

1、案例1:编写一个简单函数实现数字相加

var n = 10;
var m = 100;

function add(x,y) {
   return x + y;
}

var result = add(m,n);

console.log('计算结果是:' + result);

2、案例2:文件读写案例
使用到的模块 var fs = require('fs');

  • 1、写文件:fs.writeFile(file,data[,options],callback;
    • 参数1:要写入的文件路径,必填
    • 参数2:要写入的数据,必填
    • 参数3:要写入文件时的选项,比如:文件编码,选填
    • 参数4:文件写入后的回调函数,必填
    • 写文件注意:
      • 该操作采用异步执行
      • 如果文件已经存在则替换掉
      • 默认写入的文件编码为utf-8
      • 回调函数有一个参数:err,表示在写入文件的操作过程中是否出错了
        • 如果出错了err != null,否则err === null
//                        实现文件写入操作
// 1.加载文件操作模块, fs 模块。
var fs =require('fs');

// 2.实现文件写入操作
var msg = 'hello world,你好世界!':

// 3.调入 fs.writeFile() 进行文件异步写入
fs.writeFile('./hello.tex',msg,'utf8',function(err){
// 如果err === null ,表示写入文件成功,没有错误。
// 只要 err 里面不是 null ,就表示写入文件失败了。
if (err){
   console.log('写文件出错,具体错误:' + err);
} else {
console.log('ok');
}
});
  • 2、读文件:fs.readFile(file[,options],callback);
    • 参数1:要读取的文件路径,必填
    • 参数2:要写入的数据,必填
    • 参数3:文件读取完毕后的回调函数
    • 读文件注意:
      • 该操作采用异步执行
      • 回调函数有两个参数,分别是 err 和 data
      • 如果读取文件时没有指定编码,那么返回的将是原生的二进制数据;如果指定了编码,那么会根据指定的编码返回对应的字符串数据。
//                          实现文件读取操作
// 1.加载文件操作模块, fs 模块。
var fs =require('fs');

// 3.调用 fs.readFile() 方法来异步读取文件
// fs.readFile(file[,options],callback)
fs.readFile('./hello.tex','null',function (err,data){
  if (err) {
     throw err;
}
// data 参数的数据类型是一个 buffer 对象,里面保存的是一个一个的字节(理解为字节数组)
// 把 buffer 对象转换为字符串,调用 toString() 方法
// console.log(data);
// 调用 buffer 对象的 toString( )方法的时候,不传 utf8 参数,默认也是 utf8
console.log(data.toString('utf8'));
});
//                           读取文件时传入 utf8 编码
// 在读取文件的时候,如果传递了编码,那么回调函数中的 data 默认就会转换为字符串
fs.readFile('./hello.tex','utf8',function (err,data){
  if (err) {
     throw err;
}
console.log(data);
});

__dirname和__filename获取正在执行的js文件的路径

// 读写文件中的路径问题
var fs = require('fs');
// 此处的./相对路径,相对的是执行node命令的路径
// 而不是相对于正在执行的这个 js 文件来查找 hello.txt
fs.readFile('./hello.tex','utf8',function(err,data){
   if (err){
      throw err;
   }
console.log(data);
}
// 解决在文件中读取 ./ 相对路径的问题
// 解决:__dirname、__filename
// __dirname:表示,当前正在执行的 js 文件所在的目录
// __filename:表示,当前正在执行的 js 文件的完整路径
var fs = require('fs');

var filename = __dirname + '\\' + 'hello.txt';
fs.readFile(filename,'utf8',function(err,data){
   if (err){
      throw err;
   }
console.log(data);
}

__dirname和__filename并不是全局的

由于不同系统下文件路径名的书写方法不同

// 通过path模块进行路径拼接
var fs = require('fs');
// 加载 path 模块
var path = require('path');

// var filename = __dirname + '\\' + 'hello.txt';
var filename = path.join(__dirname,'hello.txt');
console.log(filename);

4、案例4:创建目录案例

// 创建一个文件夹

// 加载文件操作模块
var fs = require('fs');

//创建一个目录
fs.mkdir('test-mkdir',function(err){
   if (err){
       console.log('创建目录出错,详细信息如下:');
       console.log(err);
   }  else  {
       console.log('目录创建成功!');
   }
});

通过node.js编写http服务程序

步骤:
1、加载http模块
2、创建http服务
3、为http服务对象添加 request 事件处理程序
4、开启http服务监听,准备接受客户端请求

注意:
1、浏览器显示可能是乱码,所以可以通过res.setHeader('Content-Type','text/plain;charset=utf-8');设置浏览器显示时所使用的编码。

2、Chrome 浏览器默认无法手动设置编码,需要安装"Set character Encoding"扩展。

// 创建一个简单的http服务器程序

// 1、加载http模块
var http = require('http');

//2、创建一个 http 服务对象
var server = http.createServer();

// 3、监听用户的请求事件(request事件)response
// request 对象包含了用户请求报文中的所有内容,通过这个对象可以获取所有用户提交过来的数据
// response 对象用来向用户响应一些数据,当服务器要向客户端响应数据的时候必须使用 response 对象
// 有了request 对象和 response 对象,就既可以获取用户提交的数据,也可以向用户响应数据
server.on('request',function(req,res){

  res.write('hello world!');
// 对于每一个请求,服务器必须结束响应,否则客户端(浏览器)会一直等待服务器响应结束
  res.end();
});

// 4、启动服务
server.listen(8080,function(){
   console.log('服务器启动了,请访问:http://localhost:8080');
});

你可能感兴趣的:(node.js介绍)