初识node.js

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境

  • 列举以前跟现在一个程序员需要具备什么技术条件

以前:后台—MVC+layui
现在:后台—Spring Boot/Spring code+vue
以前:前端—h5+c3+js+jq+bootstrip+PHP
现在:前端—h5+c3+es6+nodejs+element-UI+vue+微信小程序

node.js执行方式

执行方式一: ctrl+`打开控制台,cd切换到当前文件目录,node 文件名
执行方式二: 查找到文件夹,在文件路径输入cmd,node 文件名
执行方式三: 按住shift右键,打开powershell,node 文件名 执行方式四: window+r,输入cmd,cd切换到当前文件目录,node 文件名

node.js的实用小功能

D: 切换D盘目录 dir 查看当前目录的所有文件
cd 文件名 进入下一级目录
cd … 返回上一级目录 cls 清除控制台记录
tab键可以快速生成执行的路径
使用 esc 键,能够快速清空当前已输入的命令
使用 ↑ 键,可以快速定位到上一次执行的命令
ctrl+左右键,可以快速定位到特殊字符前

fs.readFile(“路径”,“编码格式”,function(err,user){}) 方法,用来读取指定文件中的内容

// 参数1:必选参数,字符串,表示文件的路径。 // 参数2:可选参数,表示以什么编码格式来读取文件。 //
参数3:必选参数,文件读取完成后,通过回调函数拿到读取的结果 // err返回null,读取文件成功,报错读取失败

const fs = require("fs");
console.log(fs);
 fs.readFile("./1.txt","utf8",function(err,user){
    if(err){
        return console.log("文件读取失败"+err.message);
   }
    console.log(user);
 })
 fs.readFile("./day01.html","utf-8",function(err,user){
     if(err){
        return console.log("文件读取失败"+err.message);
    }
    console.log(user);
 })

fs.writeFile(“路径”,“内容”,“编码格式”,function(err){}) 方法,用来向指定的文件中写入内容

// 参数1:必选参数,需要指定一个文件路径的字符串,表示文件的存放路径。 // 参数2:必选参数,表示要写入的内容。 //
参数3:可选参数,表示以什么格式写入文件内容,默认值是 utf8。 // 参数4:必选参数,文件写入完成后的回调函数 //
err返回null,写入文件成功,报错写入失败

 fs.writeFile("1.txt","张三现在疯了,李四飘了,王五现在没事打毛衣","utf8",function(err){
     console.log(err);
 })
 fs.writeFile("./day02.html","张三现在疯了,李四飘了,王五现在没事打毛衣","utf8",function(err){
    console.log(err);
 })

创建模块

const path = require(“path”);

path.join() 方法,用来将多个路径片段拼接成一个完整的路径字符串
let num = "ages"
const pathName = path.join("https://www.hao",num,".com");
console.log(pathName);
path.basename() 方法,用来从路径字符串中,将文件名解析出来
path 必选参数,表示一个路径的字符串
ext 可选参数,表示文件扩展名
返回: 表示路径中的最后一部分
const pathBase = path.basename("1/index/admin.html",".html")
// console.log(pathBase);	

// path.extname() 方法,可以获取路径中的扩展名部分
// path 必选参数,表示一个路径的字符串 //
返回: 返回得到的扩展名字符串
let pathExt = path.extname(“1/index/admin.html”);
console.log(pathExt);

时钟案例

const fs = require("fs");
const path = require("path");
// 获取文件
fs.readFile("./dataTime/index.html","utf-8",function(err,user){
    if(err){
        return console.log("请求文件失败"+err.message);
    }
    // console.log(user);
    resolveCss(user);
    resolveJs(user);
    resolveHtml(user);
})
// 匹配css
function resolveCss(user){
    let requeCss = /<style>[\s\S]*<\/style>/;
    let styleCss = requeCss.exec(user);
    // console.log(styleCss[0]);
    styleCss[0] = styleCss[0].replace("<style>","").replace("</style>","");
    fs.writeFile("./dataTime/index.css",styleCss[0],"utf-8",function(err){
        if(err){
            return console.log("请求文件失败"+err.message);
        }
    })
}
// 匹配js
function resolveJs(user){
    let requeJs = /<script>[\s\S]*<\/script>/;
    let styleCss = requeJs.exec(user);
    // console.log(styleCss[0]);
    styleCss[0] = styleCss[0].replace("<script>","").replace("</script>","");
    fs.writeFile("./dataTime/index.js",styleCss[0],"utf-8",function(err){
        if(err){
            return console.log("请求文件失败"+err.message);
        }
    })
}
// 匹配修改html
function resolveHtml(user){
    let requeCss = /<style>[\s\S]*<\/style>/;
    let requeJs = /<script>[\s\S]*<\/script>/;
    user = user.replace(requeCss,"<link rel='stylesheet' href='./dataTime/index.css'>").replace(
        requeJs,"<script src='./dataTime/index.js'></script>"
    )
    fs.writeFile("./dataTime/index.html",user,"utf-8",function(err){
        if(err){
            return console.log("请求文件失败"+err.message);
        }
    })
}

文字在控制台换行

 const fs = require("fs");
// 第一种
 fs.writeFile("./2.txt","小红:99\n小白:100\n小黄:70\n小黑:66\n小绿:88","utf-8",function(err){
     console.log(err);
 })
// 第二种
 fs.readFile("./2.txt","utf-8",function(err,user){
    console.log(user);
     for(let i=0;i<user.length;i++){
        user = user.replace(",","\n");
    }
     fs.writeFile("./2.txt",user,"utf-8",function(err){
         console.log(err);
     })
 })
// 第三种
 let a;
 fs.readFile("./2.txt","utf-8",function(err,user){
     a = user.split("");
     for(let i=0;i<a.length-1;i++){
       if(!isNaN(a[i])&&isNaN(a[i+1])){
            a[i] = a[i]+"\n";
         }
     }
     a = String(a);
    for(let j=0;j<a.length;j++){
        a = a.replace(",","");
     }
     fs.writeFile("./2.txt",a,"utf-8",function(err){
         console.log(err);
     })
 })
// 第四种
 fs.readFile("./2.txt","utf-8",function(err,user){
    user = user.replace(/([0-9]{1,3})/g,"$1\n");
     fs.writeFile("./2.txt",user,"utf-8",function(err){})
 })

返回响应

1xx(临时响应) // 100: 请求者应当继续提出请求。 // 101(切换协议)
请求者已要求服务器切换协议,服务器已确认并准备进行切换。
2xx(成功)
200:正确的请求返回正确的结果
201:表示资源被正确的创建。比如说,我们 POST 用户名、密码正确创建了一个用户就可以返回 201。
202:请求是正确的,但是结果正在处理中,这时候客户端可以通过轮询等机制继续请求。
3xx(已重定向)
300:请求成功,但结果有多种选择。
301:请求成功,但是资源被永久转移。
303:使用 GET 来访问新的地址来获取资源。
304:请求的资源并没有被修改过
4xx(请求错误)
400:请求出现错误,比如请求头不对等。
401:没有提供认证信息。请求的时候没有带上 Token 等。
402:为以后需要所保留的状态码。
403:请求的资源不允许访问。就是说没有权限。
404:请求的内容不存在。
5xx(服务器错误)
500:服务器错误。
501:请求还没有被实现。

启动一个服务所需的步骤

停止服务:ctrl+c
注:只要修改了代码,就必须重启服务
ip:127.0.0.1

// 1.导入http模块
const http = require("http");
// console.log(http);
// 2.创建一个 web 服务器实例
 const server = http.createServer();
// 3.为服务器实例绑定 request 事件
// req.url获取请求访问的地址
// req.method获取请求类型
// res.end("内容")向客户发送内容
// res.setHeader()解决中文乱码
server.on("request",(req,res)=>{
    // console.log(req);
    // console.log("------------------------------------");
    // console.log(res);
    // res.end("恭喜你请求成功了!")
    res.setHeader("Content-Type","text/html;charset=utf-8")
    res.end("123我我我")

})
// 4.listen() 方法,即可启动当前的 web 服务器
server.listen("80",()=>{
    console.log("服务启动成功");
})

__dirname获取当前路径目录

const fs = require("fs");
const path = require("path");
const http = require("http");
const server = http.createServer();
server.on("request",(req,res)=>{
    let paths="";
    if(req.url=="/"){
        paths = path.join(__dirname,"./dataTime/index.html");
    }else {
        // contents = "恭喜你进入关于";
        console.log(1111111111);
    }
    fs.readFile(paths,"utf-8",function(err,user){
        if(err){
            return console.log("获取文件失败"+err.message);
        }
        res.setHeader("Content-Type","text/html; charset=utf-8");
        res.end(user);
    })
})
server.listen(81,()=>{
    console.log("服务启动成功---127.0.0.1");
})

module.exports权重比exports高
module.exports能使用赋值为{},也可以使用module.exports.共享成员
exports不能使用赋值为{},可以使用exports.共享成员 注意:为了防止混乱,建议大家不要在同一个模块中同时使用 exports
和 module.exports 每个.js文件都有自己的module,共享的成员会存在module
使用require(“自定义模块路径”);导入

 module.exports.userName = "张三";
 module.exports.som=function(){
    console.log("我是函数");
 }
---------------------------------------------------------------------------
const str = "hello";
module.exports = {
    str,
    name:"李四",
    age:3,
    eats(){
        console.log("喜欢干饭");
    }
}
exports.name="王五";
exports.age=99;
console.log(module);
  • 35
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值