前端面试准备——day07

1 get请求和post请求的区别

  • get请求一般是去获取数据,post一般用于提交数据
  • get请求参数放在url中,因此参数长度受限,post请求参数长度无限制且放在body中,要更安全
  • get请求刷新浏览器或回退时没有影响,post请求回退时会重新提交数据
  • get请求可被缓存,post请求不会被缓存
  • get请求保存在浏览器历史记录中,post请求不会保存在历史记录中
  • get请求只能进行url编码(application/x-www-form-urlencoded),post请求可以进行多种方式编码(application/x-www-form-urlencoded或multi/form-data)
  • get请求产生一个TCP数据包,POST请求产生两个TCP数据包
  • 对于get请求,浏览器会把http header和data一起发送出去,服务器响应200状态码;post请求会先发送header,服务器响应100 continue,浏览器再发送打他,服务器再响应200

2 动态路由匹配怎么实现

例如:有一个用户组件对所有用户进行渲染,但用户ID不同,可以在路径中使用一个动态字段来实现

const routes=[
	{
		path:'/user/:id',
		component:()=>import('./User/user')
	}
]

可以使用this.$route.param.id获取到id参数

路由参数变化?

当用户切换时,即路由参数发生变化,使用复用方法会更加高效。要对同一个组件中参数变化做出响应,可以使用watch$route对象上的任意属性,这里指的是$route.params

const User={
	template:'...',
	created(){
		this.$watch(
		()=>this.$route.params,(toParams,preParams)=>{	
			//对路由变化做出响应
		})	
	}
}

也可以使用beforeRouteUpdate导航守卫

3 使用vue-router

首先配置路径别名,在vue.config.js中配置

module.exports={
  configureWebpack:{
    resolve:{
      alias:{
        'assets':'@/assets',
        'components':'@/components',
        'router':'@/router',
      }
    }
  }
}

之后为路由使用进行单独配置

import Vue from 'vue'
import VueRouter from 'vue-router'

Vue.use(VueRouter)

const routes=[{
	path:'',
	redirect:'/home'
},{
	path:'/home'.
	component:()=>import('components/Home.vue')
	//嵌套路由
	children:[{
		path:'user'.
	component:()=>import('components/Home.vue')
	}]
}]

const router=new VueRouter({
	routes,
	mode:'history'
})

export default router

//最后将导出的router在main.js中引入使用即可生效

4 路由导航

(1)声明式:<router-link to='...'>
(2)编程式:router.push(...)
router.push的参数可以是路径字符串,也可以是描述地址的对象,他会返回一个promise对象

router.push('/user')

router.push({path:'/user'})

router.push({name:'user',params:{username:'xie'}})

router.push({path:'/user',query:{username:'zi'}})	//  /user?username=zi

//如果提供了path,那么params会被忽略

const name='xie'

router.push(`/user/${name}`)

router.push({path:`/user/${name}`})

router.push({name:'user',params:{username}})

替换当前位置router.place()
使用replace不会向history添加新记录

前进、后退

router.forward()

router.back()

router.go()

5 动态路由

动态路由主要由两个函数实现:router.addRoute()router.removeRoute()

查看现有路由:

  • router.hasRoute():检查路由是否存在
  • router.getRoutes():获取一个包含所有路由记录的数组
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
jQuery是一种流行的JavaScript库,它可以简化编写JavaScript代码的过程。在这里,我将向你介绍如何使用jQuery创建一个简单的日历插件。 首先,我们需要在HTML文件引入jQuery库和我们自己的脚本文件: ```html <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script src="calendar.js"></script> ``` 接下来,我们需要在HTML文件创建一个空的`<div>`元素,用于容纳我们的日历: ```html <div id="calendar"></div> ``` 现在,我们已经准备好开始编写JavaScript代码了。在我们的脚本文件,我们将定义一个名为`Calendar`的对象,该对象将具有以下属性和方法: ```javascript var Calendar = { // 初始化日历 init: function(selector) { // ... }, // 绘制日历 draw: function(year, month) { // ... }, // 获取指定月份的天数 getDaysInMonth: function(year, month) { // ... }, // 获取指定月份的第一天是星期几 getFirstDayOfWeek: function(year, month) { // ... } }; ``` 现在,我们来看看这个对象的实现细节。首先是初始化方法: ```javascript init: function(selector) { var now = new Date(); var year = now.getFullYear(); var month = now.getMonth() + 1; $(selector).data('year', year); $(selector).data('month', month); this.draw(year, month); } ``` 在这里,我们获取当前的年份和月份,然后将它们存储在`<div>`元素的数据属性。然后,我们调用`draw`方法来绘制日历。 接下来是绘制方法: ```javascript draw: function(year, month) { var daysInMonth = this.getDaysInMonth(year, month); var firstDayOfWeek = this.getFirstDayOfWeek(year, month); var html = '<table>'; html += '<tr><th>日</th><th>一</th><th>二</th><th>三</th><th>四</th><th>五</th><th>六</th></tr>'; var day = 1; for (var i = 0; i < 6; i++) { html += '<tr>'; for (var j = 0; j < 7; j++) { if (i === 0 && j < firstDayOfWeek) { html += '<td></td>'; } else if (day > daysInMonth) { html += '<td></td>'; } else { html += '<td>' + day + '</td>'; day++; } } html += '</tr>'; if (day > daysInMonth) { break; } } html += '</table>'; var selector = '#calendar'; $(selector).html(html); } ``` 在这里,我们首先获取指定月份的天数和该月份的第一天是星期几。然后,我们使用一个表格来绘制日历。我们遍历6行和7列,并根据当前日期填充单元格。如果日期超出了该月份的天数,我们就停止绘制。 最后,我们将HTML代码插入到`<div>`元素。 最后是获取指定月份的天数和第一天是星期几的方法: ```javascript getDaysInMonth: function(year, month) { return new Date(year, month, 0).getDate(); }, getFirstDayOfWeek: function(year, month) { return new Date(year, month - 1, 1).getDay(); } ``` 这些方法分别使用JavaScript的`Date`对象来计算指定月份的天数和第一天是星期几。 现在,我们已经完成了一个简单的日历插件的开发。你可以在HTML文件使用以下代码来初始化日历: ```javascript $(document).ready(function() { Calendar.init('#calendar'); }); ``` 当然,你还可以根据自己的需要对插件进行扩展和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值