当前位置: 首页 > news >正文

西安网站建设网络公司北京网站开发哪家好薇

西安网站建设网络公司,北京网站开发哪家好薇,万国商业网,深圳定制纸箱Node.js#xff1a;内置模块 Node.jsfs模块读取文件写入文件__dirname path模块路径拼接文件名解析 http模块创建服务 Node.js 传统的JavaScript是运行在浏览器的#xff0c;浏览器就是其运行环境。 浏览器提供了JavaScript的API#xff0c;以及解析JavaScript的解析引擎内置模块 Node.jsfs模块读取文件写入文件__dirname path模块路径拼接文件名解析 http模块创建服务 Node.js 传统的JavaScript是运行在浏览器的浏览器就是其运行环境。 浏览器提供了JavaScript的API以及解析JavaScript的解析引擎常见的解析引擎如下 Chrome 浏览器V8Firefox 浏览器OdinMonkey(奥丁猴)Safri 浏览器JSCoreIE 浏览器Chakra(查克拉) 其中V8引擎的性能最好所以前端程序员最常使用chrome来运行代码。 那么这样一个JavaScript架构可以支持JavaScript成为一款后端语言吗并不可以因为它没有提供后端所需要的API比如文件读写网络请求等等。 为了让JavaScript可以成为一款后端语言完成后端所需要完成的任务就需要为其提供一套其它的运行环境而这个运行环境就是Node.js。 在Node.js中为JavaScript提供了后端所需的API使用V8引擎进行代码解析让JavaScript可以完成后端工作。 但是在Node.js中无法调用浏览器的DOMBOM等API因为这一套运行环境并不提供可见JavaScript的前后端运行环境是分离的。 安装地址 https://nodejs.org/建议下载LTS版本这是稳定版本。这个安装很简单一直点击next就可以了。 安装后输入node -v检查是否安装成功 C:\Users\xxx node -v v20.18.0安装成功后可以通过vscode执行node代码。 console.log(hello node.js)编写代码后按下F5 执行时其会提示可以使用Node.js进行编译选择Node.js。 此时就可以在控制台看到输出结果了。 也可以通过命令来执行程序 node 执行的文件fs模块 fs是官方提供的操作文件的模块其可以对文件进行读取与写入。 导入模块语法 const fs require(fs)此处的require方法用于导入模块返回值用一个对象接收后续通过该变量使用模块。 读取文件 读取文件使用fs.readFile方法 fs.readFile(path[, options], callback)path读取文件的存放路径options可选参数读取文件时候采用的编码格式一般默认指定 utf8callback回调函数函数内包含两个参数分别拿到读取失败和成功的结果 示例 const fs require(fs)fs.readFile(./files/1.txt, utf8, function(err, dataStr) {console.log(err err)console.log(dataStr dataStr) })第一行代码导入fs模块随后通过readFile读取文件。 读取成功 err null dataStr 文件内容读取失败 err Error: ENOENT: no such file or directory dataStr undefined不论是否读取成功都调用回调函数。如果读取成功err的值是nulldataStr的值是文件内容如果读取失败那么err存储错误信息而dataStr是undefined。 常见的做法是在回调函数中判断err的值如果err为空直接返回错误信息如果没有返回那么后续就进行正常的文件读取操作。 fs.readFile(./files/11.txt, utf8, function(err, dataStr) {if (err) {return console.log(error err.message)}console.log(success dataStr) })写入文件 写入文件使用fs.writeFile方法 fs.writeFile(path, data[, options], callback)path写入文件的存放路径data要写入的内容options可选参数读取文件时候采用的编码格式一般默认指定 utf8callback回调函数函数内包含一个参数表示错误信息 同样的如果写入成功那么回调函数的第一个参数为null如果写入失败那么第一个参数为错误信息。 示例 const fs require(fs)fs.writeFile(./files/3.txt, hello node.js, function(err) {if (err) {return console.log(error err.message)}console.log(success) })以上代码完成对./files/3.txt文件的写入写入内容是hello node.js写入完成后判断错误信息是否写入成功。 注意点 writeFile写入时如果文件不存在那么会创建这个文件writeFile写入前会清空被写入的文件原先内容会被覆盖 __dirname 在fs模块中如果使用相对路径那么此时node.js会以执行命令的路径为出发点查找相对路径而不是以被执行的文件为出发点查找相对路径这和其他语言略有点不同。 以下代码为例 fs.readFile(./hello.txt, utf8, function(err, dataStr) {if (err) {return console.log(error err.message)}console.log(success: dataStr) })在path.js文件中写JavaScript代码在其同级目录下存在一个hello.txt。如果在path.js目录下运行程序那么程序可以正常输出 此时进行路径拼接当前路径 相对路径得到D:\code_web\test\Node\01\hello.txt这是正确的路径输出成功了。 但是如果跳转到别的目录执行代码 此时进行路径拼接当前路径 相对路径得到D:\code_web\test\Node\hello.txt这是错误的路径输出失败了。 可以看出Node.js不适合使用相对路径查找文件但是由于不同主机环境不同绝对路径往往不一样。为此Node.js提供了一个变量__dirname其标识着当前.js文件的所处目录。 在path.js中输出_dirname console.log(__dirname)此时不论出于哪一个目录都可以成功标识出path.js的所处目录。 所以在fs中使用相对路径时最好通过__dirname 相对路径来查找文件 fs.readFile(__dirname /hello.txt, utf8, function(err, dataStr) {if (err) {return console.log(error err.message)}console.log(success: dataStr) })这样不论在什么地方运行程序都可以正常检索路径了。 path模块 path也是Node.js的内置模块专门用于处理路径。 导入模块 const path require(path)先前的__dirname /hello.txt操作是不太正规的path模块有专门用于路径拼接的方法。 路径拼接 path.join方法可以将多个路径片段拼接为完整的路径字符串。 语法 path.join(path, [path...])传入多个路径片段path最后返回拼接好的路径。 示例 const pathStr path.join(/a, /b/c, ./d, e) console.log(pathStr)输出结果 \a\b\c\d\epath.join不是简单的字符串拼接此处的e前面没有/路径分隔符其自动补充上去而./d中./表示当前路径最后被省略掉了。 path.join还会进行路径的推演来缩短路径比如说../表示上级目录那么path.join就会撤销之前的操作 const pathStr path.join(/a, /b/c, ../../, ./d, e) console.log(pathStr)输出结果 \a\d\e此时/b/c这个路径就被抵消了。 相对路径拼接就可以使用这个方法 path.join(__dirname, /hello.txt)比如有时候相对路径前面会带一个./如果直接进行字符串假发__dirname ./hello.txt此时路径就会错误无法解析。但是使用path.join就会忽略这个./得到正确的路径。 文件名解析 有的时候获取到的文件是以路径的形式出现此时为了解析出具体的文件名就需要进行一定的字符串检索操作比较麻烦。此时可以使用 path.basename方法快速解析出文件名。 path.basename(path[, ext])参数 path文件路径ext扩展文件名 如果直接输入一个路径path.basename会解析出文件名 const path require(path) const fpath /a/b/c/index.htmlconst fullName path.basename(fpath) console.log(fullName)输出结果 index.html如果想要得到去掉后缀的文件名此时填入第二个参数去掉后缀 const path require(path)const fpath /a/b/c/index.htmlconst nameWithoutExt path.basename(fpath, .html) console.log(nameWithoutExt)输出结果 index这样就同时去掉了路径前缀以及文件后缀。 如果需要单独获得文件的扩展名可以使用path.extname方法 path.extname(path)示例 const path require(path) const fpath /a/b/c/index.htmlconst fext path.extname(fpath) console.log(fext)输出结果 .htmlhttp模块 http模块是Node.js的内置模块其可以快速创建一个web服务器并对外提供http服务。 导入模块 const http require(http)创建服务 Node.js可以快速创建服务基于createServer方法。 语法 http.createServer()该方法返回一个服务器的对象基于这个对象就可以让本机接收服务请求。 通过绑定request事件就可以让服务器对象接收请求绑定语法类似于JavaScript的DOM事件绑定 server.on(require, callback)第一个参数指定要绑定的事件第二个参数为事件触发后的回调函数。require事件会监听来自外部的请求一旦收到请求就执行回调函数。 最后只需要启动服务器就可以开始接收请求了 server,listen(port, callback)第一个参数是监听的端口号表示该服务使用的端口号。如果服务器启动成功就会调用回调函数。 示例 const http require(http)// 创建 web 服务器实例 const server http.createServer() // 为服务器实例绑定 request 事件监听客户端的请求 server.on(request, function (req, res) {console.log(收到请求) }) // 启动服务器 server.listen(8080, function () { console.log(服务启动成功) })如果运行成功那么此时去浏览器访问127.0.0.1:8080就会触发回调函数输出收到请求。 在绑定事件时函数内有两个参数req和res它们分别代表请求对象和响应对象。 req请求对象包含客户端相关数据与属性 其包含两个关键属性url是客户端请求的地址method是客户端的请求方式。 server.on(request, function (req, res) {console.log(req.url)console.log(req.method) })用浏览器访问127.0.0.1:8080结果 / GET用浏览器访问127.0.0.1:8080/index.html结果 /index.html GETurl拿到的是除去主机地址后具体请求的文件路径。 res请求对象包含服务器相关数据与属性 在先前的所有操作中使用浏览器请求都是得不到结果的因为服务器根本不响应如果想要进行响应就需要res.end 方法。 server.on(request, function (req, res) {res.end(h1hello world!/h1) })此时再访问浏览器就可以得到一个文本响应 http模块发送的是HTTP响应还可以通过res.setHeader方法指定响应头的内容。 语法 res.setHeader(name, value)name指定要设置的HTTP头的名称value指定要设置的HTTP头的值 最常见的做法是响应一个html文件此时可以设置Content-Type属性来指定文件类型 res.setHeader(Content-Type, text/html; charsetutf-8);此处指定响应的类型为html文件并且编码的字符集为utf-8这样客户端浏览器就知道如何解析这样一个响应。如果不指定utf-8那么网页就无法解析中文。
http://www.dnsts.com.cn/news/105362.html

相关文章:

  • 基于网站开发的app网络管理软件app
  • 做彩票网站东莞个人做网站
  • 漳州网站建设点击博大选上海品牌网站建设公
  • wordpress 聊天莱芜新站优化
  • 单页面 网站怎么做的建设教育局官方网站
  • 查询网站所有死链接制作杂志 wordpress主题
  • 企业网站设计需要了解外贸公司名字免费起名大全
  • 中国住房与城乡建设部网站wordpress免费主题cms
  • 什么网站可以自学ps做贵宾卡瓯网
  • 上海网站建设宣传深圳公司注册地址新规定
  • 西安网站建设比较好的公司在猪八戒上做网站要注意什么
  • flash全屏网站模板深圳网站建设忧化
  • 如何做家具网站模板下载网站什么好
  • 石家庄市城乡建设学校网站长春网站优化页面
  • 做网站上传照片的尺寸移动手机网站建设
  • 网站维护外包合同中铁十二局出国招工
  • 怎么在百度上做推广上首页哪些网站可以做seo
  • 杭州网站案列广告推广一个月多少钱
  • 石河子做网站的公司网站积分解决方案
  • 免费网站提供制作触屏版网站开发
  • 网站开发工程师是做什么的郓城做网站
  • 东莞做企业宣传网站淘宝关键词排名查询工具免费
  • 中国建设银行宁夏分行网站外贸网站虚拟主机
  • 网站导航栏全屏怎么做搜索引擎优化涉及到内容
  • 唐山如何做百度的网站建设c2c网站有哪些?
  • 四川短视频seo优化网站网站建设开发的目的
  • 灵山招聘网灵山英才网做灵山专业的招聘网站百度网盟推广的定义
  • 建站宝盒视频好用的做微信公众号的网站
  • 蓝色的网站登录页面模版网页设计网站简单静态模板
  • 生活馆网站开发背景我想买个空间自己做网站