【node】初识node以及fs操作,path操作以及http操作(一)

1、不同浏览器使用不同的javaScript引擎

        chrome =>  v8

        Firefox  => OdinMonkey(奥丁猴)

        safri      => JSCore

        IE浏览器=>Chakra(查克拉)

2、node是一个基于chrome v8引擎的javaScript运行环境

浏览器是JavaScript的前端运行环境,node.js是JavaScript的后端运行环境

node.js中无法调用DOM和BOM等浏览器内置API。

3、node简单操作

查看node版本号 node -v

运行js文件 node 文件名

4、fs文件系统模块

fs是Node.js官方提供的、用来操作文件的模块

fs.readFile(); // 读取指定文件内容
fs.writeFile();//向指定文件中写入内容

JavaScript引入fs模块

const fs = require('fs')

 (1)读取指定文件内容

// fs.readFiles(path[,option],callback)
// 参数1:必选参数,字符串,表示文件的路径。
// 参数2:可选参数,表示以什么编码格式来读取文件。
// 参数3:必选参数,文件读取完成后,通过回调函数拿到读取的结果,
const fs = require('fs');
fs.readFile('read.txt','utf8',function(err,dataStr){
    console.log(err);
    console.log(dataStr);
})

fs.readFile('read.txt','utf8',function(err,dataStr){
    if(err){
        return console.log(err);
    }
    console.log(dataStr);
})

(2)向指定文件写入内容

/ fs.readFile(file,data[,option],callback)
// 参数1:必选参数,文件的路径字符串,表示文件存放路径。
// 参数2:必选参数,表示写入内容。
// 参数2:可选参数,表示以什么编码格式来读取文件,默认utf8。
// 参数3:必选参数,文件写入完成后,通过回调函数拿到读取的结果,、

const fs = require('fs');

fs.writeFile('read.txt','hello!',function(err){
    if(err){
        return console.log("文件写入失败:"+err);
    }else{
        console.log("文件写入成功");
    }
})

如果成功 err==null 否则err返回一个错误对象

记事本中换行:\r\n

路径参数时, \  要写成  \\

process、__filename、__dirname

// 当前文件位置,绝对路径

console.log('__filename', __filename);

// 当前文件目录路径

console.log('__dirname', __dirname);

// 命令行的根路径  process进程对象,唯一对象

console.log('process.cwd()', process.cwd());

// 输出环境变量

console.log(process.env);

5、path模块

path 模块是 Node.is 官方提供的、用来处理路径的模块。它提供了一系列的方法和属性,用来满足用户对路径的处理需求。

(1)path.join() 方法,用来将多个路径片段拼接成一个完整的路径字符串

(2)path.basename() 方法,用来从路径字符串中,将文件名解析出来

(3)path.extname() 方法,获得路径扩展名

const path = require('path');
let resPath = path.join('a', 'b', 'c', '../', 'def/g'); // 不校验路径的合法性
// 相对路径获取其对应的绝对路径
let resolvePath = path.resolve('./a/b', 'c/d', 'e', 'xxx.txt');
// 进一步操作路径,以对象的方式解析路径
let pathObj = path.parse(resolvePath);

const fullName = path.basename('/a/b/index.html'); // index.html
const nameWithoutExt = path.basename('/a/b/index.html','.html');

路径中 ../会抵消前面的路径

路径拼接使用 path.join(__dirname,'123.txt');,不要使用 “ + ” 。

6、http模块

(1)IP地址

客户端:负责消费资源的电脑

服务器:负责对外提供网络资源的电脑

http模块是node提供的,普通电脑可以通过http.createServer()方法变成服务器。

IP地址:在互联网上每台电脑唯一地址,格式--点分十进制,

ping IP地址

自身IP地址,测试 127.0.0.1

 (2)域名和域名服务器

字符型地址方案-域名地址

域名服务器是提供IP地址和域名之间转换服务的服务器

127.0.0.1 ==> localhost

(3)端口号

  1. 每个端口号不能同时间被多个web服务占用
  2. URL中80端口可以省略

 (4)创建最基本web服务器

创建 web 服务器的基本步骤

① 导入 http 模块

const http = require('http')

② 创建 web 服务器实例

调用http.createServer()方法,即可快速创建一个web服务器实例

const server = http.createServer()

③ 为服务器实例绑定 request 事件,监听客户端的请求

// 使用服务器实例 .on() 方法,为服务器绑定一个request事件
server.on('request',(req, res)=>{
    // 只要有客户端来请求我们自己的服务器,就会触发request事件,从而调用这个事件处理函数
    console.log('Someone visit our web server')
    })

④ 启动服务器

调用服务器实例的 .listen()方法,即可启动当前的web服务器实例:

server.listen(80, ()=>{
    console.log('http server running at http://127.0.0.1')
    })

 (5) req请求对象

只要服务器接收到客户端得请求,就会调用通过server.on()为服务器绑定request事件处理函数

如果想在事件处理函数中访问客户端相关的数据或属性,可以用req请求对象

server.on('request', function (req, res) {
    const url = req.url;
    const method = req.method;
})

(6) res响应对象

访问与服务器相关得数据或属性,采用res.end

server.on('request', function (req, res) {
    const url = req.url;
    const method = req.method;
    const str =`request is ${url},method is ${method}`
    // 调用res.end()方法,向客户端响应内容
    res.end(str);
})

 

中文乱码问题

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

(7) 不同url响应不同页面

① 获取请求得url地址

② 设置默认响应内容

③ 判断用户请求得是否为/ 或/index.html首页

④ 判断用户请求得是否为 /其他页面

⑤ 设置响应头,防止乱码

⑥ 使用res.end()把内容响应给客户端

const http = require('http')
const server = http.createServer()
server.on('request', function (req, res) {
    const url = req.url;
    let content = '<h1>404 Not found!</h1>';
    if(url==='/'|url==='/index.html'){
        content = '<h1>首页</h1>'
    }else if(url === '/about.html'){
        content = '<h1>about页面</h1>'
    }
    res.setHeader('Content-Type','text/html; charset=utf-8');
    // 调用res.end()方法,向客户端响应内容
    res.end(content);
})
server.listen(80, function () {
    console.log('server running at http://127.0.0.1:80')
})

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/453628.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AcrelEMS-MED医院综合能效管理平台在医院电力中的应用

彭姝麟 Acrelpsl 0引言 全医院是公共服务组织&#xff0c;其机构的特殊性决定了医院在提供医疗服务的同时&#xff0c;也需要发挥榜样作用&#xff0c;通过进行能源管理系统的应用&#xff0c;为医院的电力使用和能源消耗进行好的管理&#xff0c;从而减少电能消耗&#xff0…

Web端3D图形引擎HOOPS Commuicator如何实现BIM轻量化?

面对建筑信息模型&#xff08;BIM&#xff09;中复杂大型模型的挑战&#xff0c;如何实现轻量化&#xff0c;并使其能在Web端流畅运行是我们需要解决的问题。而HOOPS Communicator正可凭借其出色的Web端3D模型敏捷解决性&#xff0c;为我们提供强有力的支撑。 HOOPS Communica…

【四】【算法分析与设计】贪心算法的初见

455. 分发饼干 假设你是一位很棒的家长&#xff0c;想要给你的孩子们一些小饼干。但是&#xff0c;每个孩子最多只能给一块饼干。 对每个孩子 i&#xff0c;都有一个胃口值 g[i]&#xff0c;这是能让孩子们满足胃口的饼干的最小尺寸&#xff1b;并且每块饼干 j&#xff0c;都有…

阿里云数据盘挂载目录

1、先登录服务器创建新目录aaa 2、云盘都快照备份下。后续操作完核实无误了&#xff0c;您根据您需求删除快照就行&#xff0c; 然后登录服务器内执行&#xff1a; fdisk -l lsblk blkid ll /aaa 3、执行&#xff1a;&#xff08;以下命令是进行数据盘做ext4文件系统并挂载到…

tigramite教程(五)使用TIGRAMITE 进行自助聚合和链接置信度量化

使用TIGRAMITE 进行自助聚合和链接置信度量化 自助聚合&#xff08;Bagging&#xff09;和置信度估计例子数据生成模型基本的PCMCIBagged-PCMCI使用优化后的pc_alpha进行自举聚合使用优化的pc_alpha进行CMIknn的自举聚合 TIGRAMITE是一个用于时间序列分析的Python模块。它基于P…

Elastic Stack--04--ES中的检索方式、Query DSL

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1.ES中的检索方式第一种方式GET bank/_search # 检索bank下的所有信息&#xff0c;包括 type 和 docsGET bank/_search?q*&sortaccount_number:asc 第二种方式…

Redis经典面试题-卷2

前言 继续上一篇《Redis经典面试题-卷1》&#xff0c;今天整理一下关于redis的第2卷面试题。废话不多说&#xff0c;直接看干货 热Key问题 如果单单从工作的角度的话&#xff0c;面试官一般会问下面两个内容&#xff1a; 什么是热Key问题&#xff1f;如何解决热key问题&…

Android 摄像头等比例缩放 摄像头画面比例

在拍摄照片的时候我们往往会在后期进行二次构图&#xff0c;在裁剪的时候有不同的相片长宽比供我们选择&#xff0c;不同的长宽比带给观众的感受也不一样。这里为大家介绍一下照片拍摄中常用到长宽比例。 3&#xff1a;2(6&#xff1a;4) 这张照片是用Canon 50D拍摄的&#xf…

收藏贴!6个谈薪小技巧,助你拿到满意薪资

Salesforce的就业市场一直在迅猛发展&#xff0c;对Salesforce专业人士的需求持续不断&#xff0c;对优秀人才的需求更大。 本篇文章总结了6个谈薪小技巧&#xff0c;可以帮助SF从业者、求职者拿到满意的薪资。 01 了解市场价格 首先&#xff0c;需要了解当前就业市场的情况…

【Linux】进程控制与进程调度

Linux进程介绍 进程的基本概念 Linux是多用户、多任务的操作系统。在这样的环境中&#xff0c;各种计算机资源的分配和管理都是以进程为单位进行的。 Linux操作系统包括三种不同类型的进程&#xff1a; 1&#xff09;交互进程&#xff1a;一种由Shell启动的进程。交互进程既可…

十、软考-系统架构设计师笔记-软件架构演化和维护

1、软件架构演化 软件架构的演化和维护的目的是为了使软件能够适应环境的变化而进行的纠错性修改和完善性修改。软件架构的演化和维护过程是一个不断迭代的过程&#xff0c;通过演化和维护&#xff0c;软件架构逐步得到完善&#xff0c;以满足用户需求。软件架构的演化就是软件…

JavaScript---VConsole插件配置使用,一步到位简单实用!

1. 寻找到自己需要的VConsole插件js文件 个人喜欢BootCDN这个平台&#xff08;直接在线引用或者下载本地引入均可~&#xff09; vConsole (v3.15.1) - A lightweight, extendable front-end developer tool for mobile web page. | BootCDN - Bootstrap 中文网开源项目免费 C…

浏览器的工作原理

从输入一个url到页面加载完成&#xff0c;中间都发生了什么&#xff1f; 参考原文地址 首先在浏览器地址栏输入一个地址并回车之后&#xff0c; 1. DNS查找 浏览器会进行DNS查找&#xff0c;把域名https://example.com转化为真实的IP地址10.29.33.xx&#xff0c;根据IP地址找…

探索C++中的动态数组:实现自己的Vector容器

&#x1f389;个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名乐于分享在学习道路上收获的大二在校生 &#x1f648;个人主页&#x1f389;&#xff1a;GOTXX &#x1f43c;个人WeChat&#xff1a;ILXOXVJE &#x1f43c;本文由GOTXX原创&#xff0c;首发CSDN&…

Android Studio下运行java main 方法

方法一 修改项目的.idea中的gradle.xml文件&#xff0c;在GradleProjectSettings标签下添加一行代码 <option name"delegatedBuild" value"false" />方法二 main方法上右键选择Run ‘xxx’ with Coverage

视觉图像处理和FPGA实现第三次作业--实现一个加法器模块

一、adder模块 module adder(ina, inb, outa); input [5:0] ina ; input [5:0] inb ; output [6:0] outa ;assign outa ina inb; endmodule二、add模块 module add(a,b,c,d,e); input [5:0] a ; input [5:0] b ; input [5:…

1.1计算机系统构成及硬件系统知识(上)

基础知识部分----chap01 主要议题&#xff1a; 数制转换&#xff1a;一般会涉及存取的计算&#xff1b;ip地址中变长子网掩码的计算题&#xff1b;&#xff08;难度较大&#xff09; 数的表示&#xff1a;二进制、十六进制&#xff1b; 计算机的组成&#xff1a;考察的较为深入…

30天学会QT(进阶)--------------第二天(创建项目)

1、如何规范的创建一个项目 由于本人也是从其他的项目上学来的&#xff0c;所以也不算是业界规范&#xff0c;每个公司或者个人都有自己的方式去创建项目&#xff0c;项目的创建是本着简洁&#xff0c;明了&#xff0c;方便而言的&#xff0c;所以对于我来说&#xff0c;不繁琐…

nginx启动闪退

在nginx目录下cmd&#xff0c;nginx -t&#xff0c;找到原因是&#xff1a;“在端口80上运行NGINX时&#xff0c;因为端口80是HTTP默认端口&#xff0c;需要管理员权限才能访问” 所以修改端口号&#xff1a; 在nginx.conf文件中&#xff0c;修改listen&#xff1a;80为8080 …

【漏洞复现】网康科技 NS-ASG 应用安全网关 SQL注入漏洞(CVE-2024-2330)

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…