广告
广告
广告
安装npm i koa-static一般建议创建一个目录专门保存静态文件,比如目录名:staticstatic一般放在最末尾use激活,表示如果前面的路由设置,或其他的都没有对应的,就进入的请求文件这。const Koa = require("koa"); const static = require("koa-static"); const server = new Koa(); server.listen(8080); server.use(require("./router")); server.use(stat...
参数koa-router的参数和vue中的router参数一下,一个分号带一个变量名router.get("/news/:id",async ctx=>{ });那么我们要进入这个路径,是一定要带上id的,不然就进不去:loaclhost:8080/news/1231这个id可以是任何值,数字,英文,中文参数也可以多个,这样你访问这个路径也要带上这么多的参数router.get("/news/:id/:a/:eee",async ctx=>{ });路径:localhost:8080/asda/ada/dada如何获取这些参数呢?c...
一定要是使用正统的插件:koa-router,npm官方库有很多擦边球插件,一字之差,所以需要注意了。路由方法路由方法HTTP方法含义.get()GET数组在url中,非特殊约定,一般为urlencoding.post()POST数据在body中.put()PUT数据在body中,一般用于文件上传.patch()PATCH数据在body中,一般用于数据更新.del/delete()DELETE数据在url中,一般用于删除.all() 处理所有的method请求.use() 挂在中间件注意,form表单元素只能提交get和post请求,其他类型的请求需要使用ajax这种方式。其实get和p...
属性获取属性说明可能的值method请求方法GETurl完整请求路径/xxx/xxx/api?xxx=xxxpath路径部分/xxx/xxxqueryget参数{type:‘a’,p:12}querystringget参数字符串?type=a&p=12host域名+端口localhost:8080hostname域名localhostprotocol协议httpsecure是否安全协议falseip访客ip地址xx.xx.xx.xxorigin域:协议+域名+端口http://localhost:8080其中我们可以通过ip属性写一个后台返回ip信息的apiip信息api由于我们要使用第...
res和req对象ctx有四个这个对象,分别对应原生的对象和koa自己的对象,不过相对来说,都用的很少,因为koa对ctx对象内置很多属性就是req和res对象的属性,简化了调用。ctx.req //原生的request对象 ctx.res //原生的response对象 ctx.request //koa自己的request对象 ctx.response //koa自己的response对象其中我们之前使用的ctx.body其实就等于ctx.response.body抛出异常对于错误的处理,我们之前的方式是先设置ctx的status,再设置body,相对来说很麻烦。...
用于处理不同的地址,执行不同的函数或调用不同的模块安装npm i koa-router基本使用const Koa = require("koa"); const Router = require("koa-router"); const server = new Koa(); server.listen(8080); //创建路由 const router = new Router(); router.get("/", async ctx => { ctx.body = "get请求"; ...
koa框架9 框架了解版本koa有三个大版本,1.0、2.0、3.0;其中1.0已经过气了,3.0还未发布,2.0处于一个过渡,他即可以兼容1.0也能兼容2.0,比如1.0的generator,3.0的async。所以2.0用async就行了,即便升级3.0也不会有问题。基本配置安装:npm i koaconst Koa = require("koa"); const server = new Koa(); server.listen(8080); server.use(async ctx => { ctx.body = "您好"...
cookie 身份认证cookie的起源本身就是因为http是一种单向性的传输,服务器和浏览器之间没有联系用的东西,如服务器无法辨别正在浏览的是谁,他有vip吗?所以就想出在浏览器存一个简短的数据,每次浏览器会将这个数据发送给服务器,服务器通过这个判断这个人是谁。但是现在来说,这种方式存在了一些问题:cookie容量很小,不能超过32kb,但实际上都不能完全达到32kb,因为cookie是放在http信息的header上的,而header最大也只有32kb,他除了cookie还要存放其他信息。安全性,存放在浏览器的数据都不安全,客户端可以直接查看,修改,伪造cookie一般是由服务器s...
http协议HTTP1.0 (RFC-1945) 每次发起一个连接,完成后断开连接,然后因为这样太费资源,又出了1.1,也就是现在常用的httpHTTP1.1 (RFC-2616) 支持持久连接HTTPS (RFC-2818) 安全,加密传输HTTP2.0 (RFC-7540) 加密,头部压缩,服务端推送,请求管线,多路复用http消息结构由两部分组成,一个header头部,一个body内容。header <= 32kbbody <= 1g大小上有限制,2.0的话,容量应该会升级。http状态码1xxx 消息(知道就行,不需要处理)2xxx 成功3xxx 重定向4x...
node_modules之前说了,node模块的引入,如果当前目录有一个node_modules文件夹,将模块丢入这个目录下,引入这个模块是不需要加上路径的。那么node他的读取等级是怎样的呢?如引入的模块只有名字:$HOME/.node_modules./node_modules$HOME就是全局的模块,如果是windows,他一般在c盘 ---- 用户 ---- 当前你所使用的用户目录下 ---- node_modules如果引入的模块带路径:直接根据路径去找package.json他是一个node.js的工程文件,里面有一些项目的基本信息,一些快捷脚本,主要是用来存放依赖的,也就是...
node模块有三个语法:exportsmodulerequirerequire其中require就是一个引入模块的方法,他有两个路径写法,如果你引入的是系统模块,那么直接写模块名,不需要加路径,如果你引入一个自己的模块,需要加上当前路径,或者你自己的模块丢在当前目录的node_modules目录下,你也可以省略路径。require("http"); require("./my_http"); require("my_http");node的模块都是js文件,所以我们可以省略这个后缀名不写还有一种省略就是省略引入的js文件,n...
koa框架2 基础入门之generator、yieldgenerator可以理解为一个可以分段执行内部代码的函数,通过yield分隔,yield接一个promise异步,这个异步完成,才能执行下一个代码片段。(异步的请求同步的写法)就好像是将一个异步的操作,转为同步了,但是,不是很方便,因为每一个片段运行结束后,需要执行next()才能进行下一个片段。创建generator和普通函数差不多,不过,他需要在函数名的前面加一个*星号,这个星号可以和function字母挨在一起,也可以和函数名挨在一起,但是,function和名字必须要有空格,不管星号挨谁。function* name() {...
增删改查删 DELETE删除没有删除某一个列(字段的)概念,删除就是删除一行,通过WHERE条件语句进行查找筛选DELETE FROM 表名 WHERE 条件增 INSERTINSERT INTO 表名 (字段列表) VALUES(值列表)改 UPDATEUPDATE 表名 SET 字段=值,字段=值,字段=值...改在不使用WHERE的时候,操作的是整个表,而不是表中的某一行UPDATE 表名 SET 字段=值,字段=值,字段=值... WHERE 条件查 SELECTSELECT * FROM 表名这样表示获取整个表的数据SELECT * FROM 表名 WHERE 条件子句WHER...
官方并没有对多级菜单做适配,这就导致我们的二级菜单点击后,真个菜单就消失了。这就很头疼了,作为一个偏老派的人,还是很喜欢横向菜单的,但是横向就免不了使用多级菜单。之前我推荐过一个插件可以解决这个问题,但是插件的方法总是有点嫌麻烦,特别是在已经有很多js文件的引用下,所以我研究了下怎么用js搞定。效果图[hide]hide.bs.dropdown官方说,所有的bs这种事件都是作用在最上级的dropdown元素,也就是最开始那个class为dropdown的元素,这个一般可以看做为菜单根元素。这就产生一个问题,事件是自定义的,event也是不正统的,所以我们没办法通过这个事件的event对象...
最近想给博客主题增加一个一键复制代码的功能,结果发现highlight.js并不支持一键复制,这就非常的可惜啊。于是百度了下,找到一个不错的例子,根据其例子我自己写了一个通用的方式。效果图安装[hide]需要使用clipboard.js,所以需要js引入这个复制用的库<script type="text/javascript" src="https://cdn.staticfile.org/clipboard.js/2.0.6/clipboard.min.js"></script>引入完毕后我们需要给每个代码块增加一个复制按...
安装mysql 5.7先安装mysql 5.7使用navicat for mysql软件可视化操作,连接数据库创建数据库,字符集utf-8,排序规则utf8_general_ci新建表 其中一行为一条信息,每一列称为一个字段,和excel表格差不多的理解新建一个字段 ID 类型int(整数) 不是null勾选,设置为主键,勾选自动递增主键的搜索效率最高新建 username字段,类型varchar(字符) 不是null勾选 长度设置为32新建 password字段,类型varchar(字符) 不是null勾选 长度设置为32然后保存表,表名为user_table,保存完毕后双击打开这...
安装npm i jade ejs express express-static body-parser cookie-parser cookie-session基本const express = require("express"); const expressStatic = require("express-static"); const cookieParser = require("cookie-parser") const cookieSession = require("cookie-session&quo...
最近评论