diff --git "a/\346\230\223\346\226\207\350\220\215\347\232\204\344\275\234\344\270\232/2022-03-15-\344\275\234\344\270\232/url\345\212\250\346\200\201\350\265\204\346\272\220.js" "b/\346\230\223\346\226\207\350\220\215\347\232\204\344\275\234\344\270\232/2022-03-15-\344\275\234\344\270\232/url\345\212\250\346\200\201\350\265\204\346\272\220.js" new file mode 100644 index 0000000000000000000000000000000000000000..f9964e859d9cb3e1c1b95ec9886f310a586a3e56 --- /dev/null +++ "b/\346\230\223\346\226\207\350\220\215\347\232\204\344\275\234\344\270\232/2022-03-15-\344\275\234\344\270\232/url\345\212\250\346\200\201\350\265\204\346\272\220.js" @@ -0,0 +1,58 @@ +let http = require('http'); +let fs = require('fs'); +let server = http.createServer(); +server.listen(8080); +server.on('request',function (req,res) { + let url = req.url; + console.log(url); + //在web服务器,尽量使用异步函数 + //web服务器给用户、管理员使用的 + //node 是单线程的 + if (url.lastIndexOf('.'>-1)) { + console.log(url); + let path = '.'+url; + readFileByPromise(path, res); + }else { + + res.setHeader("Content-type","text/html;charset=utf8"); + //去除query,使用split 以 demo?a=index&c=index 为例 + let queryString = url.split("?")[1]; + let queryArr = queryString.split("&"); + let keyVals = []; + for (let key in queryArr) { + let vals = queryArr[key]; + let temArray = vals.split("="); + keyVals[temArray[0]] = temArray[1]; + } + //给 req 对象添加一个 query + req.query = keyVals; + let controllerPath = './home/controller/' + keyVals['c']; + //通过url可动态的调用多个controller、model + let controller = require(controllerPath); + //console.log(keyVals['a']); + //keyVals['a'] 变量,所以在json 里面,,因为key必须是个常量所以用 .方式去调用它的key + let show = keyVals['a']; + console.log(controller[show](req,res));//json 访问,如果key是变量要在[] + } +}); + +let promise = function (filename) { + return new Promise(function (resolve, reject) { + fs.exists(filename, function (result) { + if (!result) { + filename = './home/imgs/404.png'; + } + fs.readFile(filename, function (err, data) { + resolve(data); + }) + }) + }) +}; + +async function readFileByPromise(fileName, res) { + let data = await promise(fileName); + if (data) { + res.write(data); + } + res.end(); +} \ No newline at end of file diff --git "a/\346\230\223\346\226\207\350\220\215\347\232\204\344\275\234\344\270\232/2022-03-15-\344\275\234\344\270\232/url\345\212\250\346\200\201\350\265\204\346\272\220\347\254\224\350\256\260.txt" "b/\346\230\223\346\226\207\350\220\215\347\232\204\344\275\234\344\270\232/2022-03-15-\344\275\234\344\270\232/url\345\212\250\346\200\201\350\265\204\346\272\220\347\254\224\350\256\260.txt" new file mode 100644 index 0000000000000000000000000000000000000000..9f4676039f14aa2470c5e1b1b1983e07d83d593d --- /dev/null +++ "b/\346\230\223\346\226\207\350\220\215\347\232\204\344\275\234\344\270\232/2022-03-15-\344\275\234\344\270\232/url\345\212\250\346\200\201\350\265\204\346\272\220\347\254\224\350\256\260.txt" @@ -0,0 +1,27 @@ +静态资源和动态资源的概念: + +1>静态资源:前端的固定页面,这里面包含HTML、CSS、JS、图片等等,不需要查数据库也不需要程序处理,直接就能够显示的页面。 +具体形式为:客户端发送请求到web服务器--->web服务器拿到对应的文件--->返回给客户端--->客户端解析并渲染出来。 + +2>动态资源:需要程序处理或者从数据库中读数据,能根据不同的条件在页面显示不同的数据,优点是内容更新不需要修改页面,缺点是访问速度不及静态页面。 +具体形式为:客户端请求的动态资源---->把请求存储到web上--->web存储点连接数据库(mysql)--->数据库处理数据之后--->将数据交给web服务器--->web服务器返回给客户端解析渲染处理。 + +区别: + +1、静态资源一般都是设计好的html页面,而动态资源依靠设计好的程序来实现按照需求的动态响应或者从数据库中读数据; + +2、静态资源的交互性差,不好更改,而动态资源可以根据需求获取内容; + +3、在服务器的运行状态不同,静态资源不需要与数据库参于程序处理,动态资源需要一个或多个数据库的参与运算。 + +url:是万维网的统一资源定位标志,指的是网络地址 + +URL由三部分组成:资源类型、存放资源的主机域名、资源文件名。 +也可认为由4部分组成:协议、主机、端口、路径。 +URL的一般语法格式为:protocol :// hostname[:port] / path / [;parameters][?query]#fragment +例如:url: http://localhost:8080/demo.html?a=index&c=index +1.?a=index&c=index a 表示 action ,c 表示 controller +2.uri:demo.html?a=index&c=index +3.path:demo.html (这个path 也是开发者自己定义的,这种格式没限定 demo.html(写成 .html 为了seo)也可以写 demo 也可以 demo.htm) + 也可以写 demo 也可以 demo.htm) +4.query: a=index&c=index (为服务端传递参数用的,查找数据用的) \ No newline at end of file diff --git "a/\346\230\223\346\226\207\350\220\215\347\232\204\344\275\234\344\270\232/2022-03-16-\344\275\234\344\270\232/IndexController.js" "b/\346\230\223\346\226\207\350\220\215\347\232\204\344\275\234\344\270\232/2022-03-16-\344\275\234\344\270\232/IndexController.js" new file mode 100644 index 0000000000000000000000000000000000000000..cc61951160c0d27824b8f3fcee3adcd567f2d69d --- /dev/null +++ "b/\346\230\223\346\226\207\350\220\215\347\232\204\344\275\234\344\270\232/2022-03-16-\344\275\234\344\270\232/IndexController.js" @@ -0,0 +1,21 @@ +class IndexController{ + constructor(name){ // constructor构造器 + this.nishuijiang =name; //this.nishuijiang:属性,this:就理解为是变量,内容随便 +} + diji(){ + console.log("盖地基"); + }; + + zhuzi(){ + console.log("盖柱子"); + }; + + qizhuang(){ + console.log("砌砖"); + }; + + quchunishuijiang(){ + console.log(this.nishuijiang); + + }; +} \ No newline at end of file diff --git "a/\346\230\223\346\226\207\350\220\215\347\232\204\344\275\234\344\270\232/2022-03-16-\344\275\234\344\270\232/\350\207\252\350\277\260.txt" "b/\346\230\223\346\226\207\350\220\215\347\232\204\344\275\234\344\270\232/2022-03-16-\344\275\234\344\270\232/\350\207\252\350\277\260.txt" new file mode 100644 index 0000000000000000000000000000000000000000..b04566fe24d9724819963f416e399a060aef2b7f --- /dev/null +++ "b/\346\230\223\346\226\207\350\220\215\347\232\204\344\275\234\344\270\232/2022-03-16-\344\275\234\344\270\232/\350\207\252\350\277\260.txt" @@ -0,0 +1,2 @@ +关于我不会做作业但还是要交点作业这回事: +so:只能从网上搜集一些相关的知识点作为笔记补充(os:node太难了吧) \ No newline at end of file