Node.js学习笔记

目录

node 是什么?                                                                               

node 可以做什么?                                                                        

node 学习重点:                                                                                     

常用的终端快捷键语句                                                                  

模块的分类                                                                                     

内置模块  :node官方提供的模块                                                     

fs 模块 (官方提供),用于操作文件

路径问题

 path 模块                                                                                                                        

自定义模块: 开发人员定义的模块                                                    

module.exports 和 exports的区别

第三方模块:由第三方开发,使用前需要下载                                   

模块作用域                                                                                    

node服务器                                                                                    

前言导入:

引入模块: 

响应内容中文乱码问题:


node 是什么?                                                                               

  1. node.js 是一个基于Chrome v8 引擎的 JavaScript 运行环境。
  2. 运行环境:指代码可以正常运行所需要的必要环境。
  3. 前端开发:js在浏览器中运行
  4. 后端:js在node服务器中运行

node 可以做什么?                                                                        

  • 基于Express框架,可以快速构建web应用。
  • 基于Eletorn 框架,快速构建桌面应用。
  • 可以读写数据库
  • 操作系统文件
  • 爬虫
  • 命令行工具

node 学习重点:                                                                                     

  1. 语法
  2. 内置API
  3. 第三方api模块(Express 、MySQL)

终端运行Js文件: node js文件路径

常用的终端快捷键语句                                                                   

  1. 进入目录:  cd  目录名
  2. 跳出当前目录: cd  ../
  3. 清屏: csl
  4. 上下键:切换命令历史记录
  5. 清空当前输入的命令:esc

模块的分类                                                                                     

  • 内置模块  :node官方提供的模块                                                     

引入格式 : require("模块名");

不成文的规范:将引入的模块赋值给一个变量,变量名与文件名相同 

fs 模块 (官方提供),用于操作文件

它提供了一系列的属性和方法,用于满足用户对文件的操作需求。

【注意:】使用前一定先引入模块:

var fs =require("fs")

1.读取文件:readFile ( path [,option] , callback )

  1. path :必选,读取的文件路径
  2. option : 可选,配置编码等信息;
  3. callback :读取之后的回调哈桑农户,回调函数中有两个参数  : err(错误信息)  和 data(读取的数据)

       { 如果读取成功, err 的值为null

        如果读取失败:err的值为错误信息对象。data 为undefined}

var fs =require("fs");
fs.readFile("./a.js","utf-8",(err,data)=>{
  if(err){
    console.log("报错信息:"+err); //如果读取错误,打印出报错信息
      return;
  }
  console.log(typeof data);
});

2.写入文件:writeFile(path , data , 字符集 , callback函数) 会覆盖原来的内容

  1. path :必选,写入的文件路径  (若指定路径中文件不存在则会在该路径中创建文件,但若路径为找到,则报错)
  2. data: 要写入文件中的内容
  3. 字符集:utf-8;
  4. callback  方法执行后的回调函数,该回调函数只有一个参数:err 表示错误信息。

3.追加文件:appendFile(data[, options])使用方法与writeFile相同

4.删除文件:unlink(path , callback)

  1. path :必选,要删除的文件路径 
  2. callback  方法执行后的回调函数,该回调函数只有一个参数:err 表示错误信息。

5.创建文件夹:mkdir(路径,callback) 回调函数如果出现错误,可以用err参数接收

6.重命名:rename(需要修改名字的文件路径 , 新文件名,callback)

路径问题

node 中,使用相对路径会存在一定的问题:当我们不在js所在目录下打开命令行时,执行js文件,相对路径不是相对js文件,而是相对命令行打开的目录

__dirname : 当前文件所在目录的绝对路径 (运行的js文件的所在上级目录)

但是字符串拼接路径不够灵活  —— 采用path模块的jion()方法更加灵活

 path 模块                                                                                                                        

包含一系列的处理和转换文件路径的方法

导入模块:require(“path”);

在不同的操作系统下路径分隔符不同,window 下是 / \\  ;linux 是/

  1. 获取路径文件的扩展名 :extname(路径)
  2. 返回路径中的最后一部分: basename(路径,【ext】)  (如果ext 不为空,则返回的是不包含扩展名文件名,否则返回包含扩展名的文件名)
  3.  jion(路径1,路径2,... )  路径以字符串的形式拼接,支持多个参数实现字符串连接
let path = require("path");
var fpath = path.join(__dirname,url);  //url 表示需连接的目录字符串

  • 自定义模块: 开发人员定义的模块                                                    

  • 在node下,每个js文件中都有一个module对象,
  • 该对象下有个export属性 (默认为空对象)
  1. 导出:module.exports.属性名 = 属性值
  2. 导入:require("自定模块路径【.js文件后缀可省略不写】")

外界使用require方法导入自定义模块时,得到的就是module.exports指向的对象

【注意】

1.使用require引入模块是,会执行该模块下的代码

2.模块是有缓存的,多次导入只会执行一次

module.exports 和 exports的区别

  • 共同点:

  1. 都是用来导出成员。
  2. 默认情况下,module.exports 和exports 指向的是同一个对象
  • 区别:
  1. exports 导出右边不能直接赋值一个对象,但是module.exports 可以。
  2. 两者同时使用时,如果指向的对象不是同一个,以module.exports wei'zhun

  • 第三方模块:由第三方开发,使用前需要下载                                   

npmjs.com  第三方模块仓库

模块作用域                                                                                    

在自定义模块中的变量,函数,对象等成员,只能在模块中使用,模块级别的访问限制称为模块作用域。

Node的艺术:art-of-node/readme.zh-cn.md at master · maxogden/art-of-node · GitHub(node 的工作原理解析)

node服务器                                                                                    

前言导入:

请求:客户端给服务端发送数据

响应:服务端返回给客户端相应的请求数据

在开发过程中,客户端(前端一般指的是浏览器)和服务端(一般会安装web服务器软件,如:Apache等)

但是在node中,可以直接通过http内置模块,轻松搭建服务器。

引入模块: 

let http = require("http")
  • 创建服务器对象 /实例:createServer(callback(request,response){}).listen(端口号,启动成功后的回调函数)   方法
  1. 回调函数参数一:request:客户端请求信息对象
  2. 回调函数参数二:response:服务器响应信息对象;{使用end()方法, write()方法 ,将内容响应给客户端  (write()方法可多次调用,但是end()只能调用一次,后面就不能调用响应方法end()或write()),}
  • 服务器对象.listen(端口号,callback)服务端启动必须添加端口监听

【注意】:只要js文件发生了改变,就需要重启服务器,才能将修改后的文件生效。

let fs = require("fs");
let http =require("http");
let path = require("path");

http.createServer((request,response)=>{
  response.setHeader('Content-Type','text/html;charset=UTF-8;');
  var url = request.url;
  if(url == "/"){
    url = "/buycarV3.html";
  }
  var fpath = path.join(__dirname,url);
  
  fs.readFile(fpath,"utf-8",(err,data)=>{
    if(err){
      respond.end("报错信息为:"+err);
      return;
    }
    response.end(data);
    console.log("页面加载成功");
  });
}).listen(3000,()=>{
  console.log("服务器启动成功");
});

路由

根据客户端的请求方式和请求路径不同,响应不同的资源(内容)

请求路径:

请求对象 request中url属性中存储着请求对象的路径(端口号后面的内容)

请求方式:

  1. get:
  2. post:

响应内容中文乱码问题:

服务器创建时,设置响应信息对象 

respond.setHeader('Content-Type','text/html;charset=UTF-8;');

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值