Node.js介绍

一、NodeJS基本介绍

1、NodeJS是为了开发高性能的服务器而诞生的一种技术

2、是运行在服务端的 JavaScript,基于V8(谷歌浏览器的版本)进行运行

3、使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效

什么是nodejs?

1.Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境 v8解析js是最快的
2.nodejs是让js运行在服务器端
3.nodejs里面的API大多数都是异步

二、前端学习node的意义

1.1 开发沟通:开发时更容易理解后端实现,降低交流成本
1.2了解浏览器端和服务器端的交互过程 可以缩短开发周期
1.3出现bug 可以快速定位是前端问题还是后端问题
2.1后端开发:想写些自己感兴趣的项目时,可以自己独立完成,即使没有后端支持,且成本特别低。
2.2 nodejs和其它后端语言拥有一样的功能 可以做数据库的增删改善 爬虫 读写文件…
3、 中间层开发:为了进一步的前后端分离,提高性能,使用nodejs做中间层是一个非常好的实践(由于nodejs具有异步io的特点)

三、使用node的方式

1、 在node交互模式下运行(类似于命令窗口),这种方式类似于浏览器控制台,一般是用于运行单独的代码段。
2、 单独创建一个node文件,其实就是一个不包含bom与dom的js文件,然后使用node 文件名.js来运行,当然你也可以不给js后缀,这种方式一般是用于运行一个独 立的nodejs文件
3.执行方式
3.1打开命令框(CMD)
3.2.输入 node 回车
3.3.输入js代码 按回车执行
3.4.退出node环境 使用后ctrl+c(按两次)

使用node.js读取
// 导入模块  require("模块名")  模块名是nodejs内部规定死的 不能动
// 左边保存的变量可以修改 但是通常情况下和模块名保持一致

const fs = require('fs');

// 参数1 : 需要被读取的文件的路径
// 参数2 : 可选参数  我们这里给的是编码格式
// 参数3 : 回调函数 里面有连个参数 err 表示读取失败时返回的信息  data是读取到的文件信息

fs.readFile("./novels/01.txt","utf-8",  (err, data) => {
    // console.log(err);
    // console.log(data);
  
    if(!err) {
        console.log(data);
    }  else {
        console.log("文件读取失败");   
    }
})
console.log("底部的代码");

// nodejs里面 如果有sync结尾的方法都是同步的方法
// 同步方法用得并不多
var novel = fs.readFileSync("./novels/01.txt", "utf-8");
console.log(novel);
console.log("底部的代码");
使用node.js写入
// 导入fs模块
const fs = require("fs");
// 参数1 : 存入信息或者数据的文件路径
// 参数2 : 需要写入的数据
// 参数3 : 回调函数

fs.writeFile("./novels/03.txt", "鹅鹅鹅,曲项向天歌,白毛浮绿水,红掌拨清波", err => {
    // console.log(err);
    if(!err) {
        console.log('写入成功');
    } else {
        console.log("写入失败");  
    }
})
console.log("底部的代码");

http请求获取文件
//导入文件模块
const fs = require("fs");

//导入http模块
const http = require("http");

//创建http服务
const server = http.createServer((request,response) =>{

    //1.设置响应头 服务器为了告诉浏览器 我返回给你的数据 你用utf-8来解析
    response.setHeader("content-type","text/html;charset=utf-8");
    console.log(request.url);
    
    //请求路径   
    let reqUrl = request.url;
    if(reqUrl === "/index.html")
    {
        fs.readFile("./www/index.html","utf-8",(err,data) => {
            response.end(data);
        })
    }else if(reqUrl === "/index.css")
    {
        response.setHeader("content-type","text/css;charset=utf-8");
        fs.readFile("./www/index.css",(err,data) => {
            response.end(data);
        })
    }
    // response.end("刚好遇见你");
})
//开启服务器
server.listen("80",() => {
    console.log("start");    
})
node.js模块问题以及模块路径

node.js模块问题

//导入文件模块
const fs = require("fs");

fs.readFile(__dirname + "\\www\\01.txt","utf-8",(err,data) => {
    console.log(data);
})

console.log(__dirname + "\\www\\01.txt");
console.log(__dirname);

//nodejs里面的相对路径 是相对于当前运行node命令的终端所处的相对路径
//为了保证在任何地方打开终端 都可以运行 那么我们的路径使用绝对路径
//问题: 万一文件夹存在其他地方 绝对路径也不可靠 解决办法: __dirname
//__dirname 是当前文件所在的文件的绝对路径
//__filname 是当前文件的绝对路径

node.js模块路径

//导入文件模块
const fs = require("fs");
const path = require("path");

const pathName = path.join("name","info","assets","index.html");

console.log(pathName);

//在使用到路径的地方 使用绝对路径 
const txtPath = path.join(__dirname,"www","01.txt");
console.log(txtPath);

//读取文件
fs.readFile(txtPath,"utf-8",(err,data) => {
    if(!err)
    {
        console.log(data);
        
    }else{
        console.log(err);
        
    }
})

模拟web获取页面信息
//导入文件模块
const http = require("http");
const fs = require("fs");
const path = require("path");


//创建http服务
const server = http.createServer((request,response) =>{
    const reqUrl = request.url;
    if(reqUrl === "/index.html")
    {
        //读取index.html页面的内容
        fs.readFile(path.join(__dirname,"www",reqUrl),(err,data) => {
            if(!err)
            {
                response.end(data);
            }else{
                response.end(`404 Not Found ${reqUrl} was not found on this server`)
            }
        })
    }

})

//开启服务器
server.listen("4399",() => {
    console.log("start");
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值