diff --git "a/\351\231\210\344\277\212\350\261\252/\344\275\234\344\270\232/20240304\345\210\233\345\273\272http\346\234\215\345\212\241.js" "b/\351\231\210\344\277\212\350\261\252/\344\275\234\344\270\232/20240304\345\210\233\345\273\272http\346\234\215\345\212\241.js" new file mode 100644 index 0000000000000000000000000000000000000000..84a360098ae6b9d64bf21e7d1dd4e6da161aa1c7 --- /dev/null +++ "b/\351\231\210\344\277\212\350\261\252/\344\275\234\344\270\232/20240304\345\210\233\345\273\272http\346\234\215\345\212\241.js" @@ -0,0 +1,10 @@ +let http = require("http") + +let a = http.createServer((req,res)=>{ + res.setHeader("content-type","text/html;charset=utf8") + res.end("芜湖起飞") +}) + +a.listen(9000,()=>{ + console.log("原神启动成功"); +}) \ No newline at end of file diff --git "a/\351\231\210\344\277\212\350\261\252/\344\275\234\344\270\232/20240304\350\257\273\345\217\226\346\226\207\344\273\266.js" "b/\351\231\210\344\277\212\350\261\252/\344\275\234\344\270\232/20240304\350\257\273\345\217\226\346\226\207\344\273\266.js" new file mode 100644 index 0000000000000000000000000000000000000000..8c8323a7255c8ab89e9e25bb62a76dfb43aeebee --- /dev/null +++ "b/\351\231\210\344\277\212\350\261\252/\344\275\234\344\270\232/20240304\350\257\273\345\217\226\346\226\207\344\273\266.js" @@ -0,0 +1,27 @@ +const { log } = require("console") +let fs = require("fs") +const path = require("path") + // 读取所有的内容 + function listArr(filepath){ + let arr= [] + let a = fs.readdirSync(filepath) + // 将所有内容插入到结果数组 + arr=arr.concat(a) + + // 遍历所有内容,检查是否有目录,如果有,则继续调用listArr函数,将函数执行的结果合并到结果数组中 + arr.forEach(item => { + let b = path.resolve(filepath,item) + console.log(b); + let c= fs.statSync(b).isDirectory() + if(c){ + let newarr = listArr(b) + arr= arr.concat(newarr) + } + + }); + return arr + } + let d =listArr("./") + console.log(d); + + \ No newline at end of file diff --git "a/\351\231\210\344\277\212\350\261\252/\344\275\234\344\270\232/20240305-http\350\257\273\345\217\226index.js" "b/\351\231\210\344\277\212\350\261\252/\344\275\234\344\270\232/20240305-http\350\257\273\345\217\226index.js" new file mode 100644 index 0000000000000000000000000000000000000000..b79969bdd110b9b6476867a4142f8e3104f3412b --- /dev/null +++ "b/\351\231\210\344\277\212\350\261\252/\344\275\234\344\270\232/20240305-http\350\257\273\345\217\226index.js" @@ -0,0 +1,22 @@ +let http = require("http") +let fs = require("fs") + +let server = http.createServer((req,res)=>{ + res.setHeader("content-type","text/html;charset=utf8") + let url = req.url + if(url ==="/"||url==="/index.html"){ + res.end(fs.readFileSync("./kun/index.html")) + } + else if(url==="/ye.html"){ + res.end(fs.readFileSync("./dakun/ye.html")) + } + else{ + res.end("404 Not Found") + } + +}) +server.listen(8080,()=>{ + console.log("http://127.0.0.1:8080"); +}) + + diff --git "a/\351\231\210\344\277\212\350\261\252/\344\275\234\344\270\232/20240308-\347\224\250\351\200\222\345\275\222\346\235\245\346\237\245\346\211\276\346\226\207\344\273\266.js" "b/\351\231\210\344\277\212\350\261\252/\344\275\234\344\270\232/20240308-\347\224\250\351\200\222\345\275\222\346\235\245\346\237\245\346\211\276\346\226\207\344\273\266.js" new file mode 100644 index 0000000000000000000000000000000000000000..072b72cecb2b68f5b3d14424cc2e607255d92cae --- /dev/null +++ "b/\351\231\210\344\277\212\350\261\252/\344\275\234\344\270\232/20240308-\347\224\250\351\200\222\345\275\222\346\235\245\346\237\245\346\211\276\346\226\207\344\273\266.js" @@ -0,0 +1,40 @@ +let fs = require("fs") +let http = require("http") +let path = require("path") +function fn(pathfile) { + let data='很遗憾' + let d = path.join(__dirname, pathfile, "/index.html") + let ccc = fs.existsSync(d) + if(ccc){ + data = fs.readFileSync(d,"utf8") + } + else{ + let arr = fs.readdirSync(pathfile) + for(let item=0 ;item { + res.setHeader("content-type","text/html;charset=utf8") + res.end(m) +}) +server.listen(8080, () => { + console.log("http://127.0.0.1:8080"); +}) \ No newline at end of file diff --git "a/\351\231\210\344\277\212\350\261\252Nodejs\347\254\224\350\256\260/0229nodejs\345\256\211\350\243\205\344\270\216\345\210\235\345\247\213\345\214\226\347\250\213\345\272\217.md" "b/\351\231\210\344\277\212\350\261\252/\347\254\224\350\256\260/0229nodejs\345\256\211\350\243\205\344\270\216\345\210\235\345\247\213\345\214\226\347\250\213\345\272\217.md" similarity index 100% rename from "\351\231\210\344\277\212\350\261\252Nodejs\347\254\224\350\256\260/0229nodejs\345\256\211\350\243\205\344\270\216\345\210\235\345\247\213\345\214\226\347\250\213\345\272\217.md" rename to "\351\231\210\344\277\212\350\261\252/\347\254\224\350\256\260/0229nodejs\345\256\211\350\243\205\344\270\216\345\210\235\345\247\213\345\214\226\347\250\213\345\272\217.md" diff --git "a/\351\231\210\344\277\212\350\261\252Nodejs\347\254\224\350\256\260/0301\346\250\241\345\235\227.md" "b/\351\231\210\344\277\212\350\261\252/\347\254\224\350\256\260/0301\346\250\241\345\235\227.md" similarity index 100% rename from "\351\231\210\344\277\212\350\261\252Nodejs\347\254\224\350\256\260/0301\346\250\241\345\235\227.md" rename to "\351\231\210\344\277\212\350\261\252/\347\254\224\350\256\260/0301\346\250\241\345\235\227.md" diff --git "a/\351\231\210\344\277\212\350\261\252Nodejs\347\254\224\350\256\260/20240302-fs\345\206\205\347\275\256\346\250\241\345\235\227-import~from\346\232\264\351\234\262\346\226\271\345\274\217.md" "b/\351\231\210\344\277\212\350\261\252/\347\254\224\350\256\260/20240302-fs\345\206\205\347\275\256\346\250\241\345\235\227-import~from\346\232\264\351\234\262\346\226\271\345\274\217.md" similarity index 100% rename from "\351\231\210\344\277\212\350\261\252Nodejs\347\254\224\350\256\260/20240302-fs\345\206\205\347\275\256\346\250\241\345\235\227-import~from\346\232\264\351\234\262\346\226\271\345\274\217.md" rename to "\351\231\210\344\277\212\350\261\252/\347\254\224\350\256\260/20240302-fs\345\206\205\347\275\256\346\250\241\345\235\227-import~from\346\232\264\351\234\262\346\226\271\345\274\217.md" diff --git "a/\351\231\210\344\277\212\350\261\252Nodejs\347\254\224\350\256\260/20240303\350\257\273\345\217\226\346\226\207\344\273\266\345\244\271.md" "b/\351\231\210\344\277\212\350\261\252/\347\254\224\350\256\260/20240303\350\257\273\345\217\226\346\226\207\344\273\266\345\244\271.md" similarity index 100% rename from "\351\231\210\344\277\212\350\261\252Nodejs\347\254\224\350\256\260/20240303\350\257\273\345\217\226\346\226\207\344\273\266\345\244\271.md" rename to "\351\231\210\344\277\212\350\261\252/\347\254\224\350\256\260/20240303\350\257\273\345\217\226\346\226\207\344\273\266\345\244\271.md" diff --git "a/\351\231\210\344\277\212\350\261\252/\347\254\224\350\256\260/20240304-http\346\250\241\345\235\227.md" "b/\351\231\210\344\277\212\350\261\252/\347\254\224\350\256\260/20240304-http\346\250\241\345\235\227.md" new file mode 100644 index 0000000000000000000000000000000000000000..33bcd53ac14a2081569e8ecfa17c29d6915c4dec --- /dev/null +++ "b/\351\231\210\344\277\212\350\261\252/\347\254\224\350\256\260/20240304-http\346\250\241\345\235\227.md" @@ -0,0 +1,36 @@ +# http模块 +## 什么是http模块 +* http模块是Node.js官方提供的、用来创建 web 服务器的模块。通过 http 模块提供的 http.createServer() 方法,就能方便的把一台普通的电脑,变成一台 Web 服务器,从而对外提供 Web 资源服务。 +## http模块的作用 +* 在 Node.js 中,我们不需要使用 IIS、Apache 等这些第三方 web 服务器软件基于,Node.js 提供的http 模块,通过几行简单的代码,就能轻松的手写一个服务器软件,从而对外提供 web 服务 + +## 服务器的相关知识 +### ip地址 +* id地址是互联网每台计算机唯一的地址 +* 只有在知道对方的ip地址才能与对面数据通信 +## 域名 +* 域名是为了方便记忆发明的字符型地址与IP地址相对的 +* 在开发期间127.0.0.1对应域名localhost +## 端口号 +* 每个http协议都对应一个唯一端口号,客户端发送过来的 +网络请求,通过端口号,可以被准确地交给对应的 web 服务进行处理。 +## 网址的组成 +* 网址由 协议-域名-端口号-查询数据组成 + +## 创建一个web服务器 +* 创建步骤 +``` +1.导入http模块 +let http = require("http") +2. 创建web实例 +let server = http.createServer(req,res){ +3.响应对象 + req.end("xxx") +} +4.启动服务器 +server.listen(端口号)=>{ ----listen()调试服务器实例方法 + console.log("") +} +``` +## 解决中文乱码 +res.setHeater(Content-Type,"text/html;charset=uft8") \ No newline at end of file diff --git "a/\351\231\210\344\277\212\350\261\252/\347\254\224\350\256\260/20240305-http\346\234\215\345\212\241\345\231\250\346\220\255\345\273\272\350\256\277\351\227\256\346\234\254\346\234\272\350\267\257\345\276\204.md" "b/\351\231\210\344\277\212\350\261\252/\347\254\224\350\256\260/20240305-http\346\234\215\345\212\241\345\231\250\346\220\255\345\273\272\350\256\277\351\227\256\346\234\254\346\234\272\350\267\257\345\276\204.md" new file mode 100644 index 0000000000000000000000000000000000000000..e411e9a05a2a8619dd492b5135813a426c1dc1e1 --- /dev/null +++ "b/\351\231\210\344\277\212\350\261\252/\347\254\224\350\256\260/20240305-http\346\234\215\345\212\241\345\231\250\346\220\255\345\273\272\350\256\277\351\227\256\346\234\254\346\234\272\350\267\257\345\276\204.md" @@ -0,0 +1,27 @@ +# 创建http服务 +1. 导入http模块---创建服务对象create创建server服务(服务中有两个参数request/response)--设置响应头信息--监听端口 +* request :请求的意思, 是对请求报文的封装对象, 通过 request 对象可以获得请求报文的数据 + - 常用的请求报文的数据有url:请求路径/method:请求方法 +* respons:响应的意思,是对响应报文的封装对象, 通过 response 对象可以设置响应报文 + +``` +例子: +// 导入模块 +let http = require("http") +创建服务对象 +let server = http.createServer((req,res)=>{ + //设置响应头信息 + let url = req.url + if(url==="/"(/为默认)||url==="需要跳转的路径"){ + res.end("页面显示内容") + } + else{ + ....内容一样 + } + +}) +//监听端口 +server.listen(端口号,()=>{ + console.log("xxx") +}) +``` \ No newline at end of file diff --git "a/\351\231\210\344\277\212\350\261\252/\347\254\224\350\256\260/20240307-nodemon\345\267\245\345\205\267\345\214\205.md" "b/\351\231\210\344\277\212\350\261\252/\347\254\224\350\256\260/20240307-nodemon\345\267\245\345\205\267\345\214\205.md" new file mode 100644 index 0000000000000000000000000000000000000000..5491d66e2d4c7279d4a1c4875a0d87fdcdf73538 --- /dev/null +++ "b/\351\231\210\344\277\212\350\261\252/\347\254\224\350\256\260/20240307-nodemon\345\267\245\345\205\267\345\214\205.md" @@ -0,0 +1,7 @@ +# nodemon + * node是一个 Node.js 应用的实时监视工具。它可以监视你的代码,如果发现有任何更改,它会自动重启你的应用程序,以便您不必手动重新启动它。这对于开发人员来说是非常方便的,因为它可以大大缩短重启应用程序的时间。 +## 安装nodemon +* 全局安装:npm i -g nodemon +* 本地安装:npm i -D nodemon +## 运行报错 +* 系统静止脚本运行,说明powershell管理没有设置权限,搜索powershell窗口,以管理员运行,输入指令set-ExecutionPolicy RemoteSigned 回车 diff --git "a/\351\231\210\344\277\212\350\261\252/\347\254\224\350\256\260/20240308-koa.md" "b/\351\231\210\344\277\212\350\261\252/\347\254\224\350\256\260/20240308-koa.md" new file mode 100644 index 0000000000000000000000000000000000000000..4888e8a2d1a41f3b1fb05a7609170aee1a1976d2 --- /dev/null +++ "b/\351\231\210\344\277\212\350\261\252/\347\254\224\350\256\260/20240308-koa.md" @@ -0,0 +1,91 @@ +## Web开发 +最早的软件都是运行在大型机上的,软件使用者通过“哑终端”登陆到大型机上去运行软件。后来随着PC机的兴起,软件开始主要运行在桌面上,而数据库这样的软件运行在服务器端,这种Client/Server模式简称CS架构。 + +随着互联网的兴起,人们发现,CS架构不适合Web,最大的原因是Web应用程序的修改和升级非常迅速,而CS架构需要每个客户端逐个升级桌面App,因此,Browser/Server模式开始流行,简称BS架构。 + +在BS架构下,客户端只需要浏览器,应用程序的逻辑和数据都存储在服务器端。浏览器只需要请求服务器,获取Web页面,并把Web页面展示给用户即可。 + +当然,Web页面也具有极强的交互性。由于Web页面是用HTML编写的,而HTML具备超强的表现力,并且,服务器端升级后,客户端无需任何部署就可以使用到新的版本,因此,BS架构迅速流行起来。 + +今天,除了重量级的软件如Office,Photoshop等,大部分软件都以Web形式提供。比如,新浪提供的新闻、博客、微博等服务,均是Web应用。 + +Web应用开发可以说是目前软件开发中最重要的部分。Web开发也经历了好几个阶段: + +静态Web页面:由文本编辑器直接编辑并生成静态的HTML页面,如果要修改Web页面的内容,就需要再次编辑HTML源文件,早期的互联网Web页面就是静态的; + +CGI:由于静态Web页面无法与用户交互,比如用户填写了一个注册表单,静态Web页面就无法处理。要处理用户发送的动态数据,出现了Common Gateway Interface,简称CGI,用C/C++编写。 + +ASP/JSP/PHP:由于Web应用特点是修改频繁,用C/C++这样的低级语言非常不适合Web开发,而脚本语言由于开发效率高,与HTML结合紧密,因此,迅速取代了CGI模式。ASP是微软推出的用VBScript脚本编程的Web开发技术,而JSP用Java来编写脚本,PHP本身则是开源的脚本语言。 + +MVC:为了解决直接用脚本语言嵌入HTML导致的可维护性差的问题,Web应用也引入了Model-View-Controller的模式,来简化Web开发。ASP发展为ASP.Net,JSP和PHP也有一大堆MVC框架。 + +目前,Web开发技术仍在快速发展中,异步开发、新的MVVM前端技术层出不穷。vue react angual2 + +由于Node.js把JavaScript引入了服务器端,因此,原来必须使用PHP/Java/C#/Python/Ruby等其他语言来开发服务器端程序,现在可以使用Node.js开发了! + +用Node.js开发Web服务器端,有几个显著的优势: + +一是后端语言也是JavaScript,以前掌握了前端JavaScript的开发人员,现在可以同时编写后端代码; + +二是前后端统一使用JavaScript,就没有切换语言的障碍了; + +三是速度快,非常快!这得益于Node.js天生是异步的。 + +在Node.js诞生后的短短几年里,出现了无数种Web框架、ORM框架、模版引擎、测试框架、自动化构建工具,数量之多,即使是JavaScript老司机,也不免眼花缭乱。 + +常见的Web框架包括:Express,Sails.js,koa,Meteor,DerbyJS,Total.js,restify…… + +ORM框架比Web框架要少一些:Sequelize,ORM2,Bookshelf.js,Objection.js…… + +模版引擎PK:Jade,EJS,Swig,Nunjucks,doT.js…… + +测试框架包括:Mocha,Expresso,Unit.js,Karma…… + +构建工具有:Grunt,Gulp,Webpack…… + +目前,在npm上已发布的开源Node.js模块数量超过了30万个。 + +## koa框架 +## koa +koa是Express的下一代基于Node.js的web框架,目前有1.x和2.0两个版本。 + +## 历史 +Express +Express是第一代最流行的web框架,它对Node.js的http进行了封装,用起来如下: +``` +var express = require('express'); +var app = express(); + +app.get('/', function (req, res) { + res.send('Hello World!'); +}); + +app.listen(3000, function () { + console.log('Example app listening on port 3000!'); +}); + + +``` + +## promise的构造函数 + +Promise 构造函数是 JavaScript 中用于创建 Promise 对象的内置构造函数。 + +Promise 构造函数接受一个函数作为参数,该函数是同步的并且会被立即执行,所以我们称之为起始函数。起始函数包含两个参数 resolve 和 reject,分别表示 Promise 成功和失败的状态。 + +起始函数执行成功时,它应该调用 resolve 函数并传递成功的结果。当起始函数执行失败时,它应该调用 reject 函数并传递失败的原因。 + +Promise 构造函数返回一个 Promise 对象,该对象具有以下几个方法: + +then:用于处理 Promise 成功状态的回调函数。 +catch:用于处理 Promise 失败状态的回调函数。 +finally:无论 Promise 是成功还是失败,都会执行的回调函数。 +下面是一个使用 Promise 构造函数创建 Promise 对象的例子: + +在上面的例子中,我们使用 Promise 构造函数创建了一个 Promise 对象,并使用 setTimeout 模拟了一个异步操作。如果异步操作成功,则调用 resolve 函数并传递成功的结果;如果异步操作失败,则调用 reject 函数并传递失败的原因。然后我们使用 then 方法处理 Promise 成功状态的回调函数,使用 catch 方法处理 Promise 失败状态的回调函数。 + +这段程序会直接输出 error 或 success。 + +resolve 和 reject 都是函数,其中调用 resolve 代表一切正常,reject 是出现异常时所调用 + +Promise 类有 .then() .catch() 和 .finally() 三个方法,这三个方法的参数都是一个函数,.then() 可以将参数中的函数添加到当前 Promise 的正常执行序列,.catch() 则是设定 Promise 的异常处理序列,.finally() 是在 Promise 执行的最后一定会执行的序列。 \ No newline at end of file