建设信用卡网站换积分高中信息技术课程做网站

news/2025/9/26 4:11:55/文章来源:
建设信用卡网站换积分,高中信息技术课程做网站,广州平面设计公司排名榜,设计说明万能模板200字1.路劲处理模块 path 1.1 模块概览 在nodejs中#xff0c;path是个使用频率很高#xff0c;但却让人又爱又恨的模块。部分因为文档说的不够清晰#xff0c;部分因为接口的平台差异性。将path的接口按照用途归类#xff0c;仔细琢磨琢磨#xff0c;也就没那么费解了。 1.… 1.路劲处理模块 path 1.1 模块概览 在nodejs中path是个使用频率很高但却让人又爱又恨的模块。部分因为文档说的不够清晰部分因为接口的平台差异性。将path的接口按照用途归类仔细琢磨琢磨也就没那么费解了。 1.2 获取路径/文件名/扩展名 获取路径path.dirname(filepath)获取文件名path.basename(filepath)获取扩展名path.extname(filepath) 1获取所在路径 例子如下 var path require(path); var filepath /tmp/demo/js/test.js;// 输出/tmp/demo/js console.log( path.dirname(filepath) );2获取文件名 严格意义上来说path.basename(filepath) 只是输出路径的最后一部分并不会判断是否文件名。但大部分时候我们可以用它来作为简易的“获取文件名“的方法。 var path require(path);// 输出test.js console.log( path.basename(/tmp/demo/js/test.js) );// 输出test console.log( path.basename(/tmp/demo/js/test/) );// 输出test console.log( path.basename(/tmp/demo/js/test) );如果只想获取文件名单不包括文件扩展呢可以用上第二个参数。 // 输出test console.log( path.basename(/tmp/demo/js/test.js, .js) );3 获取文件扩展名 简单的例子如下 var path require(path); var filepath /tmp/demo/js/test.js;// 输出.js console.log( path.extname(filepath) );更详细的规则是如下假设 path.basename(filepath) B 从B的最后一个.开始截取直到最后一个字符。如果B中不存在.或者B的第一个字符就是.那么返回空字符串。 直接看官方文档的例子 path.extname(index.html) // returns .htmlpath.extname(index.coffee.md) // returns .mdpath.extname(index.) // returns .path.extname(index) // returns path.extname(.index) // returns 1.3 路径组合 path.join([...paths]) path.resolve([...paths])1 path.resolve() 生成完成的绝对路径 语法格式 path.resolve([...myPaths])解释 将路径或路径片段的序列解析为绝对路径。返回的路径是从右往左处理后面的每个 myPath 被依次解析直到构造出一个完整的绝对路径。 你可以想象现在你在shell下面从左到右运行一遍cd path命令最终获取的绝对路径/文件名就是这个接口所返回的结果了。 代码举例 const path require(path);let arr1 [/foo1/foo2, dselegent, foo3]; let result1 path.resolve(...arr1); console.log(result1); // 打印结果/foo1/foo2/dselegent/foo3let arr2 [/foo1/foo2, /dselegent, foo3]; let result2 path.resolve(...arr2); console.log(result2); // 打印结果/dselegent/foo3 const path require(path);// 假设当前工作路径是 /Users/a/Documents/git-code/nodejs-learning-guide/examples/2016.11.08-node-path// 输出 /Users/a/Documents/git-code/nodejs-learning-guide/examples/2016.11.08-node-path console.log( path.resolve() )// 输出 /Users/a/Documents/git-code/nodejs-learning-guide/examples/2016.11.08-node-path console.log( path.resolve(.) )// 输出 /foo/bar/baz console.log( path.resolve(/foo/bar, ./baz) );// 输出 /foo/bar/baz console.log( path.resolve(/foo/bar, ./baz/) );// 输出 /tmp/file console.log( path.resolve(/foo/bar, /tmp/file/) );// 输出 /Users/a/Documents/git-code/nodejs-learning-guide/examples/2016.11.08-node-path/www/js/mod.js console.log( path.resolve(www, js/upload, ../mod.js) );2 path.join() 将多个路径进行拼接 如果是我们手动拼接路径容易出错。这个时候可以利用 path.join() 方法将路径进行拼接。 语法格式 path.join([...paths]);解释使用平台特定的分隔符作为定界符将所有给定的 path 片段连接在一起然后规范化生成的路径。 代码举例 const path require(path);const result1 path.join(__dirname, ./app.js); console.log(result1); // 返回/Users/smyhvae/dselegent/app.jsconst result2 path.join(/foo1, foo2, ./foo3); console.log(result2); // 返回/foo1/foo2/foo3const result3 path.join(/foo1, foo2, /foo3); console.log(result3); // 返回/foo1/foo2/foo33 path.resolve 和 path.join 区别 path.resolve 和 path.join 都是属于 path 核心模块下的方法用来拼接路径。 都可以拼接成一个完整路径. const path require(path);var dirname /User/Desktop; var basename abc.txt;path.join(dirname, basename); // /User/Desktop/abc.txtpath.resolve(dirname, basename); // /User/Desktop/abc.txt如果 dirname 是以 ./ 、…/、不加 / 开头的话那么 resolve 会找到磁盘下的根目录 const path require(path);var dirname ../User/Desktop; var basename abc.txt;path.join(dirname, basename); // ../User/Desktop/abc.txtpath.resolve(dirname, basename); // /Users/Desktop/node/User/Desktop/abc.txt如果 basename 是以 / 开头的那么 resolve 就会直接返回 basename const path require(path);var dirname /User/Desktop; var basename /abc.txt;path.join(dirname, basename); // /User/Desktop/abc.txtpath.resolve(dirname, basename); // /abc.txt1.4 几个常见路径 __dirname这是一个常量表示当前执行文件所在完整目录。 __filename这是一个常量。表示当前执行文件的完整目录 文件名。 process.cwd获取当前执行 Node命令 时的目录名。 代码举例 console.log(__dirname); console.log(__filename); console.log(process.cwd());运行结果 $ node app.js/Users/smyhvae/dselegent /Users/smyhvae/dselegent/app.js /Users/smyhvae/dselegent2.本地文件操作模块 fs Node.js 中的同步和异步的区别 fs模块对文件的几乎所有操作都有同步和异步两种形式。例如readFile() 和readFileSync()。 区别 同步调用会阻塞代码的执行异步则不会。异步调用会将 读取任务 下达到任务队列直到任务执行完成才会回调。异常处理方面同步必须使用 try catch 方式异步可以通过回调函数的第一个参数。【★★★★★】 2.1 文件读取 同步读取 var fs require(fs); var data;try{data fs.readFileSync(./fileForRead.txt, utf8);console.log(文件内容: data); }catch(err){console.error(读取文件出错: err.message); }输出如下 /usr/local/bin/node readFileSync.js 文件内容: hello world异步读取 var fs require(fs);fs.readFile(./fileForRead.txt, utf8, function(err, data){if(err){return console.error(读取文件出错: err.message);}console.log(文件内容: data); });输出如下 /usr/local/bin/node readFile.js 文件内容: hello worldfs/promises 从 Node.js 14 开始可用 从 Node.js 14 开始fs 模块提供了两种使用基于 promises 的文件系统的方法。这些 promises 可以通过 require(fs).promises 或 require(fs/promises) 获得。 import { readFile } from fs/promises;try {const contents await readFile(filePath, { encoding: utf8 });console.log(contents); } catch (err) {console.error(err.message); }2.2 文件写入 备注以下代码如果文件不存在则创建文件如果文件存在则覆盖文件内容 异步写入 var fs require(fs);fs.writeFile(./fileForWrite.txt, hello world, utf8, function(err){if(err) throw err;console.log(文件写入成功); });同步写入 var fs require(fs);try{fs.writeFileSync(./fileForWrite1.txt, hello world, utf8);console.log(文件写入成功); }catch(err){throw err; }promises import { writeFile } from fs/promises;try {const contents await writeFile(message.txt, hello world, { encoding: utf8 });console.log(contents); } catch (err) {// When a request is aborted - err is an AbortErrorconsole.error(err); }2.3 文件是否存在 fs.exists()已经是deprecated状态现在可以通过下面代码判断文件是否存在。 异步本 const fs require(fs)//检查文件是否存在于当前目录中 fs.access(package.json, fs.constants.F_OK, err {if(err) {console.log(package.json不存在于当前目录中)return}console.log(package.json存在于当前目录中) })fs.access(index.js, fs.constants.F_OK, err {if(err) {console.log(index.js不存在于当前目录中)return}console.log(index.js存在于当前目录中) })fs.access()除了判断文件是否存在默认模式还可以用来判断文件的权限。 备忘fs.constants.F_OK等常量无法获取node v6.1mac 10.11.4下fs.constants是undefined 同步 import { accessSync, constants } from fs;try {accessSync(etc/passwd, constants.R_OK );console.log(can read); } catch (err) {console.error(no access!); }promises import { access, constants } from node:fs/promises;try {await access(/etc/passwd, constants.R_OK);console.log(can access); } catch {console.error(cannot access); }2.4 删除文件 异步版本 var fs require(fs);fs.unlink(./fileForUnlink.txt, function(err){if(err) throw err;console.log(文件删除成功); });同步版本 import { unlinkSync } from fs;try {unlinkSync(/tmp/hello);console.log(successfully deleted /tmp/hello); } catch (err) {// handle the error }promises import { unlink } from fs/promises;try {await unlink(/tmp/hello);console.log(successfully deleted /tmp/hello); } catch (err) {// handle the error }2.5 创建目录 异步版本如果目录已存在会报错 // fs.mkdir(path[, mode], callback) var fs require(fs);fs.mkdir(sub, function(err){if(err) throw err;console.log(创建目录成功); });同步版本 // fs.mkdirSync(path[, mode]) var fs require(fs);try{fs.mkdirSync(hello);console.log(创建目录成功); }catch(e){throw e; }promises import { mkdir } from fs/promises;try {const createDir await mkdir(projectFolder, { recursive: true });console.log(created ${createDir}); } catch (err) {console.error(err.message); }2.6 遍历目录 同步版本注意fs.readdirSync()只会读一层所以需要判断文件类型是否目录如果是则进行递归遍历。 // fs.readdirSync(path[, options]) var fs require(fs); var path require(path); var getFilesInDir function(dir){var results [ path.resolve(dir) ];var files fs.readdirSync(dir, utf8);files.forEach(function(file){file path.resolve(dir, file);var stats fs.statSync(file);if(stats.isFile()){results.push(file);}else if(stats.isDirectory()){results results.concat( getFilesInDir(file) );}});return results; }; var files getFilesInDir(../); console.log(files);2.7 读取目录 import { readdir } from fs/promises;try {const files await readdir(path);for (const file of files)console.log(file); } catch (err) {console.error(err); }2.8 删除目录 // 删除目录(前提没有文件在里面) fs.rmdir(./avatar, err {if (err err.code ENOENT) {console.log(目录不存在);} });2.9 删除整个目录 //1 const fs require(fs) fs.(./avatar,(err,data){// console.log(data)data.forEach(item{fs.unlinkSync(./avatar/${item})})fs.rmdir(./avatar,(err){console.log(err)}) })//2 const fs require(fs) fs.readdir(./avatar).then(async (data){let arr []data.forEach(item{arr.push(fs.unlink(./avatar/${item}))})await Promise.all(arr)fs.rmdir(./avatar) })//3 const fs require(fs).promises; fs.readdir(./image2).then(async data {await Promise.all(data.map(item fs.unlink(./image2/${item})));await fs.rmdir(./image2); });2.10 文件重命名 异步版本 // fs.rename(oldPath, newPath, callback) var fs require(fs);fs.rename(./hello, ./world, function(err){if(err) throw err;console.log(重命名成功); });同步版本 // fs.renameSync(oldPath, newPath) var fs require(fs);fs.renameSync(./world, ./hello); promisesimport { rename } from fs/promises;try {await rename(./world, ./hello);console.log(rename); } catch (err) {console.error(err.message); }2.11 获取文件状态 1异步fs.stat(path,callback): path是一个表示路径的字符串,callback接收两个参数(err,stats),其中stats就是fs.stats的一个实例 2同步fs.statSync(path) 只接收一个path变量fs.statSync(path)其实是一个fs.stats的一个实例 方法 stats.isFile() – 是否文件stats.isDirectory() – 是否目录 // Node.js program to demonstrate the // fs.statSync() method // Import the filesystem module const fs require(fs); // Getting information for a file statsObj fs.statSync(test_file.txt); console.log(statsObj); console.log(Path is file:, statsObj.isFile()); console.log(Path is directory:, statsObj.isDirectory()); // Getting information for a directory statsObj fs.statSync(test_directory); console.log(statsObj); console.log(Path is file:, statsObj.isFile()); console.log(Path is directory:, statsObj.isDirectory());输出 Stats {dev:3229478529,mode:33206,nlink:1,uid:0,gid:0,rdev:0,blksize:4096,ino:1970324837039946,size:0,blocks:0,atimeMs:1582306776282,mtimeMs:1582482953967,ctimeMs:1582482953968.2532,birthtimeMs:1582306776282.142,atime:2020-02-21T17:39:36.282Z,mtime:2020-02-23T18:35:53.967Z,ctime:2020-02-23T18:35:53.968Z,birthtime:2020-02-21T17:39:36.282Z } Path is file:true Path is directory:false Stats {dev:3229478529,mode:16822,nlink:1,uid:0,gid:0,rdev:0,blksize:4096,ino:562949953486669,size:0,blocks:0,atimeMs:1582482965037.8445,mtimeMs:1581074249467.7114,ctimeMs:1582482964979.8303,birthtimeMs:1582306776288.1958,atime:2020-02-23T18:36:05.038Z,mtime:2020-02-07T11:17:29.468Z,ctime:2020-02-23T18:36:04.980Z,birthtime:2020-02-21T17:39:36.288Z } Path is file:false Path is directory:true2.12 追加文件内容 fs.appendFile(file, data[, options], callback) file可以是文件路径也可以是文件句柄。还可以是bufferdata要追加的内容。string或者buffer。options encoding编码默认是utf8mode默认是0o666 flag默认是a 注意如果file是文件句柄那么 开始追加数据前file需要已经打开。file需要手动关闭。 var fs require(fs); fs.appendFile(./extra/fileForAppend.txt, hello, utf8, function(err){if(err) throw err;console.log(append成功); });3.事件机制模块 events Node.js 有多个内置的事件我们可以通过引入events模块并通过实例化EventEmitter类来绑定和监听事件如下实例 // 引入 events 模块 var EventEmitter require(events); // 创建 eventEmitter 对象 var event new EventEmitter();以下程序绑定事件处理程序 // 绑定事件及事件的处理程序 eventEmitter.on(eventName, eventHandler);我们可以通过程序触发事件 // 触发事件 eventEmitter.emit(eventName);EventEmitter的每个事件由一个事件名和若干个参数组成事件名是一个字符串通常表达一定的语义。对于每个事件EventEmitter 支持 若干个事件监听器。 当事件触发时注册到这个事件的事件监听器被依次调用事件参数作为回调函数参数传递。 让我们以下面的例子解释这个过程 // 引入 events 模块 var EventEmitter require(events); // 创建 eventEmitter 对象 var event new EventEmitter(); event.on(someEvent, function(arg1, arg2) { console.log(listener1, arg1, arg2); }); event.on(someEvent, function(arg1, arg2) { console.log(listener2, arg1, arg2); }); event.emit(someEvent, arg1 参数, arg2 参数); 执行以上代码运行的结果如下 $ node event.js listener1 arg1 参数 arg2 参数 listener2 arg1 参数 arg2 参数以上例子中event为事件someEvent注册了两个事件监听器然后触发了 someEvent 事件。 运行结果中可以看到两个事件监听器回调函数被先后调用。 这就是EventEmitter最简单的用法。 EventEmitter提供了多个属性如on和 emit。on函数用于绑定事件函数emit属性用于触发一个事件

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云南省建设工程投标中心网站瑞安app开发

个人主页 : 个人主页 个人专栏 : 《数据结构》 《C语言》 文章目录 前言一、栈的实现思路1. 结构的定义2. 初始化栈(StackInit)3. 入栈(StackPush)4. 出栈(StackPop)5. 获取栈顶元素(StackTop)6. 检查栈是否为空(StackEmpty)7. 销毁栈(StackDestroy) 二、…

青岛品牌网站制作旅游网站总结

0.实现效果 效果不咋好 ,参数不好调整 1.算法原理 3D NDT(Normal Distributions Transform)算法是一种用于同时定位和地图生成(SLAM)的机器人导航算法,特别适用于三维点云数据的配准。以下是关于3D NDT算法的详细解释: 算法原理 点云划分与分布计算:3D NDT算法首先将…

凡科建站seo那个网站教人做冰点

原型&#xff1a;extern char *strstr(const char *str1, const char *str2); 需要包含的头文件&#xff1a;#include <string.h> 作用&#xff1a;用于判断字符串str2在字符串str1中第一次出现的位置。如果没有找到则返回NULL&#xff0c;找到了则返回str1中的位置。 …

seo网站推广经理公司主营业务网站建设

CheckiO 是面向初学者和高级程序员的编码游戏&#xff0c;使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务&#xff0c;从而提高你的编码技能&#xff0c;本博客主要记录自己用 Python 在闯关时的做题思路和实现代码&#xff0c;同时也学习学习其他大神写的代码。 Chec…

西安网站优化服务西安建设工程信息网新平台

2.2.2 if 案例实践 学习目标 这一节&#xff0c;我们从 服务管理、堡垒机登录、小结 三个方面来学习。 服务管理 案例需求 要求脚本执行需要有参数&#xff0c;通过传入参数来实现不同的功能。参数和功能详情如下&#xff1a;参数 执行效果start 服务启动中...sto…

西安网站设计外包公司瑞安网站建设电话

标准类型内建函数&#xff1a;cmp(obj1, obj2) 比较obj1和obj2&#xff0c;根据比较结果返回整型i:i < 0 if obj1 < obj2i > 0 if obj1 > obj2i 0 if obj1 obj2repr(obj)或obj 返回一个对象的字符串表示str(obj) 返回对象适合可读性好的字符串表示type(obj) 得到…

# vite + vue3 实现打包后 dist 文件夹可以直接打开 html 文件预览

vite + vue3 实现打包后 dist 文件夹可以直接打开 html 文件预览 问题 为什么突然写这么一篇文章,首先,自己用vite+vue写了点静态页面,需要给客户看页面效果,但是我打包之后将 dist 发送给客户后,客户没有通过ngi…

Python 在人工智能与机器学习中的地位与实践

一、引言 🤖 人工智能(AI)和机器学习(ML)是当下科技发展的核心动力。从语音识别到图像分类,从推荐系统到自然语言处理,AI 正在不断改变人类的生产和生活方式。而在这一浪潮中,Python 已成为最主要的开发语言。…

怎样做彩票投资网站国外刺绣图案设计网站

一、介绍 Portainer是Docker的图形化管理工具&#xff0c;提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作&#xff08;包括上传下载镜像&#xff0c;创建容器等操作&#xff09;、事件日志显示、容器控制台操作、Swarm集群和服务等集中管理和操作、登录用…

订阅号怎么做微网站无忧网站模板

teger 基本数据类型int 的包装类 Integer 类型的对象包含一个 int 类型的字段 一、类定义 public final class Integer extends Number implements Comparable<Integer>{}类被声明为final的,表示不能被继承;继承了Number抽象类,可以用于数字类型的一系列转换;实现了Comp…

做塑料的网站名字万户建站

使用 Redis 可以优化性能&#xff0c;但是存在 Redis 的数据和数据库同步的问题&#xff0c;这是我们需要关注的问题。假设两个业务逻辑都是在操作数据库的同一条记录&#xff0c;而 Redis 和数据库不一致。 Redis 和数据库不一致 在图中&#xff0c;T1 时刻以键 key1 保存数…

seo三人行网站百度安装app下载免费

螺旋式开发并不是敏捷开发。虽然它们都是软件开发过程中的一种模型或方法&#xff0c;但两者在核心理念、实施方式和适用场景上存在显著差异。 螺旋式开发是一种结合了瀑布式开发和迭代式开发的软件开发过程。它强调风险分析和质量保证&#xff0c;在每个螺旋周期中都包括需求…

深圳骏域网站建设专家有一个做场景动画的网站

出现这个问题不是一次两次了&#xff0c;就是启动后&#xff0c;键盘所有按键&#xff0c;小红帽都不能用&#xff0c;必须重启好几次才能用。 有时候键盘能用&#xff0c;但是打开 dw ,复制不能用&#xff0c;真是懊恼。 今天又出现这个情况&#xff0c;我偶然想到是不是和昨天…

网站搭建的费用上海网站建设 普送

来源&#xff1a;集智俱乐部作者&#xff1a;Guillem Collell、Jordi Fauquet译者:张澳审校&#xff1a;刘培源编辑&#xff1a;邓一雪导语信息和能量之间的关系已经在物理学、化学和生物学中得到了广泛的研究。然而&#xff0c;这种联系并没有在神经科学领域形式化。2015年&am…

手机网站自助建设成都网站设计师

初级代码游戏的专栏介绍与文章目录-CSDN博客 初用Mac会有很多不习惯&#xff0c;特别是鼠标滚轮的滚动方向和windows是反的&#xff0c;还好是通过设置改变的。下面是我自己的设置。 目录 一、显示器设置 二、屏保、时钟、触发角 三、程序坞与菜单栏 四、安全性与隐私 五…

网站怎么上传到空间有多个网页的大网站如何做

Ryujinx/Ryujinx Stars: 26.1k License: MIT Ryujinx 是用 C# 编写的实验性任天堂 Switch 模拟器。 该项目旨在提供出色的准确性和性能、用户友好的界面以及稳定的构建。它已经通过了大约 4050 个测试&#xff0c;其中超过 4000 个可以启动并进入游戏&#xff0c;其中大约 340…

做一个普通网站多少钱常熟网站建设专业的公司

随着建筑装修行业的快速发展&#xff0c;甲醛污染问题逐渐受到人们的关注。甲醛是一种常见的室内空气污染物&#xff0c;主要来源于建筑装修过程中使用的各种材料。为了保障人们的健康和安全&#xff0c;甲醛传感器在装修过程中的监测作用显得尤为重要。英国Alphasense公司推出…

网站建设流程 费用网站建设开发实训的目的

css实现鼠标悬停时元素的显示与隐藏 跟着B站黑马学习小兔鲜项目&#xff0c;有个点记录一下 就是当鼠标悬浮在商品列表上时&#xff0c;列表中的商品会显示出来&#xff0c;离开时&#xff0c;商品隐藏&#xff0c;如下&#xff1a; 感觉这个功能经常会遇到&#xff0c;但一直…

网站功能详细设计网站换服务器有影响吗

jenkins配置 安装Generic Webhook Trigger 配置远程触发令牌 勾选Print post content和Print contributed variables用于打印值 配置gitlab 选择新增webhook 配置webhook http://JENKINS_URL/generic-webhook-trigger/invoke,将JENKINS_URL修改成自己的jenkins地址 先保存…